Skip to content

0.22.0

Latest

Choose a tag to compare

@alucryd alucryd released this 09 Aug 20:47
0.22.0

Features

  • Added per-system settings, with automatic fallback to the global value
  • Added -n/--system flag to config to 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/--update flag to import-dats to only import DATs for systems already in the database
  • Improved ZIP support in import-dats to find .dat files 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 nod feature to handle RVZ and WBFS natively instead of shelling out to dolphin-tool and wit
  • Added an optional sevenz feature to read archives and write ZIP natively instead of spawning 7-Zip
  • Added real progress bars to RVZ and WBFS conversions with the nod feature

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_PNPM build environment variable with SKIP_TRUNK
  • Replaced the cdfs git dependency with a native ISO 9660 reader vendored from opticaldiscs

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 nod feature
  • 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-roms output 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::LazyLock over lazy_static, no more extern crate
  • Simplified the main() subcommand dispatch using matches.subcommand() destructuring
  • Removed dead code, test-only helpers are now gated behind #[cfg(test)]
  • Migrated error handling from simple-error to anyhow, errors now carry a full context chain
  • Extracted the hashing and comparison helpers out of CommonRomfile
  • Deduplicated the partition-by-extension blocks in convert-roms and export-roms (~560 lines)
  • Unified convert-roms/export-roms CSO and ZSO handling behind a shared decoding layer (~440 lines)
  • Moved convert-roms/export-roms NSZ, RVZ and WBFS handling onto the shared decoding layer
  • Simplified convert-roms CHD handling
  • Simplified convert-roms back-to-original handling
  • Extracted CUE/BIN and CHD parsing helpers into transcode.rs
  • Added a run_tool helper that centralizes external tool invocation

Fixes

  • Fixed RVZ_COMPRESSION_ALGORITHM never having worked when set to bzip2, it was spelled bzip
  • 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 --recompress leaving a stray intermediate .iso
  • Fixed convert-roms -f chd failing on standalone RIFF (LaserDisc) images
  • Fixed convert-roms -f original and export-roms -f original mispartitioning Switch files