GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Releases · purelogiccode/SimpleLauncher

Releases · purelogiccode/SimpleLauncher

Version 5.8.4

Version 5.8.4 Latest
Latest
@drpetersonfernandes drpetersonfernandes released this 20 Oct 18:52
release5.8.4
5a1f0e3

Release 5.8.4

2026-10-20

RetroAchievements Stability

  • No more false bug reports — When RetroAchievements serves an HTML challenge, rate-limit or maintenance page instead of JSON, both apps now log the condition at Information level and show the normal "no data" state. Previously the JSON parse error was reported as an application bug (bugs #68823–#68828).
  • All RA endpoints covered — Profile, recently played, completion progress, game details, ranks, earned achievements and session login share the same defensive response handling.

Updater Fix

  • Read-only files no longer abort the update — The updater bootstrap clears the read-only attribute before overwriting files such as LICENSE.txt (bug #68830). Access-denied and file-in-use conditions are logged at Information and shown with actionable guidance instead of being filed as bugs.

Dependencies & Maintenance

  • Dependency updates — Meziantou.Analyzer 3.0.315 and SharpCompress 0.50.7.
  • Packaging — Windows and Linux bundles are rebuilt as 5.8.4 with the same framework-dependent single-file layout and bundled LICENSE.txt, README.md and WhatsNew.md.

Assets 10
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with heart emoji
All reactions
  • ❤️ 1 reaction
1 person reacted

Version 5.8.3

Version 5.8.3
@drpetersonfernandes drpetersonfernandes released this 20 Oct 05:25
release5.8.3
7e18fe4

Release 5.8.3

2026-10-20

Avalonia Game Ordering Fixed

  • The "All" button now sorts the grid — Opening a system and clicking "All" (or any letter) applies the configured File Name or Machine Description order before rendering. The Avalonia scan previously showed the raw directory-enumeration order; it now matches the WPF app.

Packaging

  • Patch bundles — Windows and Linux bundles are rebuilt as 5.8.3 with the same framework-dependent single-file layout and bundled LICENSE.txt, README.md and WhatsNew.md.
Assets 10
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with heart emoji
All reactions
  • ❤️ 1 reaction
1 person reacted

Version 5.8.2

Version 5.8.2
@drpetersonfernandes drpetersonfernandes released this 20 Oct 04:40
release5.8.2
df3dc19

Release 5.8.2

2026-10-20

Avalonia System Loading Fixed

  • Selecting a system works again — The "Loading system..." overlay no longer stays on screen forever. The game-card template used runtime type casts in its bindings, which Avalonia cannot resolve inside deferred templates; realizing the first card now succeeds and the games are shown.
  • Image pack list — The same unsafe binding cast was removed from the image-pack download window.

Packaging

  • Patch bundles — Windows and Linux bundles are rebuilt as 5.8.2 with the same framework-dependent single-file layout and bundled LICENSE.txt, README.md and WhatsNew.md.
Assets 10
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with heart emoji
All reactions
  • ❤️ 1 reaction
1 person reacted

Version 5.8.1

Version 5.8.1
@drpetersonfernandes drpetersonfernandes released this 20 Oct 03:10
release5.8.1
12d550e

Release 5.8.1

2026-10-19

Faster Avalonia Startup

  • System list first — The Avalonia app now shows the system-selection grid before scanning any ROM folder instead of blocking the first frame on the full library count.
  • Background counts — Sidebar game-count badges are calculated after the grid is visible, and system icons resolve synchronously with a short directory cache (one listing instead of two per system).

Stability & Single Instance

  • Shutdown deadlock fixed — Exiting while a RetroAchievements hash scan is running no longer leaves the process in Task Manager: the shutdown wait resumes on the thread pool instead of the blocked UI thread.
  • Single-instance ownership — The shared WPF/Avalonia named mutex is now created and owned only by the instance that is allowed to run, and released only by its owner. Simultaneous launches can no longer abandon it or throw ApplicationException on exit (bug #68430).

Updater Hardening

  • Interrupted updates recover only what they touched — Leftover .updbak files are probed only at the destinations of the staged payload instead of recursively scanning the install drive, so protected folders such as D:\System Volume Information can no longer abort an update (bugs #68274/#68441).
  • Read-only and transient denials — The swap clears read-only attributes on both ends and retries access-denied failures caused by antivirus/OneDrive filters or a closing handle, with actionable guidance only when the denial persists (bugs #68287/#68288).
  • Archive-viewer folders — Running from a WinRAR/7-Zip/Explorer zip temporary folder is detected and the update is refused with extract-first guidance instead of installing a doomed copy (bug #68272). A restart access-denied is classified as an expected condition, not a bug report.
  • Closed updater window — Notices fall back to an ownerless dialog when the updater window was closed during the update (bug #68273).
  • Staging cleanup — Read-only leftovers no longer make the recursive staging cleanup fail, and the condition is logged at Information level (bug #68416).

Mounting & Launch Diagnostics

  • XISO mount output — SimpleXisoDrive stdout/stderr and its exit code are captured (thread-safely) and included in mount diagnostics at Information level, so unsupported images and missing drivers no longer produce duplicate bug reports (bugs #68434–#68437).
  • Avalonia launcher classification — Launch exceptions are classified before logging: elevation required, UAC cancelled and invalid executables stay out of bug reports (bug #68419).
  • ISO 9660 root record — The primary-volume root-directory record validation was tightened (a one-byte record length can never overrun the 2048-byte sector).

Code Quality & Dependencies

  • Third InspectCode batch — Removed unused dependencies and parameters, replaced XAML design-time placeholders with real design-time types and typed binding paths, used field-backed properties, and kept every project at zero analyzer warnings.
  • Dependencies — Meziantou.Analyzer 3.0.314, NAudio 3.3.0, SharpCompress 0.50.6, CHDSharp 1.5.0, Markdown.Avalonia 12.0.2, Microsoft.Extensions.Http.Resilience 10.11.0, Avalonia 12.1.4.

Packaging

  • Self-contained documents in every bundle — Every release_{version}_{rid}.zip and updater_{rid}.zip now carries LICENSE.txt, README.md and WhatsNew.md.
  • Framework-dependent single binaries — The apps and the updater remain single-file framework-dependent builds: managed assemblies are bundled, the .NET 10 runtime is required on the target machine and is never embedded.

CI, Documentation & Tests

  • CI — GitHub Actions now builds the solution in Debug and Release with -warnaserror, compiles the Linux updater, and a new Package dry run workflow packages all four RIDs and verifies the Linux ZIP layout and executable bits without creating a release. Tests still run locally only (the fast/slow split is by project).
  • Documentation — The Pages site and the GitHub wiki share one source and one labeled side menu; the site gained a persisted dark/light theme.
  • Tests — 2,208 WPF and 704 Avalonia fast tests pass, plus the 83 WPF and 11 Avalonia slow tests.
Assets 10
Loading

Uh oh!

There was an error while loading. Please reload this page.

All reactions

Version 5.8.0

Version 5.8.0
@github-actions github-actions released this 14 Oct 05:41
release5.8.0
34e2612

Release 5.8.0

2026-10-14

Unified Windows Release (WPF + Avalonia)

  • One download for both apps — The release zip now places SimpleLauncher.exe (WPF) and SimpleLauncher.Avalonia.exe (Avalonia) side by side with a single shared content set (images/, tools/, samples/, appsettings.json) and ships one Updater.exe that updates either app.
  • Shared single-instance guard — Only one of the two apps can run at a time; launching the other brings the running instance to the foreground.
  • Updater relaunches the app that started it — and still works on legacy WPF-only installs.

Unified Settings Database (settings.dat)

  • One SQLite store for both apps — Favorites, play history, application settings, emulator settings, per-system play times, and system configurations now live in a single settings.dat in %LocalAppData%\SimpleLauncher (or the portable folder).
  • Automatic migration — The first launch migrates settings.xml, system.xml, favorites.dat, and playhistory.dat, verifies the result, and shelves the legacy files as .bak; on failure nothing is changed and the next launch retries.
  • Merge support — If a database already exists, any remaining legacy files are merged into it without losing database-only data or duplicating entries.
  • Read-only database recovery — A read-only settings.dat is detected and recovered instead of crashing; failed saves are observed and logged.
  • Cross-app consistency — Systems renamed or deleted in one app stay in sync with favorites and play history.

WPF: Card Size Slider

  • Top-bar slider — Resize game thumbnails with a slider next to the view controls (debounced when dragging), kept in sync with "Set Button Size" and Ctrl+Mouse wheel zoom.

Shared Localization

  • One JSON pack set for both apps — The 18 language packs (2671 keys each) now live once in SimpleLauncher.Core\Localization; WPF embeds them as pack resources and Avalonia embeds them in its assembly.
  • Legacy XAML resources removed — The per-language strings.*.xaml files are gone.
  • Avalonia message boxes fully localized.

Reliability & Security

  • Extraction — Zip-Slip validation fails closed, extraction no longer wipes destination folders (only files written by the failed run are removed), partial files are cleaned up, and locked archives are retried.
  • Downloads — User cancellation is honored promptly, downloaded file names are sanitized against path traversal, and failures retry.
  • Launching — Launch gating, rename migration, elevation handling, and invalid/missing executable dialogs were repaired; user cancellations and invalid executables are no longer reported as bugs.
  • Xbox disc images — xemu and Cxbx-Reloaded open Xbox games in every container the bundled SimpleXisoDrive supports: XISO (.iso/.xiso), CISO (.cso) and ZArchive (.zar) mount as virtual drives on Windows (Dokan) and Linux (FUSE 3) — xemu receives the virtual image.iso, Cxbx-Reloaded the mounted default.xbe (it cannot read a raw Xbox image); Xbox-ISO .chd files now prefer SimpleXisoDrive and fall back to CHDMounter when the driver is unavailable.
  • Updater — Staged-file swap with rollback safety, path containment checks, safe restart, and retry, so a failed update no longer leaves a half-updated install.
  • Stability — Fixed a gamepad-reconnect deadlock, a hash-pipe deadlock, a shutdown stall that left a clickable orphan tray icon, and play-history races (now serialized under lock); debug logging buffers are bounded.
  • RetroAchievements — Hardened account handling, system-name matching, favorites/play-history sync, emulator credential injection, hashing and extraction paths. Hash-support decisions are now resolved and logged once per system instead of once per game card (selecting a PlayStation 3 library no longer floods the log with thousands of lookup lines).
  • Avalonia fixes — Edit System help rendering, status bar visibility in the system selection screen, no-credentials panel in the RA window, loading the clicked system card after closing Edit System, in-app path guards, INI encoding, and a window title matching WPF.
  • Filtering — Accent-insensitive game filtering restored, and Commander Genius archive deletion fixed.

Linux Support (Avalonia) — Beta

  • Beta — Linux support is in beta: it was tested end-to-end on Ubuntu 24.04 x64 and Fedora 44 KDE (GUI smoke-tested on Wayland); the ARM64 bundle is structurally verified only. Please report issues on GitHub.
  • Native Linux builds — The Avalonia app ships framework-dependent single-file bundles for linux-x64 and linux-arm64 (one SimpleLauncher.Avalonia binary plus its native libraries, like the Windows exes; the .NET 10 runtime is required; release_{version}_linux-*.zip plus updater_linux-*.zip); the release workflow publishes them next to the Windows bundles and the in-app updater resolves the Linux assets.
  • No Dokan needed on Linux — Archive launches (ZIP/7z/RAR) mount through the bundled SimpleZipDrive FUSE build and Xbox images (.iso/.xiso/.cso/.chd/.zar) through the bundled SimpleXisoDrive FUSE build (with the virtual image.iso for xemu); the temp-extraction and managed CHDSharp conversion paths remain automatic fallbacks when FUSE or the payload is unavailable. DOSBox ISO games use the native imgmount instead of the Windows PowerShell path.
  • Native Linux behavior — App data lives in the XDG folder (~/.local/share/SimpleLauncher), Commander Genius uses ~/.CommanderGenius, paths are handled POSIX-style with case-sensitive matching, and the extension-less bundled 7-Zip fallback (7zz) runs correctly. SDL2 gamepad navigation is supported.
  • Sound works out of the box — MP3/WAV UI sounds decode through managed decoders (NLayer + NAudio), so no extra packages are required; FLAC/Ogg/Opus use the system libsndfile. Missing audio libraries/devices are logged as information instead of being reported as bugs.
  • Platform-aware pickers and checks — The emulator pickers no longer hide extension-less Linux binaries, .AppImage/.sh/.run files are accepted, and file dialogs attach to the active window (Wayland).
  • Windows-only features are hidden on Linux/macOS — Store scanning, Dokan mounting, Take Screenshot, the RetroAchievements emulator-configuration section and the Windows-only Tools menu entries (Linux keeps XISOStudio, CHDStudio, RVZStudio and FindRomCover).
  • 23 Linux port findings fixed (LB-01…LB-23) — Case-insensitive ROM/EXE discovery after extraction, backslash archive entry names, execute bits for bundled tools, CHD temp-file cleanup, mount platform guards, updater Zip-Slip comparison, platform-neutral dialog wording, defensive scan-handler gating, and Information-level logging when a release ships no update assets for the current platform.

Avalonia Fixes

  • Letter buttons after a filtered view — Clicking a letter (or "All") after a RetroAchievements, Favorites, Recently Played or search view now reloads the complete library of the current system (and clears the search box), matching WPF, instead of filtering the already-filtered list.
  • RetroAchievements hash scan — The bundled CLI is now invoked through its positional interface (with automatic resume after a file it cannot hash), so fresh scans on a new library no longer store zero hashes; existing scans are versioned and recalculated automatically. Applies to both apps.
  • System icon size — Ctrl+Mouse wheel and the zoom buttons now resize the system icons on the system selection screen (50/100/150 px) and remember the choice, matching WPF.
  • Pages hide the system bar — Favorites, Play History and Global Search no longer show the top system-selection bar, matching WPF.
  • Auto-sized dialog buttons — The Global Statistics Start Process / Save Report buttons size to their localized text instead of a fixed width.
  • No bogus legacy message — Opening Edit System with no configured systems no longer claims system.xml is missing; the window opens so the first system can be added.
  • Tray icon — Embedded in the Avalonia app (and as a pack resource in WPF) with icon.ico shipped in the payload, so the tray icon always has an image.
  • Wait overlay — Shown for all long-running operations, matching the WPF app.
  • System info panel — The selected system's configuration summary now appears after selection and hides when games load; the game cache is invalidated after system edits instead of showing stale games.
  • Aspect-ratio changes — Card heights refresh through the binding instead of rescanning the library.
  • Filename preferences stay instant — Switching the filename display mode (Original / Clean Up / No Filename) or the machine-name toggle no longer rescans the entire library under the loading overlay; captions refresh in place, keeping the open system, filters, pagination and scroll position.

Migration & Scan Hardening

  • Migration gate — Database wins on merge (a reappearing stale file can never revert newer settings), a defaults-only settings.xml is ignored, newer-schema databases are left untouched, a timestamped pre-merge backup is taken, and the WPF and Avalonia migrations parse the legacy files identically.
  • Store scan handler — The async handler now catches and logs unexpected failures so they cannot escape as an unhandled exception.

Tooling

  • PBPSharp — Replaced the vendored library with the NuGet package 1.1.1.
  • Bundled tools — CHDStudio updated to 3.9.4 (Windows + Linux, x64 and ARM64, with the bundled chdman/7zz), RomValidator to 2.9.2 (Windows, x64 and ARM64, now with 7-Zip 26.03 7za helpers and the tool's XML docs) and SimpleZipDrive to 3.1.1 (Windows + Linux, x64 and ARM64); refreshed the default game image.
  • Dependencies — Meziantou.Analyzer 3.0.303, Mi...
Read more
Assets 10
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with heart emoji
All reactions
  • ❤️ 1 reaction
1 person reacted

Version 5.7.0

Version 5.7.0
@drpetersonfernandes drpetersonfernandes released this 08 Sep 02:16
release5.7.0
2df0b6e

Release 5.7.0

2026-09-07

RetroAchievements Compatibility Filter (Hash-Based)

  • Hash-based filtering — The "RetroAchievements-compatible games" filter now matches games by real ROM hash instead of fuzzy name matching.
  • Background hash scanning — Scans run off the UI thread with progress toasts, so the app never freezes while calculating hashes.
  • Archive-aware hashing — ROM content is hashed directly from .zip archives (and per-game zips) without extraction, so zipped games match their RetroAchievements entries.
  • Bundled hashing tool — Hashing is delegated to a bundled RetroAchievementsSharp CLI tool for accuracy and performance.
  • Updated RetroAchievements database — Refreshed RetroAchievements.dat with new systems and games.

Update Flow

  • Multi-source update fallback chain — Update checks now try the primary GitHub repository, then the transferred GitHub organization, then the secondary server (assets.purelogiccode.com), so updates keep working through the GitHub organization transfer.
  • Updater fixes — Fixed an updater bug where waiting for the app to exit could throw InvalidOperationException and abort the update; the updater now disposes process handles safely.
  • Download resilience — Raised the download timeout to 5 minutes so slow connections can complete large update packages.
  • Toast notifications — Replaced tray balloon notifications with modern toast notifications.

Launch Fixes

  • Missing emulator executable — Launching with an emulator whose executable no longer exists now shows an actionable dialog (with the configured path) instead of a generic error.
  • Invalid executable format — Games pointing at invalid executables (Win32 error 193) now show a direct, localized dialog explaining the problem instead of an error-log prompt.
  • Ymir — Archives are force-extracted before launching Ymir, since it does not support mounted archives.
  • Elevation — The elevation message now instructs users to disable the "Run as administrator" requirement on the emulator, and the Avalonia app gained an equivalent elevation dialog.
  • Parameter suggestions — System names are validated before calling the ParameterResolver API; API rejections and network failures are logged as info and handled gracefully.

Favorites & Play History

  • Rename/remove sync — Favorites and play history now stay in sync when systems are renamed or removed, in both the WPF and Avalonia apps.
  • Subfolder resolution — Favorites and play-history entries pointing to files stored in system-folder subfolders resolve correctly again.
  • Protection against wiping favorites — Favorites are never wiped when the systems file fails to load (e.g., corrupt or transient system.xml failure).

Easy Mode

  • Temp folder fix — Easy Mode downloads no longer fail when startup cleanup removes the temp folder; the folder is re-created on demand.

Other Fixes

  • Unified log path resolution — WPF and Avalonia now resolve log files identically; opening the log from dialogs always opens the actual rolling log file.
  • Storefront icon extraction — Fixed a DestroyIconW entry-point error that threw on every successful icon extraction (handle leak + false error reports).
  • Microsoft Windows folders — Windows/Microsoft Games folders are created before store scans, with a warning for protected locations.
  • Raine config window — Opening the Raine configuration window with a null emulator path no longer crashes; it prompts for the executable instead.
  • Edit System stability — Fixed a crash from WPF-only cursor definitions and refreshed sidebar counts after the dialog closes.
  • Debug window — No longer owned by the main window, so it stays usable independently.

Tooling

  • Dependencies — NAudio 3, Markdown.Avalonia 12, Meziantou.Analyzer 3.0.224 and other library updates.

Assets 6
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with heart emoji
All reactions
  • ❤️ 1 reaction
1 person reacted

release5.6.1

release5.6.1
@drpetersonfernandes drpetersonfernandes released this 11 Aug 05:59
release5.6.1
563cf4d

Update Check Fallback (Secondary Server)

  • Fallback when GitHub is unreachable — If the GitHub API cannot be reached (offline, rate-limited, blocked), the update check now falls back to the secondary server (assets.purelogiccode.com) using its version.txt file and hosted release packages.
  • Full update support on fallback — The fallback path resolves both the release package and the updater package, so the update window and automatic update work exactly as when GitHub is reachable.
  • Updater download fallback — If downloading the release from the primary source fails, the Updater retries from the secondary server automatically (progress bar resets between attempts).

Launch Fixes

  • List-view right-click "Launch Game" — Right-clicking a game in the list view and choosing "Launch Game" now launches with the emulator selected in the UI (falling back to the system's first configured emulator). Previously this path always failed with "SelectedEmulatorName is null or empty".

Language Launch Argument

  • --language startup argument — Launch SimpleLauncher with a specific language, e.g. SimpleLauncher.exe --language es. Supported codes load at startup; unsupported codes fall back to English without error.

Localization Fixes

  • Spanish & Turkish resources — strings.es.xaml and strings.tr.xaml are now embedded as pack resources and load correctly (bugs 64899-64904).

Updater UI

  • White log text and progress bar — The Updater window's log text and progress bar foreground are now white for a cleaner look.

Full Changelog: release5.6.0...release5.6.1

Assets 7
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick and mortlockpaul-arch reacted with heart emoji
All reactions
  • ❤️ 2 reactions
2 people reacted

release5.6.0

release5.6.0
@drpetersonfernandes drpetersonfernandes released this 09 Aug 19:06
release5.6.0
9b9eb48

Parameter Resolver API

  • "Suggest" buttons — Added to the Edit System window for every emulator parameter field.
  • AI-powered suggestions — An AI-powered API suggests the best emulator parameters based on the system configuration.
  • Confirmation before applying — Shows a dialog with the suggested parameter and an explanation before applying it.
  • Explanation: prefix handling — If the AI response starts with "Explanation:", that text is treated as the explanation and is no longer inserted into the emulator parameter field.
  • Loading overlay — Added a loading overlay to AI parameter resolution.
  • URL normalization — The AI parameter resolver URL is normalized (trailing slash) and uses a fixed 60-second timeout.

Image Matching Improvements

  • Annotation stripping — New EnableAnnotationStripping option strips region tags, revision numbers, and other annotations from filenames for better cover image matching.

Game File Watcher

  • New GameFileWatcherService — Monitors ROM system folders for external file changes (create, delete, rename) and automatically refreshes the game list when changes are detected.
  • Debouncing (500ms) — Avoids rapid re-scans during batch file operations like archive extraction.
  • Automatic start/stop — Watching starts and stops automatically when switching between systems.

7za Fallback Extraction

  • Automatic fallback to 7za — When SharpCompress fails to extract .7z files, the application now automatically retries using the bundled 7za.exe (or 7za_arm64.exe on ARM64).
  • Bundled binaries — Added 7za binaries to tools/SevenZip/ and tools/BatchConvertIsoToXiso/, plus 7za.exe / 7za_arm64.exe to BatchConvertToRVZ and BatchConvertToCHD for fallback extraction/conversion.

Batch File Path Validation

  • Pre-execution validation — Batch files are now validated before execution to detect referenced paths that do not exist.
  • Warning dialog — Shows a dialog listing the missing paths with the option to continue or cancel.
  • Direct execution — Batch files are now executed with UseShellExecute instead of cmd.exe /c for better compatibility.

OneDrive Error Handling

  • Specific OneDrive guidance — When a game file fails to launch and its path contains "OneDrive", the error message now provides specific instructions about syncing and downloading the file.
  • Localized message — Added the localized oneDriveIssue string across all supported languages.

Invalid Folder Character Validation

  • Path character validation — System folder and image folder paths are now validated for invalid path characters before attempting directory creation.
  • Clear error message — Shows a message listing the invalid characters found.

CHD Support

  • Kega Fusion — Added CHD support for the Kega Fusion emulator.
  • Exit code reporting — CHD mount failures now include the process exit code in error messages for easier debugging.
  • Dokan check — Added a Dokan installation check before CHD mount operations.
  • ARM64 support — CHD images are now mounted using the architecture-specific CHDMounter binary (CHDMounter.exe on x64, CHDMounter_arm64.exe on ARM64), enabling CHD mounting on Windows ARM64. The tool now ships with a README.

PCSX2 Improvements

  • Permission error detection — PCSX2 configuration injection now detects file permission errors and shows a user-friendly notification instead of crashing.
  • Portable mode — PCSX2 configuration injection now resolves the config file correctly when PCSX2 runs in portable mode.

History Database Format Migration

  • MessagePack format — Migrated history.xml to history.dat (MessagePack binary format) for faster loading and smaller file size.
  • Backward compatibility — Falls back to history.xml if history.dat is not found.

Global Search Enhancements

  • Results count — Shows the number of matching results in the global search window.
  • AND/OR operators — Supports boolean operators for more flexible search queries.
  • Improved loading state — Better visual feedback during search operations.

Debug Logger Improvements

  • Buffered logging — Debug log messages are now buffered for better performance.

Download Reliability

  • Automatic retry — Downloads now automatically retry with exponential backoff on failure.
  • Read-only file handling — Extraction now handles read-only files gracefully.

Startup Robustness

  • Fallback logger — If Serilog initialization fails, the app now falls back to debug output instead of crashing at startup.
  • Initialization order — The service provider is built only after the temp-folder check, and startup cleanup (trash + temp files) is more resilient.
  • Timeout handling — Added timeouts for the silent update check and usage statistics calls so they can no longer hang indefinitely.

F8 Hotkey Warning

  • Hotkey in use detection — When the F8 global hotkey cannot be registered because another program is already using it, Simple Launcher now shows a clear warning dialog and disables the screenshot functionality instead of failing silently. Localized in all supported languages.

RetroAchievements

  • Improved system matcher — Updated the RetroAchievements system matcher for better game matching.

Credential Protection

  • Encrypted RetroAchievements credentials — RA credentials are now encrypted using Windows Credential Manager.
  • Nested settings structure — Emulator configuration now uses a nested settings structure for better organization.

UI/UX Improvements

  • Cancel buttons — Added cancel buttons to the SetGamepadDeadZone, Debug, SetLinks, and EditSystem dialogs.
  • Tooltips — Added tooltips for data grids, preview images, and viewer windows.
  • Dead zone revert confirmation — Added a confirmation message box when reverting dead zone settings.
  • Game list refresh — The game list now automatically refreshes when deleting a file that no longer exists on disk.
  • Emergency overlay release — Added an emergency overlay release button to GlobalStatsWindow.

Debug Window Improvements

  • Restored initialization — The Debug Window opens correctly again: its constructor (lost during the Serilog/DI refactor) was restored, and the window now applies the current app theme on open.
  • Styling & closing behavior — Improved Debug Window styling, log text color, and closing/exception behavior.
  • -debug command-line flag — Launching SimpleLauncher with the -debug argument now opens the Debug Window alongside the main window.
  • parameters.md path fix — The parameters guide is now resolved relative to the application folder instead of the current working directory. Previously, launching the app from another working directory (shortcuts, scripts, IDE) made parameters.md appear "missing" and triggered a modal reinstall dialog that froze the app and the Debug Window.

Path Handling

  • Quote trimming — Surrounding quotes are now automatically trimmed from paths.

Structured Logging

  • Serilog — All logging now flows through Serilog (ILogger), and the custom ILogErrors abstraction was removed. The Debug Window receives log entries through a dedicated Serilog sink, a rolling daily file sink (7 days retained) is written to the local app data folder, and bug report sinks were added to all projects (including the tools and Updater).

Game List & UI

  • Async system manager loading — System managers load asynchronously, preventing UI blocking at startup.
  • Embedded images fix — Corrected pack URI paths for embedded images and icons.
  • Minimize-to-tray handling — Improved minimize-to-tray behavior via proper window state change handling.

Dependency Injection Refactoring

  • Massive DI migration — Replaced static service dependencies with dependency injection throughout the entire application.
  • Constructor injection — All services, ViewModels, and windows now use constructor injection.
  • MessageBoxLibrary.cs removed — Replaced with IMessageBoxLibraryService.
  • DebugLogger replaced — Static DebugLogger was replaced with the IDebugLogger interface.
  • ContextMenuFunctions replaced — Static ContextMenuFunctions was replaced with the IContextMenuFunctions interface.

MVVM Refactoring

  • Refactored all configuration windows to the MVVM pattern.
  • Refactored the RetroAchievements window to MVVM.
  • Added ViewModels for multiple windows, including SupportWindow.
  • Introduced the IWindowContext abstraction to decouple the game launcher from MainWindow.

Removed Tool

  • GameCoverScraper removed — The Game Cover Scraper tool has been removed from the Tools menu, along with all its bundled binaries and resources. Use Find Rom Cover or Retro Game Cover Downloader instead.

Other Improvements

  • Emulator documentation — Updated parameters.md (e.g., new CPCEC download link).
  • Code quality — The codebase now compiles with nullable reference types enabled.

Dependency Updates

  • SharpCompress 0.48.1 → 0.50.4
  • Tomlyn 2.4.0 → 2.6.0
  • YamlDotNet updated to latest version
  • MessagePack 3.1.6 → 3.1.8
  • Microsoft.Data.Sqlite 10.0.8 → 10.0.10
  • Microsoft.Extensions.* 10.0.8 → 10.0.10
  • Microsoft.Extensions.Http.Resilience 10.6.0 → 10.8.0
  • Microsoft.CodeAnalysis.NetAnalyzers 10.0.300 → 10.0.302
  • Microsoft.NET.Test.Sdk 18.5.1 → 18.6.0
  • SourceGear.sqlite3 updated to 3.53.4
  • Added Moq 4.20.72 (new, for unit testing)
  • Added Serilog 4.4.0 with Serilog.Sinks.Async 2.1.0, Serilog.Sinks.Debug 3.0.0, and Serilog.Sinks.File 7.0.0 (new)
  • Added Meziantou.Analyzer 3.0.139 (new)

Full Changelog: https://github.com/drpetersonfernandes/SimpleLa...

Read more
Assets 7
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with heart emoji
All reactions
  • ❤️ 1 reaction
1 person reacted

release5.5.0

release5.5.0
@drpetersonfernandes drpetersonfernandes released this 26 May 03:44
release5.5.0
7bb3131

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
  • SharpCompress → 0.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

Assets 7
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with hooray emoji
All reactions
  • 🎉 1 reaction
1 person reacted

release5.4.0

release5.4.0
@drpetersonfernandes drpetersonfernandes released this 11 May 01:02
release5.4.0
bac80c1

New Parameter Placeholder

  • Added %ROMSYSTEMFOLDER% placeholder that resolves to the specific system folder containing the ROM being launched.

RetroAchievements Integration

  • Improve the hashing of GameCube and Wii games with better support for RVZ, WBFS, GCZ, CISO, and WIA file formats.
  • Significantly expanded system name aliases for better matching (Nintendo N64, SEGA MEGA-CD, ARCADE - MAME, Nintendo - Game Boy Advance, and many more).

Dokan Installation Check

  • Integrated DokanService into the Updater that detects missing Dokan library and offers to download and install it after updates (x64/ARM64 support).
  • Enhanced CHD/ZIP mount error messages with specific Dokan exit code reasons (STATUS_DLL_NOT_FOUND, STATUS_ORDINAL_NOT_FOUND).

Enhanced Error Handling & Robustness

  • New RetroArch special characters in path detection (shows a clear message about mkdir permission denied).
  • MAME corrupted INI auto-restore from bundled sample when unknown option warnings are detected.
  • MAME error detection expanded to catch mame64, WRONG LENGTH, and Required files are missing patterns.
  • Protocol handler errors now show a localized message box instead of throwing an exception.
  • Guard against directory disappearance races during file enumeration.

Code Refactoring

  • Extracted RomHistoryLoader service from RomHistoryWindow for cleaner separation of concerns.

System Image Handling

  • Fix a bug while loading System image preview in the Edit System Window.

Unit Tests

  • New test suites for MameManager (corrupted/XML/empty dat files), RetroAchievementsManager, and RomHistoryLoader.
  • Added ServiceProviderMock helper for mocking App.ServiceProvider in unit tests.
  • Added test for XAML string key regex extraction.
  • Added auto-sorting tests for detecting and fixing alphabetical ordering issues in resource files.

Dependency Updates

  • SharpCompress 0.47.4 → 0.48.0
  • YamlDotNet 17.0.1 → 17.1.0
  • Microsoft.NET.Test.Sdk 18.4.0 → 18.5.1

Full Changelog: release5.3.3...release5.4.0

Assets 7
Loading

Uh oh!

There was an error while loading. Please reload this page.

vhick reacted with heart emoji
All reactions
  • ❤️ 1 reaction
1 person reacted
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.