github alucryd/oxyromon 0.25.0

one hour ago

Features

  • Added the MERGED strategy to rebuild-roms, storing each clone's files in its parent's ZIP, as ClrMamePro does
  • Added the purge-games subcommand, moving individual games' files to Trash, with a Delete action in the web UI and a purge_games MCP tool
  • Added -s/--system to purge-systems
  • Added -a/--arcade to import-dats, with an Arcade switch in the web UI and an arcade MCP parameter, to import game-based DATs such as FBNeo's as arcade systems
  • import-dats now reads MAME's and HBMAME's -listxml output directly
  • Added the mcp subcommand: a Model Context Protocol server on stdio, with progress notifications, cancellation, resources and prompts; --read-only exposes only the non-mutating tools, and purges need confirm: true
  • The web server also serves MCP over Streamable HTTP at /mcp, sharing its event stream with the web UI
  • Added Wii U support from the new wux-rs crate: import, check, convert and export WUX, and export WUDs and WUXs to WUA and NUS folders; its CLI (wuxrs) ships in the release archives too
  • Added the import-keys subcommand, storing Wii U keys from Cemu's keys.txt or a console's otp.bin in the data directory
  • import-keys also imports Switch keys from prod.keys and title.keys, checking them first; ~/.switch/prod.keys is still read when only title.keys were imported, or nothing
  • WUA is lossless: a WUA oxyROMon writes rebuilds its disc byte for byte, so it can be imported, checked, converted back to WUX or ISO, and set as PREFER_FORMAT; update partitions are shared in a hidden .update-partitions folder
  • Wii U updates and DLC import as games from No-Intro's CDN DAT, count as complete with their newest TMD, and are bundled into WUA exports
  • Exporting a Wii U update or DLC rebuilds the H3 files No-Intro's DAT sometimes leaves out
  • Importing a Wii U title keeps a ticket no DAT lists in a wiiu_tickets folder, and exports use it
  • create-dats lists a WUX as the WUD it holds and a Wii U title's folder as one game
  • Added the GAME_SUBFOLDERS setting (never, multiple or always), storing games in folders of their own, with multi-disc games sharing one folder with their playlist
  • Added the DISCARD_CATEGORIES setting, discarding games by the categories their DAT gives them, such as Redump's Demos and Coverdiscs, with a Discard Categories field in the web UI
  • Added the INFER_CLONES setting, grouping games by title for 1G1R when their DAT has no Parent-Clone data, as Redump's don't, with an Infer Clones switch in the web UI
  • Added the import-clone-lists subcommand, importing Retool's clone lists, which INFER_CLONES reads to group titles named differently across regions and to elect one of a region's releases by its priority

