diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 5b83818..61c32f9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -47,19 +47,19 @@ jobs:
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
- Compress-Archive -Path "HatariZipLauncher/bin/Release/net10.0/${{ matrix.rid }}/*" -DestinationPath "HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip"
+ Compress-Archive -Path "MarcerGameDvdLauncher/bin/Release/net10.0/${{ matrix.rid }}/*" -DestinationPath "MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip"
- name: Create ZIP (Linux/macOS)
if: matrix.os != 'windows-latest'
run: |
- cd HatariZipLauncher/bin/Release/net10.0/${{ matrix.rid }}
- zip -r ../../../HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip .
+ cd MarcerGameDvdLauncher/bin/Release/net10.0/${{ matrix.rid }}
+ zip -r ../../../MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip .
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
- name: HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}
- path: HatariZipLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip
+ name: MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}
+ path: MarcerGameDvdLauncher-v${{ steps.version.outputs.version }}-${{ matrix.artifact_name }}.zip
release:
needs: build
@@ -91,7 +91,7 @@ jobs:
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
- name: HatariZipLauncher ${{ github.ref_name }}
+ name: MarcerGameDvdLauncher ${{ github.ref_name }}
body_path: release-notes.md
files: artifacts/**/*.zip
generate_release_notes: false
diff --git a/HatariZipLauncher/AppConfiguration.cs b/MarcerGameDvdLauncher/AppConfiguration.cs
similarity index 93%
rename from HatariZipLauncher/AppConfiguration.cs
rename to MarcerGameDvdLauncher/AppConfiguration.cs
index fe18f78..e8d7558 100644
--- a/HatariZipLauncher/AppConfiguration.cs
+++ b/MarcerGameDvdLauncher/AppConfiguration.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
// Configuration POCOs separated into their own file for clarity
public class AppHatariConfig
diff --git a/HatariZipLauncher/FavoritesService.cs b/MarcerGameDvdLauncher/FavoritesService.cs
similarity index 98%
rename from HatariZipLauncher/FavoritesService.cs
rename to MarcerGameDvdLauncher/FavoritesService.cs
index acf9adf..7cfafa4 100644
--- a/HatariZipLauncher/FavoritesService.cs
+++ b/MarcerGameDvdLauncher/FavoritesService.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
// Manages loading, saving and querying favorite ZIP paths.
public class FavoritesService
diff --git a/HatariZipLauncher/HatariLauncher.cs b/MarcerGameDvdLauncher/HatariLauncher.cs
similarity index 98%
rename from HatariZipLauncher/HatariLauncher.cs
rename to MarcerGameDvdLauncher/HatariLauncher.cs
index 8f3d69e..116a33f 100644
--- a/HatariZipLauncher/HatariLauncher.cs
+++ b/MarcerGameDvdLauncher/HatariLauncher.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
public class HatariLauncher
{
diff --git a/HatariZipLauncher/LauncherApp.cs b/MarcerGameDvdLauncher/LauncherApp.cs
similarity index 99%
rename from HatariZipLauncher/LauncherApp.cs
rename to MarcerGameDvdLauncher/LauncherApp.cs
index 5dd64c6..2e42550 100644
--- a/HatariZipLauncher/LauncherApp.cs
+++ b/MarcerGameDvdLauncher/LauncherApp.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
// Encapsulates application lifecycle: load config, initialize components, run navigation
public class LauncherApp
diff --git a/HatariZipLauncher/HatariZipLauncher.csproj b/MarcerGameDvdLauncher/MarcerGameDvdLauncher.csproj
similarity index 79%
rename from HatariZipLauncher/HatariZipLauncher.csproj
rename to MarcerGameDvdLauncher/MarcerGameDvdLauncher.csproj
index 48467b2..20d460c 100644
--- a/HatariZipLauncher/HatariZipLauncher.csproj
+++ b/MarcerGameDvdLauncher/MarcerGameDvdLauncher.csproj
@@ -4,6 +4,8 @@
Exe
net10.0
+ MarcerGameDvdLauncher
+ MarcerGameDvdLauncher
enable
enable
diff --git a/HatariZipLauncher/MenuRenderer.cs b/MarcerGameDvdLauncher/MenuRenderer.cs
similarity index 99%
rename from HatariZipLauncher/MenuRenderer.cs
rename to MarcerGameDvdLauncher/MenuRenderer.cs
index 6ea4162..251c496 100644
--- a/HatariZipLauncher/MenuRenderer.cs
+++ b/MarcerGameDvdLauncher/MenuRenderer.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
public class MenuRenderer
{
diff --git a/HatariZipLauncher/NavigationController.cs b/MarcerGameDvdLauncher/NavigationController.cs
similarity index 99%
rename from HatariZipLauncher/NavigationController.cs
rename to MarcerGameDvdLauncher/NavigationController.cs
index a5c34cb..58d277e 100644
--- a/HatariZipLauncher/NavigationController.cs
+++ b/MarcerGameDvdLauncher/NavigationController.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
public class NavigationController
{
diff --git a/HatariZipLauncher/OverlayDirectoryBrowser.cs b/MarcerGameDvdLauncher/OverlayDirectoryBrowser.cs
similarity index 99%
rename from HatariZipLauncher/OverlayDirectoryBrowser.cs
rename to MarcerGameDvdLauncher/OverlayDirectoryBrowser.cs
index d015725..4bc347b 100644
--- a/HatariZipLauncher/OverlayDirectoryBrowser.cs
+++ b/MarcerGameDvdLauncher/OverlayDirectoryBrowser.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
public enum EntryKind { Directory, Zip }
diff --git a/HatariZipLauncher/Program.cs b/MarcerGameDvdLauncher/Program.cs
similarity index 86%
rename from HatariZipLauncher/Program.cs
rename to MarcerGameDvdLauncher/Program.cs
index f4a177f..961e5fa 100644
--- a/HatariZipLauncher/Program.cs
+++ b/MarcerGameDvdLauncher/Program.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
class Program
{
diff --git a/HatariZipLauncher/ProgramHelpers.cs b/MarcerGameDvdLauncher/ProgramHelpers.cs
similarity index 99%
rename from HatariZipLauncher/ProgramHelpers.cs
rename to MarcerGameDvdLauncher/ProgramHelpers.cs
index ddf8d19..d30e1a4 100644
--- a/HatariZipLauncher/ProgramHelpers.cs
+++ b/MarcerGameDvdLauncher/ProgramHelpers.cs
@@ -1,7 +1,7 @@
using System;
using System.Runtime.InteropServices;
-namespace HatariZipLauncher
+namespace MarcerGameDvdLauncher
{
// Small helpers refactored into their own file to keep Program.cs focused.
internal static class ProgramHelpers
diff --git a/HatariZipLauncher/UIErrorService.cs b/MarcerGameDvdLauncher/UIErrorService.cs
similarity index 89%
rename from HatariZipLauncher/UIErrorService.cs
rename to MarcerGameDvdLauncher/UIErrorService.cs
index 3a40268..613cf21 100644
--- a/HatariZipLauncher/UIErrorService.cs
+++ b/MarcerGameDvdLauncher/UIErrorService.cs
@@ -1,4 +1,4 @@
-namespace HatariZipLauncher;
+namespace MarcerGameDvdLauncher;
///
/// Centralized service for error and user message output in the console UI.
diff --git a/HatariZipLauncher/launcher.config.example.json b/MarcerGameDvdLauncher/launcher.config.example.json
similarity index 100%
rename from HatariZipLauncher/launcher.config.example.json
rename to MarcerGameDvdLauncher/launcher.config.example.json
diff --git a/agents.md b/agents.md
index cf1a51f..1bef6ed 100644
--- a/agents.md
+++ b/agents.md
@@ -4,17 +4,17 @@ applyTo: '**'
## 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.
+The implementation is split into focused modules (files) under the `MarcerGameDvdLauncher/` folder. Keep this section up to date when files are added, removed or responsibilities change.
-- HatariZipLauncher/Program.cs: Minimal entry point. Sets console title and starts the application by creating `LauncherApp`.
-- HatariZipLauncher/LauncherApp.cs: Application lifecycle host — loads configuration, initializes components and runs the main directory navigation loop (contains `AppHost` internal class).
-- HatariZipLauncher/AppConfiguration.cs: POCO configuration classes (`AppConfig`, `AppHatariConfig`) used to deserialize `launcher.config.json`.
-- HatariZipLauncher/ProgramHelpers.cs: Small shared helpers (resolve relative paths, centralized console message helper) used across modules.
-- HatariZipLauncher/OverlayDirectoryBrowser.cs: Filesystem overlay and browsing logic — merges root and patch directories, enumerates folders and ZIPs, protects against path traversal and ensures navigation cannot leave the configured roots.
-- HatariZipLauncher/NavigationController.cs: Encapsulates selection, scrolling and relative-path navigation logic (cursor, page up/down, per-directory remembered selection/state).
-- HatariZipLauncher/MenuRenderer.cs: Console rendering logic — efficient per-line redraw, double-buffering and color selection according to overlay rules.
-- HatariZipLauncher/HatariLauncher.cs: Responsible for validating the Hatari executable and starting Hatari with the configured argument template (replaces `{cfg}` and `{zip}`).
-- HatariZipLauncher/UIErrorService.cs: Centralized UI error presentation using the console message helper.
+- MarcerGameDvdLauncher/Program.cs: Minimal entry point. Sets console title and starts the application by creating `LauncherApp`.
+- MarcerGameDvdLauncher/LauncherApp.cs: Application lifecycle host — loads configuration, initializes components and runs the main directory navigation loop (contains `AppHost` internal class).
+- MarcerGameDvdLauncher/AppConfiguration.cs: POCO configuration classes (`AppConfig`, `AppHatariConfig`) used to deserialize `launcher.config.json`.
+- MarcerGameDvdLauncher/ProgramHelpers.cs: Small shared helpers (resolve relative paths, centralized console message helper) used across modules.
+- MarcerGameDvdLauncher/OverlayDirectoryBrowser.cs: Filesystem overlay and browsing logic — merges root and patch directories, enumerates folders and ZIPs, protects against path traversal and ensures navigation cannot leave the configured roots.
+- MarcerGameDvdLauncher/NavigationController.cs: Encapsulates selection, scrolling and relative-path navigation logic (cursor, page up/down, per-directory remembered selection/state).
+- MarcerGameDvdLauncher/MenuRenderer.cs: Console rendering logic — efficient per-line redraw, double-buffering and color selection according to overlay rules.
+- MarcerGameDvdLauncher/HatariLauncher.cs: Responsible for validating the Hatari executable and starting Hatari with the configured argument template (replaces `{cfg}` and `{zip}`).
+- MarcerGameDvdLauncher/UIErrorService.cs: Centralized UI error presentation using the console message helper.
Note: This overview is intentionally concise. For behavioral changes (navigation, color scheme, launch command or config schema), update this file (agents.md) and README.md as required by project policy.
**Note for Automated Tests/CI:**
@@ -35,7 +35,7 @@ Additional policy:
- README.md must be written in English. Any functional change that affects usage, configuration, or behavior MUST update README.md in English immediately after the change. If there are consequential changes to developer-facing policies, build steps, or requirements, `agents.md` must be updated as well.
Developer note: Visual Studio Solution
-- A Visual Studio solution file exists at the repository root: `marcer-gamedvd-launcher.sln`. Developers may open this solution in Visual Studio to work on the project, debug and build from the IDE. The solution references `HatariZipLauncher\HatariZipLauncher.csproj` and includes Debug and Release configurations. Use `build.cmd` (Windows) or `build.sh` (Linux) and `start.cmd` for consistent command-line builds/releases as described elsewhere in this document.
+- A Visual Studio solution file exists at the repository root: `marcer-gamedvd-launcher.sln`. Developers may open this solution in Visual Studio to work on the project, debug and build from the IDE. The solution references `MarcerGameDvdLauncher\MarcerGameDvdLauncher.csproj` and includes Debug and Release configurations. Use `build.cmd` (Windows) or `build.sh` (Linux) and `start.cmd` for consistent command-line builds/releases as described elsewhere in this document.
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.
diff --git a/build.cmd b/build.cmd
index fa2889b..9dca052 100644
--- a/build.cmd
+++ b/build.cmd
@@ -1,7 +1,7 @@
@echo off
-REM === Build script for HatariZipLauncher (requires .NET SDK 6 or newer) ===
-echo Building HatariZipLauncher...
+REM === Build script for MarcerGameDvdLauncher (requires .NET SDK 6 or newer) ===
+echo Building MarcerGameDvdLauncher...
where dotnet >nul 2>nul
if errorlevel 1 (
echo [ERROR] .NET SDK not found. Please install from https://dotnet.microsoft.com/download
@@ -10,7 +10,7 @@ if errorlevel 1 (
REM Im aktuellen Ordner (wo build.cmd liegt) bauen
cd /d %~dp0
-cd HatariZipLauncher
+cd MarcerGameDvdLauncher
dotnet build -c Release
if errorlevel 1 (
@@ -19,7 +19,7 @@ if errorlevel 1 (
)
REM Finden der fertigen .exe (Release-Verzeichnis)
-for /f "delims=" %%I in ('dir /b /s /a-d bin\Release\*HatariZipLauncher*.exe') do set EXEPATH=%%I
+for /f "delims=" %%I in ('dir /b /s /a-d bin\Release\*MarcerGameDvdLauncher*.exe') do set EXEPATH=%%I
if exist "%EXEPATH%" (
echo [OK] Build complete. EXE: "%EXEPATH%"
) else (
diff --git a/build.sh b/build.sh
index 44df99a..130b12b 100644
--- a/build.sh
+++ b/build.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# === Build script for HatariZipLauncher (requires .NET SDK 6 or newer) ===
-echo "Building HatariZipLauncher..."
+# === Build script for MarcerGameDvdLauncher (requires .NET SDK 6 or newer) ===
+echo "Building MarcerGameDvdLauncher..."
if ! command -v dotnet &> /dev/null; then
echo "[ERROR] .NET SDK not found. Please install from https://dotnet.microsoft.com/download"
@@ -11,8 +11,8 @@ fi
# Build in current directory (where build.sh is located)
cd "$(dirname "$0")"
-# Change to HatariZipLauncher subdirectory
-cd "HatariZipLauncher"
+# Change to MarcerGameDvdLauncher subdirectory
+cd "MarcerGameDvdLauncher"
dotnet build -c Release
if [ $? -ne 0 ]; then
@@ -21,7 +21,7 @@ if [ $? -ne 0 ]; then
fi
# Check for the built .exe file
-EXEPATH=$(find "bin/Release" -name "HatariZipLauncher*.exe" -print -quit 2>/dev/null)
+EXEPATH=$(find "bin/Release" -name "MarcerGameDvdLauncher*.exe" -print -quit 2>/dev/null)
if [ -n "$EXEPATH" ] && [ -f "$EXEPATH" ]; then
echo "[OK] Build complete. EXE: \"$EXEPATH\""
else
diff --git a/marcer-gamedvd-launcher.sln b/marcer-gamedvd-launcher.sln
index edc400c..ed64538 100644
--- a/marcer-gamedvd-launcher.sln
+++ b/marcer-gamedvd-launcher.sln
@@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33424.171
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HatariZipLauncher", "HatariZipLauncher\HatariZipLauncher.csproj", "{B1D2C3E4-F567-48AB-C9D0-1234567890AB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarcerGameDvdLauncher", "MarcerGameDvdLauncher\MarcerGameDvdLauncher.csproj", "{B1D2C3E4-F567-48AB-C9D0-1234567890AB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/start.cmd b/start.cmd
index 27b224f..78f85f1 100644
--- a/start.cmd
+++ b/start.cmd
@@ -1,14 +1,14 @@
@echo off
-REM Starts HatariZipLauncher.exe from the correct folder
+REM Starts MarcerGameDvdLauncher.exe from the correct folder
setlocal
-set EXE_PATH=%~dp0HatariZipLauncher\bin\Release\net10.0\HatariZipLauncher.exe
+set EXE_PATH=%~dp0MarcerGameDvdLauncher\bin\Release\net10.0\MarcerGameDvdLauncher.exe
if not exist "%EXE_PATH%" (
echo [ERROR] Application not built. Please run build.cmd first.
exit /b 1
)
-pushd "HatariZipLauncher\bin\Release\net10.0"
-"HatariZipLauncher.exe"
+pushd "MarcerGameDvdLauncher\bin\Release\net10.0"
+"MarcerGameDvdLauncher.exe"
popd