{"id":135846,"date":"2026-08-10T21:38:45","date_gmt":"2026-08-10T19:38:45","guid":{"rendered":"https:\/\/www.emu-france.com\/?p=135846"},"modified":"2026-08-10T21:38:45","modified_gmt":"2026-08-10T19:38:45","slug":"utilitaires-multi-systemes-oxyromon-v0-22","status":"publish","type":"post","link":"https:\/\/www.emu-france.com\/?p=135846","title":{"rendered":"[Utilitaires Multi-systemes] Oxyromon v0.22"},"content":{"rendered":"<p><strong>OxyROMon <\/strong>est un gestionnaire de ROM multi-plateforme \u00e9crit en Rust (il est donc plut\u00f4t vou\u00e9 \u00e0 \u00eatre install\u00e9 sur un serveur, mais peut aussi tr\u00e8s bien s&rsquo;utiliser sur un PC). Comme la plupart des gestionnaires de ROM, il v\u00e9rifie les fichiers ROM par rapport aux bases de donn\u00e9es connues. Il est con\u00e7u principalement dans un objectif d&rsquo;archivage.<br \/>\n&nbsp;<br \/>\n<a href=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2021\/03\/oxyroms.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-66893\" src=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2021\/03\/oxyroms.png\" alt=\"\" width=\"345\" height=\"170\" srcset=\"https:\/\/www.emu-france.com\/wp-content\/uploads\/2021\/03\/oxyroms.png 673w, https:\/\/www.emu-france.com\/wp-content\/uploads\/2021\/03\/oxyroms-300x148.png 300w\" sizes=\"auto, (max-width: 345px) 100vw, 345px\" \/><\/a><br \/>\n&nbsp;<\/p>\n<p>Les changements sont les suivants:<br \/>\n&nbsp;<br \/>\n<em>Features<br \/>\n&#8211; Added per-system settings, with automatic fallback to the global value<br \/>\n&#8211; Added -n\/&#8211;system flag to config to scope operations to a specific system (supports % globs)<br \/>\n&#8211; Added per-system settings to the web UI, from a dropdown on each system entry<br \/>\n&#8211; Added romfile download support to the web UI<br \/>\n&#8211; Added an About modal to the web UI, showing version, dependencies and statistics<br \/>\n&#8211; Added DAT import to the web UI<br \/>\n&#8211; Added Redump DAT download and update to the web UI<br \/>\n&#8211; Added notification history to the web UI<br \/>\n&#8211; Added -u\/&#8211;update flag to import-dats to only import DATs for systems already in the database<br \/>\n&#8211; Improved ZIP support in import-dats to find .dat files in subdirectories (supports daily dat-o-matic packs)<br \/>\n&#8211; Added an optional native desktop app built with Tauri, sharing the CLI&rsquo;s database and settings<br \/>\n&#8211; Added an optional nod feature to handle RVZ and WBFS natively instead of shelling out to dolphin-tool and wit<br \/>\n&#8211; Added an optional sevenz feature to read archives and write ZIP natively instead of spawning 7-Zip<br \/>\n&#8211; Added real progress bars to RVZ and WBFS conversions with the nod feature<br \/>\n&nbsp;<br \/>\nChanges<br \/>\n&#8211; Rewrote the web UI in Rust using Leptos, replacing the Svelte\/Flowbite frontend<br \/>\n&#8211; Rebuilt the web UI on Web Awesome components<br \/>\n&#8211; Dropped Tailwind CSS, the UI is now styled by Web Awesome and a small stylesheet<br \/>\n&#8211; Made the web UI&rsquo;s three columns resizable, positions are remembered across visits<br \/>\n&#8211; Restored the per-field descriptions in the settings dialog<br \/>\n&#8211; Replaced the SKIP_PNPM build environment variable with SKIP_TRUNK<br \/>\n&#8211; Replaced the cdfs git dependency with a native ISO 9660 reader vendored from opticaldiscs<br \/>\n&nbsp;<br \/>\nImprovements<br \/>\n&#8211; Sizes and notification times in the web UI now follow the reader&rsquo;s locale<br \/>\n&#8211; Notifications in the web UI now stack instead of replacing one another<br \/>\n&#8211; Checking an RVZ no longer extracts it to a temporary ISO with the nod feature<br \/>\n&#8211; Optimized dependencies in the dev profile, debug builds and the test suite are much faster<br \/>\n&#8211; Overhauled web UI colors for improved readability in both light and dark themes<br \/>\n&#8211; Fixed statistics table header color in light mode to match the systems and games table headers<br \/>\n&#8211; Overhauled CLI output for a cleaner, more consistent terminal experience<br \/>\n&#8211; Progress bars and log messages no longer overlap or corrupt each other<br \/>\n&#8211; Standardized messaging across all commands with clear icons and color coding<br \/>\n&#8211; Improved check-roms output with per-system pass\/fail summary<br \/>\n&#8211; Revamped statistics card in the web UI with a tiled layout<br \/>\n&#8211; Revamped settings modal in the web UI with a two-column layout for easier navigation<br \/>\n&#8211; Cleaned up the entire codebase to be clippy-clean (~900 warnings)<br \/>\n&#8211; Modernized idioms: std::sync::LazyLock over lazy_static, no more extern crate<br \/>\n&#8211; Simplified the main() subcommand dispatch using matches.subcommand() destructuring<br \/>\n&#8211; Removed dead code, test-only helpers are now gated behind #[cfg(test)]<br \/>\n&#8211; Migrated error handling from simple-error to anyhow, errors now carry a full context chain<br \/>\n&#8211; Extracted the hashing and comparison helpers out of CommonRomfile<br \/>\n&#8211; Deduplicated the partition-by-extension blocks in convert-roms and export-roms (~560 lines)<br \/>\n&#8211; Unified convert-roms\/export-roms CSO and ZSO handling behind a shared decoding layer (~440 lines)<br \/>\n&#8211; Moved convert-roms\/export-roms NSZ, RVZ and WBFS handling onto the shared decoding layer<br \/>\n&#8211; Simplified convert-roms CHD handling<br \/>\n&#8211; Simplified convert-roms back-to-original handling<br \/>\n&#8211; Extracted CUE\/BIN and CHD parsing helpers into transcode.rs<br \/>\n&#8211; Added a run_tool helper that centralizes external tool invocation<br \/>\n&nbsp;<br \/>\nFixes<br \/>\n&#8211; Fixed RVZ_COMPRESSION_ALGORITHM never having worked when set to bzip2, it was spelled bzip<br \/>\n&#8211; Fixed the notification list in the web UI not opening, it was clipped by the navbar<br \/>\n&#8211; Fixed the notification count badge sitting off the bell in the web UI<br \/>\n&#8211; Fixed the system actions menu in the web UI being clipped by its pane, and given proper alignment and hover<br \/>\n&#8211; Fixed the statistics card shifting up in the web UI whenever a modal opened<br \/>\n&#8211; Fixed the server not shutting down cleanly on Ctrl+C when SSE clients were connected<br \/>\n&#8211; Fixed convert-roms -f rvz &#8211;recompress leaving a stray intermediate .iso<br \/>\n&#8211; Fixed convert-roms -f chd failing on standalone RIFF (LaserDisc) images<br \/>\n&#8211; Fixed convert-roms -f original and export-roms -f original mispartitioning Switch files<\/em><\/p>\n<p>&nbsp;<\/p>\n<p class=\"p_telecharger_icone_zip\"><a class=\"telecharger_icone_zip\" href=\"https:\/\/www.emu-france.com\/?wpfb_dl=7853\" title=\"Download Oxyromon\">T\u00e9l\u00e9charger Oxyromon v0.22 (5.2 Mo)<\/a><\/p>\n<p class=\"p_site_officiel\"><a class=\"site_officiel\" href=\"https:\/\/github.com\/alucryd\/oxyromon\/\" target=\"_blank\" rel=\"noopener noreferrer\">Site Officiel<\/a><\/p>\n<p class=\"p_en_savoir_plus\"><a class=\"en_savoir_plus\" href=\"https:\/\/www.emu-france.com\/utilitaires\/24-utilitaires-multi-systemes\/316-managers\/\">En savoir plus&#8230;<\/a><\/p>\n<div class=\"fcbkbttn_buttons_block\" id=\"fcbkbttn_left\"><div class=\"fb-share-button  \" data-href=\"https:\/\/www.emu-france.com\/?p=135846\" data-type=\"button_count\" data-size=\"small\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>OxyROMon est un gestionnaire de ROM multi-plateforme \u00e9crit en Rust (il est donc plut\u00f4t vou\u00e9 \u00e0 \u00eatre install\u00e9 sur un serveur, mais peut aussi tr\u00e8s bien s&rsquo;utiliser sur un PC). Comme la plupart des gestionnaires de ROM, il v\u00e9rifie les &#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-135846","post","type-post","status-publish","format-standard","hentry","category-par-defaut","uentry","postonpage-1","odd","post-author-Jets"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/pKi2R-zl4","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/135846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=135846"}],"version-history":[{"count":1,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/135846\/revisions"}],"predecessor-version":[{"id":135847,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=\/wp\/v2\/posts\/135846\/revisions\/135847"}],"wp:attachment":[{"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=135846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=135846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emu-france.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=135846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}