github drpetersonfernandes/SimpleLauncher release5.5.0

one hour ago

New System Support

  • Commander Genius — Added support for the Commander Keen engine recreation, including an intelligent launch strategy that:
    • Automatically parses the cgenius.cfg config to resolve the data/games directory.
    • Handles ${HOME} and ${BIN} variable expansion in config paths.
    • Extracts ZIP/7z/RAR archives and automatically locates Keen game data files (.CK1.CK6).
    • Flattens nested folder structures and cleans up temp files after launch.
    • Includes dedicated system image and setup documentation.

Improved DOSBox Support

  • Full DOSBox launch strategy with intelligent game file detection — automatically finds .conf, .bat, .exe, and .com files inside archives or folders.
  • ISO and CHD support for DOSBox — Mounts ISO files to scan for executables, then generates a DOSBox config with native imgmount commands. CHD files are mounted via CHDMounter and launched via DOSBox cdrom mount.
  • DOSBox file selection dialog — When multiple game files are found, presents a clean selection window with file names and relative paths.
  • "Group Files by Folder" extended to DOSBox — Now works with DOSBox-based emulators (DOSBox, DOSBox-X, DOSBox Staging, dosbox-pure).
  • -conf %ROM% auto-injection — Automatically inserts the -conf flag when launching via DOSBox if not already present.

UI/UX Improvements

  • New minimize-to-tray function — Allow Simple Launcher to remain open in the tray.
  • System context menu — Right-click on system buttons now shows Edit and Delete actions, passing the pre-selected system name.
  • Markdown rendering enhancements — Improved Markdown styling with proper headings, code blocks, tables, lists, blockquotes, and horizontal rules in release notes and help content.

New Parameter Placeholder

  • %NAME% — Resolves to the ROM filename without path or extension. Useful for emulators that expect just the game name (e.g., Commander Genius dir="games/%NAME%").

Improved Error Handling

  • Batch file error reporting — Batch file failures now show a detailed error dialog with the option to open the error log. Batch file contents are also logged on failure for easier debugging.
  • Batch file working directory validation — Validates that the working directory exists before executing batch files.
  • Unicode normalization for file paths — Files created on macOS (NFD) can now be found on Windows (NFC) by trying multiple Unicode normalization forms, preventing "file not found" errors.
  • Access denied handling for Updater — The updater now handles Win32 access denied errors gracefully with a user-friendly message and download page redirect.
  • COMException rendering detection — Detects WPF render thread failures (UCEERR_RENDERTHREADFAILURE) caused by GPU driver issues or per-pixel transparency.

HTTP Resilience

  • Replaced custom retry logic with Polly resilience handler — HTTP downloads now use Microsoft.Extensions.Http.Resilience with exponential backoff and jitter (5 retry attempts, 2-second base delay).

Single Instance Improvements

  • Improved single-instance behavior — Launching a second instance now restores the existing window instead of showing an error message. Uses named events for cross-process signaling with a fallback to window enumeration.

Sound Service

  • Replaced Windows MediaPlayer with NAudio 2.3.0 — Sound playback no longer requires UI thread dispatcher invocations, improving reliability and eliminating thread-affinity issues.
  • Registered IPlaySoundEffects interface — Added proper DI registration for sound effects service.

MVVM Migration to CommunityToolkit.Mvvm

  • Migrated all ViewModels from custom ViewModelBase and RelayCommand infrastructure to CommunityToolkit.Mvvm 8.4.2.
  • Created dedicated ViewModels for AboutWindow (AboutViewModel), ImageViewer (ImageViewerViewModel), SetFuzzyMatching (SetFuzzyMatchingViewModel), DebugWindow, and GlobalStatsWindow.
  • Added unit tests for DebugViewModel, GameVerificationViewModel, and GlobalStatsViewModel.

Service Extraction from MainWindow

  • LoadingOverlayService — Extracted loading overlay management with operation counting (SetLoadingState, EmergencyRelease).
  • StartupInitializationService — Consolidated startup logic (first-run wizard, MS Store scanning, game loading).
  • GameListUIService — Extracted UI state management (grid/list mode, game button image cleanup, pagination).
  • ThemeMenuService — Extracted theme switching logic (base themes + accent colors).
  • LanguageMenuService — Extracted language switching with checkmark management.

Code Refactoring

  • Injected ILogErrors via constructor/parameter — Replaced ServiceProvider resolution with proper constructor and parameter injection across favorites page, global search, context menu services, game button factory, and mount services.
  • Standardized emulator detection checks — Unified null-conditional access pattern for emulator detection checks (Azahar, Citra, DuckStation, Geolith, MAME, Ootake, Raine, RetroArch, Sameboy, Xemu).

Dokan Driver Validation

  • New DokanValidation class — Uses P/Invoke directly against dokan2.dll to check if Dokan is installed before any mount operation.
  • Provides clear error messages when Dokan is missing for ZIP/CHD mounts.
  • Dokan localization — Added localized strings for Dokan driver not found dialog with option to open download page.

Dependency Updates

  • CommunityToolkit.Mvvm 8.4.2 (new)
  • NAudio 2.3.0 (new, replaces Windows MediaPlayer)
  • Microsoft.Extensions.Http.Resilience 10.6.0 (new, Polly resilience handler)
  • MessagePack 3.1.4 → 3.1.6
  • YamlDotNet 17.1.0 → 18.0.0
  • SharpCompress0.48.1
  • Tomlyn 2.3.2 → 2.4.0
  • Microsoft.Data.Sqlite 10.0.7 → 10.0.8
  • Microsoft.Extensions.* 10.0.7 → 10.0.8
  • Microsoft.CodeAnalysis.NetAnalyzers 10.0.203 → 10.0.300

Full Changelog: release5.4.0...release5.5.0

Don't miss a new SimpleLauncher release

NewReleases is sending notifications on new releases.