GeezerVison is showing github.com — Release Version 5.8.0 · purelogiccode/SimpleLauncher
·
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).
Assets
10
Loading
Uh oh!
There was an error while loading. Please reload this page.
vhick reacted with heart emoji
1 person reacted
|