Skip to content

Version 5.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Oct 05:41
· 3 commits to 5c98b4e092f232a18cf147deb81d4c2759915754 since this release

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, Microsoft.CodeAnalysis.NetAnalyzers 10.0.402, Microsoft.Extensions.* / Microsoft.Data.Sqlite 10.0.13, MessagePack 3.1.12, Microsoft.Extensions.Http.Resilience 10.10.0, NAudio 3.1.0, NLayer 3.0.0 + NLayer.NAudioSupport 3.0.0 (managed MP3 decoding on Linux/macOS).
  • Zero analyzer warnings across all projects; both test suites pass.

Bundled Tools Refresh

  • XISOStudio replaces the ISO→XISO batch tool — The Tools menu entry now launches XISOStudio for extracting/creating XISO (Xbox) images; it ships native Windows (x64/ARM64) and Linux (x64/ARM64) payloads.
  • CHDStudio replaces the CHD batch tool — The CHD conversion entry now launches CHDStudio; the bundled chdman used by the app for CHD→ISO/CUE/BIN conversions ships inside tools\CHDStudio\<arch>\.
  • RVZStudio replaces the RVZ batch tool — The GameCube/Wii conversion entry now launches RVZStudio with DolphinTool bundled beside it under tools\RVZStudio\<arch>\.
  • CHDMounter goes cross-platform — One payload per OS/architecture; on Linux CHD images mount through FUSE with a clean unmount (SIGTERM, fusermount3/umount fallback) and the managed CHDSharp conversion as the automatic fallback.
  • SimpleXisoDrive — Mounts cso/zar Xbox images for xemu by generating the image.iso the emulator expects.
  • Linux FUSE mounts for archives and Xbox images — SimpleZipDrive 3.1.1 and SimpleXisoDrive 1.5.0 now ship Linux (x64/ARM64) builds: ZIP/7Z/RAR launches (RPCS3/ScummVM/XBLA) mount through FUSE instead of extracting to temp, and Xbox images (.iso/.xiso/.cso/.chd/.zar) mount through SimpleXisoDrive — including Xbox ISO CHD images via on-demand hunk decompression — for xemu/Cxbx-Reloaded; the extraction/conversion paths stay as automatic fallbacks.
  • FindRomCover 3.3.0 goes cross-platform — It now ships Linux (x64/ARM64) payloads and appears in the Linux Tools menu.
  • RetroAchievementsSharp 1.0.0 — The CLI ships per OS/architecture as RetroAchievementsSharp.Cli (.exe on Windows) and is resolved from tools\RetroAchievementsSharp\<rid>\.
  • Per-RID tool payloads — FindRomCover, RetroAchievementsSharp, SimpleXisoDrive and SimpleZipDrive now use the same one-folder-per-OS/architecture layout as the studios; both packaging scripts keep only the target RID and the Linux package marks the tool binaries executable.
  • Release packaging — The Windows and Linux packaging scripts keep only the running platform's tool payloads; the Linux ZIP marks bundled tools executable.

Update & Download Reliability

  • Locked update files — The updater now waits (and retries) for files locked by a running instance before swapping the install (#67442–#67445).
  • Single-file emulator downloads — Downloads that are a single executable (for example .AppImage) are installed directly instead of being treated as an archive (#67537).
  • Cancelled/stalled downloads — Cancelled downloads delete their partial files, and stalled transfers time out and retry with the canceled read kept as the inner exception.
  • Update checks — Network timeouts and missing update assets for the current platform are logged as information instead of errors (LB-23).

Emulator Launch & Parameters

  • Stray line breaks are erased — CR/LF in emulator parameters are collapsed on save (Edit System and AI suggestions) and again at launch, so a pasted empty line can never corrupt the command line (bug #67575).
  • Legacy placeholders resolve — %ROMFILE%, %ROMNAME%, %GAME% and the $…$/{…} variants now resolve to the current ROM instead of being passed literally; RetroArch's -L is only recognized as a standalone token.
  • Grounded AI parameter fix — MAME "Unknown system" failures caused by a full ROM path get a bare-machine-name hint, and the AI parameter resolver receives the real launch-failure context (exit code, emulator output, local diagnosis).
  • Expected emulator conditions stay out of bug reports — Access violations (including RPCS3 guest crashes), ERROR_NO_UNICODE_TRANSLATION (1113), Unicode/ANSI path failures, policy-blocked executables, STATUS_DLL_NOT_FOUND, unclassified emulator exits, missing MAME ROM-set/image errors and canceled UI operations are logged as information, never filed as bugs.
  • mame.dat failures — A missing/corrupt mame.dat reports after the main window exists (corrupt files offer auto-reinstall), and the app now quits on missing required files instead of hanging.
  • Windows audio fallback — Managed MP3/WAV decoding now ships on Windows too, so a missing Media Foundation no longer breaks UI sounds.
  • System image replacement — Downloading an image over one held open by a viewer/thumbnail generator no longer fails (temp file + rename; bug #67779).

RetroAchievements

  • Classification matches the bundled CLI — The system picker and hashing now follow the CLI's supported-console switch exactly: Wii U, PC-9800 and Zeebo are blocked, while C64, ZX Spectrum, Oric, SCV, Uzebox, TIC-80, TI-83, Elektor, VC4000 and Arcadia are hashable; Sega Model 2 no longer steals the Arcade name.
  • More aliases — 'Sega Mega Drive (Sega Genesis)', 'PSP GOLD', Famicom/FDS spellings and 'DREAMCAST NAOMI' resolve to the right consoles, and the "no system selected" placeholder is no longer logged as an unmatched system.

Avalonia & UI Fixes

  • Audio never blocks the UI — UI sounds play on a dedicated background thread, so a wedged audio stop/dispose cannot freeze the UI or shutdown.
  • Dialogs stay with their window — Message dialogs are owned by the active window, so Easy Mode dialogs are no longer hidden behind the main window.
  • Card overlay & button size — The card overlay buttons and button-size controls are wired to the Options menu; the "Show Games" cover filter, DataGrid Enter launch and search-cancel behavior were repaired.
  • Adaptive theme — The Adaptive base theme resolves the machine's light/dark preference on Linux (gsettings) with a bounded timeout, falling back to Avalonia's platform settings.
  • Single instance across sessions — A per-user lock file now enforces single-instance on Linux even for instances started in another session; the lock file is authoritative, so a simultaneous double launch can never leave both processes quitting.
  • Preferences window — Navigating the Preferences list no longer crashes while the window is loading.

Easy Mode

  • Fallback XML parsed in memory — Easy Mode parses its fallback XML without touching temp files and stops reporting expected conditions as bugs.
  • Every emulator/core format installs on Linux — Single-file and archive downloads (including .AppImage) install for all bundled emulators/cores.

Accessibility

  • Accessible names everywhere — Every interactive control (inputs, sliders, grids, status/progress) exposes an accessible name, a stable automation id and polite live settings where it reports status, so Narrator/NVDA on Windows and Orca/AT-SPI on Linux can identify and drive the UI; guardrail tests fail on missing names.

Dependency Updates

  • Avalonia 12.1.4, Roslynator 5.0.1, Meziantou.Analyzer 3.0.299, MessagePack 3.1.11, SharpCompress 0.50.5, PBPSharp 1.1.4, xunit.runner 4.0.1 (supersedes the versions listed above).