Bug Fixes
- archive: cap the members an archive listing keeps (34b2b37)
- archive: extract tar and rar members by index (2369156)
- archive: read a member that is not first in a solid 7z (d32ac1e)
- archive: refuse 7z archives whose decoder would need more than 1536 MiB (3f82b1f)
- archive: report an unreadable archive in a recursive walk as skipped unless its name claims an image (2829862)
- archive: skip an archive whose member also sits unpacked beside or under it (99c3961)
- archive: stop staging a member past its declared size (916f70c)
- chd: exit non-zero when a recursive verify or in-place migrate fails a file (4dd7cdf)
- chd: honor gd-rom pad frames when extracting, hashing and inspecting chds (dc4020d)
- chd: validate unit size and reject oversubscribed map trees (f3b3c0c)
- ctr: copy twl content with the full 64-bit size (2a7fdeb)
- ctr: flag title-key encrypted cias and boot a cxi only from a bcxi in bundle info (df9199a)
- ctr: stage in-place rewrites under a temp name and accept read-only inputs (69bee99)
- ctr: validate tmd content info ranges before rebuilding hashes (f205046)
- cue: write the extracted iso through a scratch file and honor cancel (30a08fa)
- gui: accept iso on the psp and ps2 convert page and compress it to chd (fe8ae77)
- gui: carry the output directory into templated jobs (3fbabdf)
- gui: drop per-member output hints on the bundle page (3e1dca1)
- gui: echo every staged input on the merge and bundle pages (d49c591)
- gui: echo the conflict policy the job sends (c31369c)
- gui: keep modal text in the theme color (a8d0c72)
- gui: keep preset list fields editable while typing (8ad5429)
- gui: keep truncated paths reading left to right (94ce606)
- gui: let the runner name archive outputs on the ctr, ntr and nx pages (128c25c)
- gui: let the runner name nxemu outputs of archived and templated inputs (108dd12)
- gui: show the real default folder on the nx split and ctr unbundle pages (7b301f0)
- gui: stop offering rename on directory output pages (8d0f570)
- nx: bound pfs0 and hfs0 name offsets and decoded name size (66846e2)
- nx: cap and deduplicate xci root partitions when walking containers (0534f22)
- nx: hash rewritten nca prefixes in chunks and refuse entries past the end of the file when decrypting (7cfb46f)
- nx: reject overflowing romfs extents and cyclic hash chains (4b2a99e)
- nx: stage split outputs and publish them together (8805ba4)
- nx: strip compound suffixes without splitting utf-8 names (7ee7146)
- organize: anchor clean deletions and backups to directory handles (66ee418)
- organize: use a plain rename for backups on platforms without no-replace rename (ec10217)
- psp: write the extracted iso through a scratch file and honor cancel (5eac564)
- runner: let overwrite reruns regenerate walked outputs once their source was read (0ebe48b)
- runner: refuse a directory output path inside a directory input (d6a0102)
- runner: refuse a directory output that is its own input instead of deleting it (3a2cd5a)
- runner: run hash and fixdat writes on the blocking pool (7f181db)
- rvl: bound u8 directory ends and listed path size (3e10514)
- rvl: clamp banner texture coordinates before sampling (f63c521)
- util: keep a panicked worker pool from hanging its readers (8394481)
- util: write scratch outputs through the reserved file handle (91dad2a)
- vita: reject invalid utf-8 and duplicate pkg item paths (4133824)
- wup: cap decoded wua block size on the multi-frame path (0ff93ac)
- wup: read the company code prefix on a char boundary (2e51991)
- xbox: cap directory nesting depth (5bb90a9)
- xenon: refuse symlinked folders in the games on demand output tree (a175704)
- zar: reject case-insensitive duplicate entries when writing (4c17fe5)
- zar: reject invalid utf-8 entry names and duplicate extraction paths (9935929)
Features
- chd: compress dreamcast gdi sets into gd-rom chds across lib, cli and gui (cedb26b)
- ctr: bundle and unbundle Azahar .bcia/.bcci/.bcxi roms and inspect bundled titles across lib, cli and gui (33dcce4)
- gui: polish layouts, pickers and result views across every page and window size (519125a)
- nx: decrypt nsp and xci into nxemu dnsp and dxci across lib, cli and gui (4c26447)
- open archives in recursive batch runs and add -R to nx split and xenon convert (d4fdc75)
- organize: place multi-disc sets in per-game folders with --multi-disc-dirs (25411a6)