Features
- Added per-system settings, with automatic fallback to the global value
- Added
-n/--systemflag toconfigto scope operations to a specific system (supports%globs) - Added per-system settings to the web UI, from a dropdown on each system entry
- Added romfile download support to the web UI
- Added an About modal to the web UI, showing version, dependencies and statistics
- Added DAT import to the web UI
- Added Redump DAT download and update to the web UI
- Added notification history to the web UI
- Added
-u/--updateflag toimport-datsto only import DATs for systems already in the database - Improved ZIP support in
import-datsto find.datfiles in subdirectories (supports daily dat-o-matic packs) - Added an optional native desktop app built with Tauri, sharing the CLI's database and settings
- Added an optional
nodfeature to handle RVZ and WBFS natively instead of shelling out todolphin-toolandwit - Added an optional
sevenzfeature to read archives and write ZIP natively instead of spawning 7-Zip - Added real progress bars to RVZ and WBFS conversions with the
nodfeature
Changes
- Rewrote the web UI in Rust using Leptos, replacing the Svelte/Flowbite frontend
- Rebuilt the web UI on Web Awesome components
- Dropped Tailwind CSS, the UI is now styled by Web Awesome and a small stylesheet
- Made the web UI's three columns resizable, positions are remembered across visits
- Restored the per-field descriptions in the settings dialog
- Replaced the
SKIP_PNPMbuild environment variable withSKIP_TRUNK - Replaced the
cdfsgit dependency with a native ISO 9660 reader vendored fromopticaldiscs
Improvements
- Sizes and notification times in the web UI now follow the reader's locale
- Notifications in the web UI now stack instead of replacing one another
- Checking an RVZ no longer extracts it to a temporary ISO with the
nodfeature - Optimized dependencies in the dev profile, debug builds and the test suite are much faster
- Overhauled web UI colors for improved readability in both light and dark themes
- Fixed statistics table header color in light mode to match the systems and games table headers
- Overhauled CLI output for a cleaner, more consistent terminal experience
- Progress bars and log messages no longer overlap or corrupt each other
- Standardized messaging across all commands with clear icons and color coding
- Improved
check-romsoutput with per-system pass/fail summary - Revamped statistics card in the web UI with a tiled layout
- Revamped settings modal in the web UI with a two-column layout for easier navigation
- Cleaned up the entire codebase to be clippy-clean (~900 warnings)
- Modernized idioms:
std::sync::LazyLockoverlazy_static, no moreextern crate - Simplified the
main()subcommand dispatch usingmatches.subcommand()destructuring - Removed dead code, test-only helpers are now gated behind
#[cfg(test)] - Migrated error handling from
simple-errortoanyhow, errors now carry a full context chain - Extracted the hashing and comparison helpers out of
CommonRomfile - Deduplicated the partition-by-extension blocks in
convert-romsandexport-roms(~560 lines) - Unified
convert-roms/export-romsCSO and ZSO handling behind a shared decoding layer (~440 lines) - Moved
convert-roms/export-romsNSZ, RVZ and WBFS handling onto the shared decoding layer - Simplified
convert-romsCHD handling - Simplified
convert-romsback-to-original handling - Extracted CUE/BIN and CHD parsing helpers into
transcode.rs - Added a
run_toolhelper that centralizes external tool invocation
Fixes
- Fixed
RVZ_COMPRESSION_ALGORITHMnever having worked when set to bzip2, it was spelledbzip - Fixed the notification list in the web UI not opening, it was clipped by the navbar
- Fixed the notification count badge sitting off the bell in the web UI
- Fixed the system actions menu in the web UI being clipped by its pane, and given proper alignment and hover
- Fixed the statistics card shifting up in the web UI whenever a modal opened
- Fixed the server not shutting down cleanly on Ctrl+C when SSE clients were connected
- Fixed
convert-roms -f rvz --recompressleaving a stray intermediate.iso - Fixed
convert-roms -f chdfailing on standalone RIFF (LaserDisc) images - Fixed
convert-roms -f originalandexport-roms -f originalmispartitioning Switch files