From 715c0d98c583d6e14b3a5f174a0dfd02a514fc2b Mon Sep 17 00:00:00 2001 From: Stefan Koelle Date: Mon, 10 Aug 2026 20:08:58 +0200 Subject: [PATCH] versioning cleanup --- HatariZipLauncher/Program.cs | 2 +- PLAN.md | 4 ++-- README.md | 10 +++++----- agents.md | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/HatariZipLauncher/Program.cs b/HatariZipLauncher/Program.cs index b47898b..f4a177f 100644 --- a/HatariZipLauncher/Program.cs +++ b/HatariZipLauncher/Program.cs @@ -4,7 +4,7 @@ namespace HatariZipLauncher { static void Main(string[] args) { - Console.Title = "Hatari ZIP Launcher"; + Console.Title = "Marcer GameDVD Launcher"; var app = new LauncherApp(); app.Run(); } diff --git a/PLAN.md b/PLAN.md index 2e26d3a..93f59f5 100644 --- a/PLAN.md +++ b/PLAN.md @@ -10,7 +10,7 @@ Ziel: Das Repo aufräumen (Doku, Code, Config) - [ ] **Magische Strings entfernen / zentralisieren (nur im Code, siehe 2c):** - [ ] Virtueller Ordnername `"Favorites"` (LauncherApp.cs) → gemeinsame Konstante (nicht konfigurierbar). - [ ] Dateiname `"favorites.txt"` (LauncherApp.cs) → Konstante in FavoritesService (nicht konfigurierbar). - - [ ] Console-Titel `"Hatari ZIP Launcher"` (Program.cs) → Konstante (nicht konfigurierbar). + - [ ] Console-Titel `"Marcer GameDVD Launcher"` (Program.cs) → Konstante (nicht konfigurierbar). - [ ] Default-ArgsTemplate `-c "{cfg}" --disk-a "{zip}"` (LauncherApp.cs) → redundanten Fallback entfernen; Config liefert den Template (ist schon in der example definiert, Validation `{zip}` existiert). - [ ] **Scroll-Trigger magische Zahlen** (NavigationController.cs: `2/3`, `1/3`) in benannte Konstanten @@ -68,7 +68,7 @@ Inkonsistenzen. Die folgenden Werte sind betroffen: |---|------|-----------------|------------|---------------| | 1 | `"Favorites"` | `LauncherApp.cs` (2×) | Virtueller Ordnername, der dem Nutzer als Eintrag an der Wurzel angezeigt wird. Wenn zwei voneinander abweichende Literale im Codestand bleiben, funktioniert Enter/Anzeige dieses Ordners nicht mehr. | Eine einzige Konstante `const string FavoritesRootName = "Favorites";` (z.B. in `FavoritesService`); beide Verwendungen darauf zurückführen. **Nur Code-Konstante, nicht konfigurierbar.** | | 2 | `"favorites.txt"` | `LauncherApp.cs` | Dateiname der Favoriten-Persistenz (liegt im Patch-Dir oder neben EXE). | Konstante im `FavoritesService` (z.B. `public const string DefaultFileName = "favorites.txt";`); Aufrufer nutzen diese statt Literal. **Nur Code-Konstante, nicht konfigurierbar.** | -| 3 | `"Hatari ZIP Launcher"` | `Program.cs` (`Console.Title`) | Konsolen-Titel, der im Fenstertitel erscheint. | Konstante `const string DefaultTitle = "Hatari ZIP Launcher";` (Nutzer-visible, aber **nicht konfigurierbar** — fixer Anzeige-Titel). | +| 3 | `"Marcer GameDVD Launcher"` | `Program.cs` (`Console.Title`) | Konsolen-Titel, der im Fenstertitel erscheint. | Konstante `const string DefaultTitle = "Marcer GameDVD Launcher";` (Nutzer-visible, aber **nicht konfigurierbar** — fixer Anzeige-Titel). | | 4 | Default-ArgsTemplate `-c "{cfg}" --disk-a "{zip}"` | `LauncherApp.cs` | Redundanter Fallback, falls `Hatari.ArgsTemplate` in der Config nicht gesetzt ist. Ist bereits in der example definiert → das Hardcode ist nur ein Sicherheitsnetz. | Redundanz entfernen: Fallback streichen und erzwingen, dass die Config den Template liefert (Validation `{zip}` existiert schon). **Config-Feld bleibt die einzige Quelle.** | | 5 | Scroll-Anteile `2/3` und `1/3` | `NavigationController.cs` | Bestimmt, ab welcher relativen Position im sichtbaren Fenster automatisch gescrollt wird (Cursor bei 2/3 unten → scrollen, bei 1/3 oben → zurückscrollen). | Benannte Konstanten `BottomScrollTriggerFraction = 2f/3f` und `TopScrollTriggerFraction = 1f/3f` mit Kommentar; Logik bleibt identisch. **Nur Code-Konstanten, nicht konfigurierbar.** | | 6 | `WindowHeight - 1` / `WindowWidth` | `LauncherApp.cs` / `MenuRenderer.cs` | Die Liste ist immer eine Zeile weniger als die Konsolenhöhe (Policy, verhindert Auto-Scroll am Fensterrand). Wird an mehreren Stellen erneut berechnet. | Zentrale Helfer-Berechnung (z.B. statische Methode/Property `AvailableLines`), damit die Policy an genau einer Stelle kodiert ist; Logik unverändert (Resize-Handling bleibt). **Nur Code, nicht konfigurierbar.** | diff --git a/README.md b/README.md index ce98d0a..df933d0 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -# HatariZipLauncher +# Marcer GameDVD Launcher A performant, consistent console launcher for the Hatari emulator on Windows. Control is entirely via keyboard—using only the arrow keys, Enter, Backspace, ESC, PageUp, and PageDown, you can browse your game archive quickly and comfortably. Navigation is strictly limited to the configured root directory. ZIPs are seamlessly launched via Hatari. Thanks to overlay/patch mode, a consistent color scheme, and robust cursor/scroll logic, even the largest archives or deeply nested directory trees are handled smoothly and reliably. ## Features -- **Overlay/Patch Union (since v0.6):** Recursively merges main and patch directory at every level. Each object/name is shown only once (patch takes precedence). +- **Overlay/Patch Union:** Recursively merges main and patch directory at every level. Each object/name is shown only once (patch takes precedence). - **Dynamic, practical color scheme:** | Entry | ConsoleColor | Meaning @@ -18,7 +18,7 @@ A performant, consistent console launcher for the Hatari emulator on Windows. Co ## Roadmap ### Released Features -- **Favorites/bookmark system** (since v0.91): +- **Favorites/bookmark system:** - Press `*` on a ZIP to toggle it as a favorite. Favorites are shown in a virtual `Favorites` folder at the top of the root listing when any favorites exist. - Favorites are persisted in `favorites.txt` in the configured `PatchDirectory`, or next to the EXE if no patch directory is set. @@ -37,7 +37,7 @@ A performant, consistent console launcher for the Hatari emulator on Windows. Co --- -**Display Performance Note (as of v0.84):** +**Display Performance Note:** - The current rendering logic follows state-of-the-art principles for performant C# console apps: - Minimal redraw: Only the truly changed line is redrawn, never the whole screen. - No Console.Clear or full redraw on cursor movement—just targeted SetCursorPosition and Write. @@ -83,7 +83,7 @@ A performant, consistent console launcher for the Hatari emulator on Windows. Co - Empty directories are reported (display stays stable) 8. **Overlay/patch logic:** - If a ZIP/folder exists in both patch and main, always the patch version opens/launches - - Since v0.6, all navigation is relative to root path—for consistent experience + - All navigation is relative to root path—for consistent experience ## System Requirements - **Windows:** .NET Desktop Runtime 10 or later, Hatari Emulator with configured CFG diff --git a/agents.md b/agents.md index 683f42f..cf1a51f 100644 --- a/agents.md +++ b/agents.md @@ -2,7 +2,7 @@ applyTo: '**' --- -## Module Overview (HatariZipLauncher) +## Module Overview (Marcer GameDVD Launcher) The implementation is split into focused modules (files) under the `HatariZipLauncher/` folder. Keep this section up to date when files are added, removed or responsibilities change. @@ -39,7 +39,7 @@ Developer note: Visual Studio Solution With this, it is ensured that binary/release files never end up in git, and the release process is always traceable and performed exclusively manually in the web interface. -# Requirements for the Hatari ZIP Launcher (agents.md) +# Requirements for the Marcer GameDVD Launcher (agents.md) ## Basic Function / Purpose The console launcher is meant for browsing a games directory and can launch ZIP files with the Hatari emulator under Windows. Control is exclusively via keyboard in the console window. @@ -90,7 +90,7 @@ The console launcher is meant for browsing a games directory and can launch ZIP --- -## Layer/Overlay Mode (since v0.6) +## Layer/Overlay Mode ### Overlay Logic - The display always combines the contents of the game root ("main directory") and patch directory. @@ -117,6 +117,6 @@ Implementation note (input flushing): Note: The ConsoleColor mapping above is authoritative for the application. If you change color values in code (MenuRenderer/GetColorForEntry), update this section to keep documentation and implementation in sync. ### Navigation -- Navigation since v0.6 is always based strictly on the **relative path from root** and is consistent on all levels (Backspace always moves up one level, Enter always moves one level deeper, regardless of which layer). +- Navigation is always based strictly on the **relative path from root** and is consistent on all levels (Backspace always moves up one level, Enter always moves one level deeper, regardless of which layer). ---