Changes

  • -s now means --system in every command with that option but config: check-roms --size has no short form any more, and import-irds and purge-irds gain -s
  • RVZ support now comes from the new rvz-rs crate, a port of Dolphin's RVZ code, instead of dolphin-tool; its CLI (rvzrs) ships in the release archives too
  • RVZ_BLOCK_SIZE is rounded up to a power of two, the only sizes up to 2 MiB that RVZ allows
  • WBFS support now comes from the new wbfs-rs crate, a port of wit, instead of wit, and exports from RVZ without decoding an ISO; its CLI (wbfsrs) ships in the release archives too
  • The nod feature is gone
  • Compressing a Wii ISO to RVZ or WBFS needs the Wii common key, which import-keys takes from a Wii's or a Wii U's otp.bin or BootMii's keys.bin
  • Removed the RVZ_SCRUB setting
  • 7z and ZIP support now always comes from the sevenz-rust2 and zip crates: 7-Zip is no longer needed, and the sevenz feature is gone
  • BPS and IPS support now comes from the new xps-rs crate, a port of Flips, instead of flips; its CLI (xpsrs) ships in the release archives too
  • XDELTA support now comes from the new xdelta-rs crate, a port of xdelta3, instead of xdelta3; its CLI (xdeltars) ships in the release archives too
  • CHD support now comes from the new chd-rs crate, a port of chdman, instead of chdman, for CDs, DVDs, hard disks and LaserDiscs; its CLI (chdrs) ships in the release archives too
  • CIA support now comes from the new cia-rs crate, a port of ctrtool, instead of ctrtool; its CLI (ciars) ships in the release archives too
  • oxyROMon no longer needs any external tool installed
  • The Docker image is now Alpine only, on latest and the version tags; the Arch Linux image and -alpine tags are gone
  • Editing a 7z now copies the untouched entries as they are instead of re-encoding them
  • purge-roms, and updates by import-dats, download-dats and import-irds, now delete the directories they leave empty
  • download-dats keeps going when a Redump system fails, and fails the run at the end naming each one
  • download-dats now fetches Redump DATs from redump.info, with its new systems; existing systems move over and take Redump's new names
  • Merged the web UI's Upload and Download menus into one Import menu
  • import-roms now says when it extracts files from an archive holding several games and leaves the archive in the source directory (#237)

Fixes

  • Fixed rebuild-roms -f skipping clones in sets already NON_MERGED or FULL_NON_MERGED
  • Fixed rebuild-roms computing completion with the strategy it rebuilt from
  • Fixed rebuild-roms leaving a parent's files in a clone's directory when another of the clone's files was missing
  • Fixed rebuild-roms naming a clone's loose copies after its parent's ROMs instead of its own, which check-roms then failed
  • Fixed rebuild-roms exiting silently when there are no arcade systems
  • Fixed import-dats slowing down on DATs with ROMs shared by many machines, such as HBMAME's
  • Fixed commands printing nothing but fatal errors when stderr is not a terminal
  • Fixed web UI and MCP actions colliding when run at the same time; they now run one at a time, and a waiting MCP tool can be cancelled
  • Fixed hard disk CHDs failing with "Not a valid rdsk" unless they began with an Amiga Rigid Disk Block
  • Fixed the web UI's system deletion dialog saying files are left on disk; they move to Trash
  • Fixed create-dats reading each file once per checksum, and sometimes writing a truncated DAT
  • Fixed import-roms sometimes hashing a CIA's TMD before its certificates were written
  • Fixed purge-systems, check-roms and import-dats panicking when two games own a file of the same name in Trash
  • Fixed import-roms panicking when "None" is picked at the ROM prompt
  • Fixed export-roms -f ORIGINAL putting an arcade game's files next to their directory instead of in it
  • Fixed converting a Wii U title's folder to 7Z or ZIP leaving its extensionless contents out, and writing the archive inside the folder
  • Fixed purge-roms -t skipping the ROM directory's own Trash
  • Fixed import-dats and download-dats dropping a system's custom name and extension on update
  • Fixed 7z extraction and rewrites holding whole entries in memory
  • Fixed ZIP copies panicking on an unreadable entry and reporting success on a failed write
  • Fixed a 7z and a ZIP of the same name sharing a scratch file
  • The desktop app's Debian package no longer depends on p7zip
  • Fixed download-dats panicking when redump.org or No-Intro is unreachable
  • Fixed the MCP download_dats tool reporting every system as downloaded
  • Fixed import-roms -s matching every system when the name matches none
  • Fixed purge-systems leaving behind the directories it emptied
  • Fixed rebuild-roms and check-roms panicking on loose files without an extension
  • Fixed check-roms, convert-roms and export-roms saying "No matching games found" for incomplete games
  • Fixed sort-roms ignoring LANGUAGES unless DISCARD_RELEASES or DISCARD_FLAGS was set
  • Fixed the CHD hard disk and LaserDisc settings refusing to be unset, and config -a reordering hard disk codecs
  • Fixed malformed or homebrew CIAs crashing the import instead of being reported
  • Fixed a server build after one with SKIP_TRUNK=true skipping trunk too

Don't miss a new oxyromon release

NewReleases is sending notifications on new releases.