Releases: emmercm/igir
Release list
v5.4.0
Release Highlights
Feature: RVZ, GCZ, and WIA extraction without dolphin-tool
Up until this release, Igir had been relying on the dolphin-tool tool from the Dolphin team for extracting multiple compressed GameCube and Wii files (as most ROM managers do). This requires ROM managers to extract these compressed files to temporary files when deep scanning, increasing the time required and wear & tear on the hard drive. And depending on how the version of dolphin-tool was compiled, it may require installing other libraries to work, making installation & usage complicated.
Igir can now read and extract RVZ, GCZ, and WIA files natively, without the need for dolphin-tool or temporary files. Users should see substantial speedups when scanning or extracting these files. This update has the added benefit that Igir can now show meaningful progress bars when processing CHD files.
Fix: filename extension correction disabled by default for dir2dat
@sebbiecoe found some undesirable behavior where Igir was correcting (including stripping) filename extensions when using the dir2dat command. This behavior doesn't make sense because it only makes sense to generate dir2dat files from input files whose structure and naming you trust. The default --fix-extension auto mode will now skip extension correction when dir2dats are being generated. You can enable the old behavior by providing the --fix-extension always option.
I welcome everyone to keep submitting issues when you think Igir has default behavior that doesn't make sense or is surprising. Igir has an overall goal to have defaults that make the most sense for the largest number of people.
All changes
11 July 2026 - f80bb67 - v5.4.0 (#2377)
9 July 2026 - abf99fd - CI: stricter path filtering (#2376)
9 July 2026 - 70c7f97 - Fix: don't automatically correct extensions when generating a dir2dat (#2375)
9 July 2026 - 2c1b549 - Fix: only group dir2dat games in input subdirectories (#2374)
8 July 2026 - d76f02d - Chore: update dependency eslint-plugin-unicorn to v70 (#2373)
8 July 2026 - 2716eb3 - CI: check native addons for unexpected dependencies (#2372)
8 July 2026 - 39195de - CI: prebuild armv7 native addons (#2371)
8 July 2026 - 5e8b26a - Refactor: compile dolphin-tool as a native addon (#2365)
7 July 2026 - 616ac9f - CI: test postinstall script (#2370)
7 July 2026 - 9b73ba3 - Chore: update Scoop manifest to v5.3.1 (#2369)
v5.3.1
Release Highlights
Fix: RAR support in compiled executables
All prior v5.x.x compiled executables have an issue preventing RAR listing & extracting. This has been fixed.
Fix: Windows dolphin-tool in compiled executables
@JDIacobbo found an issue with the compiled executables not finding the bundled DolphinTool.exe. This has been fixed.
All changes
7 July 2026 - 102201f - v5.3.1 (#2368)
7 July 2026 - bb16a0d - CI: end-to-end parity test compiled binaries (#2366)
7 July 2026 - f8d6c45 - Fix: bundle 'node-unrar-js' WASM in Bun (#2367)
3 July 2026 - 721f527 - Docs: fixdat without input files (#2364)
3 July 2026 - 4e27989 - Chore: update actions/cache action to v6 (#2361)
3 July 2026 - c711b6f - Fix: write to a legal debug log path (#2363)
2 July 2026 - 9e9e970 - Chore: update dependency dolphin-tool to v0.2606.1 (#2362)
29 June 2026 - dbf0c45 - Chore: update ESLint (#2360)
29 June 2026 - bc687bd - Chore: update lockfile (#2359)
28 June 2026 - 62af136 - Chore: update lockfile (#2357)
28 June 2026 - b675136 - CI: fix *.cpp packaging glob (#2356)
28 June 2026 - 85ed1c2 - Chore: update Scoop manifest to v5.3.0 (#2355)
v5.3.0
Release Highlights
Feature: CHD extraction without chdman
Up until this release, Igir had been relying on the chdman tool from the MAME team for extracting CHD files (as most ROM managers do). This requires ROM managers to extract CHDs to temporary files when deep scanning, increasing the time required and wear & tear on the hard drive. And depending on how the version of chdman was compiled, it may require installing other libraries to work, making installation & usage complicated.
Igir can now read and extract all versions (v1-5) of CHD files natively, without the need for chdman or temporary files. Users should see substantial speedups when scanning or extracting all CHD files. This update has the added benefit that Igir can now show meaningful progress bars when processing CHD files.
Fix: correcting the extension of extensionless files
@dariaambrose found a bug where Igir would mangle filenames when Igir tried to correct the extension of files without an extension. This has been fixed. This primarily affected a subset of CHD files.
Feature: console output token updates
@jim-edwards reported two items that have both been addressed:
- Atari Jaguar CD was not being matched correctly, ROMs were being sorted into the Philips CD-i directory.
- Support for the VM Labs Nuon has been added (though only RomM recognizes it right now).
All changes
27 June 2026 - 0ff21fc - v5.3.0 (#2354)
27 June 2026 - 8812c15 - Fix: append extension when correcting extensionless files (#2324)
27 June 2026 - 0d6cf4c - Refactor: compile chdman as a native addon (#2276)
27 June 2026 - 58226ed - Chore: update dependency eslint-plugin-unicorn to v69 (#2353)
27 June 2026 - 80f6d39 - Fix: Atari Jaguar CD, add VM Labs NUON (#2352)
27 June 2026 - d56d066 - Chore: update dependency eslint-plugin-unicorn to v68 (#2350)
27 June 2026 - 6264473 - Chore: update dependency eslint-plugin-unicorn to v67 (#2349)
27 June 2026 - 935c1dd - CI: only slow down official ESLint package updates, not plugins (#2348)
27 June 2026 - 3649cc5 - Chore: update dependency eslint-plugin-unicorn to v66 (#2330)
27 June 2026 - a517482 - Chore: update dev dependencies (#2347)
27 June 2026 - cdffc16 - Chore: update dependency mkdocs-git-revision-date-localized-plugin to v1.5.3 (#2346)
27 June 2026 - 6959116 - Chore: update dependencies (#2345)
27 June 2026 - 4e6f9e4 - Chore: update dependency eslint to v10 (#2001)
27 June 2026 - bb6be45 - Refactor: remove 'eslint-plugin-import' (#2343)
27 June 2026 - 4ea690f - Chore: update ESLint (#2342)
27 June 2026 - 6849707 - CI: add clang-format and clang-tidy (#2340)
27 June 2026 - 6f1367d - Refactor: ROM scanning warnings (#2295)
26 June 2026 - 0cccc4f - Docs: update (#2341)
26 June 2026 - 313cc64 - Chore: update GitHub Actions (#2339)
26 June 2026 - b38db83 - CI: auto-merge Scoop bucket update PRs (#2337)
26 June 2026 - 6856bbf - Chore: update dependency dolphin-tool to v0.2606.0 (#2335)
26 June 2026 - 69bb9cb - Chore: migrate Renovate config (#2338)
26 June 2026 - 84db4e8 - Chore: update Scoop manifest to v5.2.1 (#2336)
v5.2.1
Release Highlights
This release brings a handful of bug fixes based on reports from community members. Thank you!
Fix: zero-byte files in zip archives
@Ooopz found a bug with copying or moving zip archives without extracting or re-zipping them. When the zip contained a zero-byte file (common with Nintendo DSi), Igir wouldn't match it correctly. This has been fixed.
Fix: large multi-file TorrentZip archives
@cmcginty found a bug with how Igir was creating TorrentZip archives with multiple files whose uncompressed size totalled >3.99GiB. This has been fixed.
TorrentZip files written with old versions of Igir are still valid zip files that Igir can read; they just aren't valid TorrentZip files. Their raw-file checksums would not have matched those of TorrentZip files produced by other ROM managers. Igir will overwrite old, invalid TorrentZip files if you provide the --overwrite-invalid option. RVZSTD files were not affected.
Fix: don't quick-scan checksums when testing files
When testing files because of the test command or the --overwrite-invalid option, checksums for files within archives in the output directory are now always calculated from their decompressed bytes. Previously, Igir might have trusted the checksums in the archive's file headers.
Fix: disc-merging GD-ROM CHDs
There was an issue where multi-disc Dreamcast GD-ROMs would duplicate the CHD for every track file if the --merge-discs option was used. This has been fixed.
All changes
26 June 2026 - 8a05980 - v5.2.1 (#2334)
26 June 2026 - c9edc23 - Chore: update Node.js (#2328)
26 June 2026 - c1e5e3e - Fix: match zero-byte files in zip archives (#2333)
25 June 2026 - 57a2b7c - Feature: warn users of invalid input archive headers (#2331)
25 June 2026 - 5f9f999 - Refactor: convert Logger to be a global, separate out Terminal functionality (#2329)
24 June 2026 - fd211d1 - Fix: TorrentZip CDFH version needed for zip64 (#2327)
23 June 2026 - 9e00ab2 - Chore: update dependency eslint-plugin-unicorn to v65 (#2322)
23 June 2026 - 460d596 - Refactor: remove 'node-disk-info' (#2325)
23 June 2026 - 37c97de - Fix: raw-copying merged GD-ROMs (#2323)
21 June 2026 - 4b97cea - Fix: force checksum calculation from bytes when testing (#2321)
21 June 2026 - c112019 - Refactor: report decimal-based (not binary-based) bytes on macOS (#2319)
21 June 2026 - 84e937a - Chore: update Scoop manifest to v5.2.0 (#2320)
21 June 2026 - 5464185 - CI: fix prebuild conflicts in merge queue (#2318)
21 June 2026 - c44eeb5 - CI: update Scoop bucket on release (#2317)
v5.2.0
Release Highlights
Optimization: built-in Node.js zlib library
CRC32 checksum calculation and Zstd decompression of zip archives now use Node.js' built-in zlib library. Node.js v24+ (and Bun v1.3.13+) use zlib-ng, which can take advantage of SIMD acceleration when possible for your CPU. That is to say, you should see a measurable speed improvement, and it is likely to improve over time.
The built-in Zstd support did require dropping support for Node.js v20, which reached the end of security update support on April 30th, 2026.
Fix: CD-ROM CHDs with disc merging
There was a bug with the --merge-discs option where CD-ROM CHDs were deemed "incomplete" and would not have been written to the output directory. This would have also incorrectly cleaned existing CD-ROM CHDs in the output directory. This has been fixed.
All changes
21 June 2026 - b802bb8 - v5.2.0 (#2316)
21 June 2026 - dac21c7 - CI: don't install libsdl2, libsdl2-ttf (#2315)
21 June 2026 - b699e0e - Chore: Bump js-yaml from 4.1.1 to 4.2.0 (#2314)
21 June 2026 - 1f69303 - Fix: match .cue/.bin CHDs for merged multi-disc games (#2312)
20 June 2026 - 77619e9 - Refactor: progress bar redraw optimizations (#2313)
20 June 2026 - 6c5f494 - Chore: Bump undici from 6.26.0 to 6.27.0 (#2310)
20 June 2026 - dce2e5a - Docs: add security policy (#2311)
20 June 2026 - 4e712ec - Chore: Bump vite from 8.0.14 to 8.0.16 (#2309)
20 June 2026 - 9f618b0 - Chore: update actions/checkout action to v7 (#2308)
19 June 2026 - ae1cd06 - Refactor: replace 'crc-32' with native zlib (#2303)
19 June 2026 - 20538bf - Chore: update dependency which to v7 (#2307)
19 June 2026 - a496613 - Chore: update dependency eslint-plugin-jsdoc to v63 (#2305)
19 June 2026 - 7307310 - Chore: update dependency node-gyp to v13 (#2306)
19 June 2026 - 8064f0e - Chore: update Node.js to v26.3.1 (#2302)
19 June 2026 - c6ee068 - Refactor: use native zstd decompressor (#2304)
17 June 2026 - e2a03ad - Chore: update Scoop manifest to v5.1.2 (#2301)
v5.1.2
Release Highlights
Feature: install on Windows via Scoop
Support for installing Igir on Windows via Scoop has been added. Scoop is a lot like Homebrew on macOS and Linux, and many applications, such as Bun and Deno, officially support it.
The Windows binary is also now compiled with an Igir logo, replacing the default Bun logo.
Refactor: non-overlapping dir letter ranges
An oversight has been fixed when using the --dir-letter --dir-letter-limit <limit> --dir-letter-group options together. Previously, letter ranges could overlap, producing subdirectories such as:
ROMs-Output/A-D/...
ROMs-Output/D-G/...
ROMs-Output/G-J/...
Now, letter ranges will not overlap, producing subdirectories such as:
ROMs-Output/A-C/...
ROMs-Output/D-F/...
ROMs-Output/G-J/...
Thank you @JosVerheij for the feedback!
Fix: double nesting merged disc subdirectories
A bug has been fixed where disc-based games would be nested under subdirectories based on the game name twice, once because of --merge-discs, and once because of --dir-game-subdir multiple/--dir-game-subdir always.
Thank you, @kevin2845, for the bug report, and @cookesan, for helping to debug!
All changes
17 June 2026 - a442eb8 - v5.1.2 (#2299)
17 June 2026 - 245660a - CI: update Scoop bucket on release (#2300)
17 June 2026 - c2448fe - Feature: add Scoop bucket (#2297)
17 June 2026 - 7b99ba0 - Chore: update to v7.5.16 [SECURITY] (#2298)
17 June 2026 - bf3d86c - Chore: update ESLint (#2292)
17 June 2026 - e5b78ef - CI: GitHub Action workflow concurrency updates (#2291)
17 June 2026 - 670d758 - Feature: add Windows executable icon (#2248)
16 June 2026 - 1375928 - Docs: separate and expand 1G1R documentation (#2293)
16 June 2026 - 2e1ba8d - Fix: don't double-nest merged disc subdirectories (#2296)
16 June 2026 - 14ba09a - Refactor: no overlapping dir letter ranges (#2294)
13 June 2026 - 3da6fc8 - Chore: update to v0.28.1 [SECURITY] (#2290)
12 June 2026 - 869d7f4 - Chore: update Node.js to v26.3.0 (#2287)
12 June 2026 - 6e04f71 - Refactor: replace Moment.js with custom code (#2288)
11 June 2026 - c8b75da - Chore: update Node.js to v26.2.0 (#2257)
11 June 2026 - 964229b - CI: GitHub Action security hardening (#2285)
v5.1.1
Release Highlights
This release fixes a bug with binary compilation from v5.1.0. It failed to include a necessary file, giving an error message similar to:
error: Cannot find module 'yargs/package.json' from '/$bunfs/root/index.js'
Thank you, @benjihan, for the speedy bug report!
All changes
10 June 2026 - 9f9869c - v5.1.1 (#2284)
10 June 2026 - 4dbf8a5 - Fix: yargs static locale shim compilation (#2283)
10 June 2026 - 773d773 - CI: check npm dependency licenses for compatibility (#2281)
9 June 2026 - 815e3c3 - Chore: update codecov/codecov-action action to v7 (#2279)
v5.1.0
Release Highlights
Feature: option to re-pad trimmed ROMs
A new --trim-add-padding option has been added to allow you to pad trimmed ROMs such that they match the size & checksums found in a matching DAT.
Feature: providing multiple patterns to regex options
--dat-name-regex <pattern>, --dat-name-regex-exclude <pattern>, --dat-description-regex <pattern>, --dat-description-regex-exclude <pattern>, --filter-regex <pattern>, --filter-regex-exclude <pattern>, --filter-category-regex <pattern>, --prefer-game-regex <pattern>, --prefer-rom-regex <pattern>, and --prefer-filename-regex <pattern> have all been updated to allow the option to be provided multiple times. When each option is provided multiple times, values will be used in an "or"/"any" fashion.
For example, --dat-name-regex "/Nintendo/i" --dat-name-regex "/Sega/i" now means "match any DAT whose name contains 'Nintendo' (case-insensitive) or 'Sega' (case-insensitive)."
Fix: MAME CHD disk naming & sorting
Two major fixes have been made for handling MAME DATs:
- CHD disks will always have the
.chdextension added. MAME requires this, but confusingly doesn't include it in the disk name in the DAT. - When zipping ROMs, CHD disks will always be put in a subdirectory using the machine's name (as if
--dir-game-subdir alwayswas provided, but only for CHD disks). MAME requires this sorting (and it helps deconflict files of the same name).
Thank you @cinnamonmatexfce for the bug report!
Fix: update to RVZSTD to match RomVault.
RomVault v3.7.6 changed how zero-byte/empty files are compressed in RVZSTD archives, and Igir has been updated to match. RVZSTD archives containing zero-byte files that were written by older versions of Igir (or RomVault) will have to be rewritten.
All changes
6 June 2026 - 842bcc0 - v5.1.0 (#2275)
5 June 2026 - 7806789 - Refactor: log file cache misses (#2272)
5 June 2026 - 2b64b40 - Fix: match RomVault v3.7.6's new behavior for zero-byte files (#2274)
5 June 2026 - 6c619c1 - Fix: MAME disk subdirectory, filename extension (#2273)
29 May 2026 - 5c47d3d - Chore: update dependency chdman to v0.288.1 (#2269)
29 May 2026 - c516c67 - Chore: update lockfile (#2268)
29 May 2026 - b1ffdf5 - Chore: update lockfile (#2267)
29 May 2026 - ef4136f - Chore: update dependency chdman to v0.288.0 (#2266)
28 May 2026 - e4c4c42 - Chore: update lockfile (#2264)
28 May 2026 - efab903 - Chore: update ESLint to v8.60.0 (#2265)
27 May 2026 - bb81f18 - Chore: update ESLint (#2262)
27 May 2026 - 9136d0a - Chore: update docs dependencies (#2263)
27 May 2026 - 1ccaa01 - Chore: update dev dependencies (#2261)
27 May 2026 - b2c9abc - Chore: update dependencies (#2260)
26 May 2026 - f6defb4 - Chore: update GitHub Actions (#2259)
22 May 2026 - d85e4eb - CI: add more dependency watchdog PR comments (#2253)
22 May 2026 - 45dce0b - Refactor: replace "@aws-crypto/crc32" with "crc-32" (#2254)
21 May 2026 - e493ce8 - Refactor: enable TypeScript noImplicitOverride (#2252)
21 May 2026 - d7f3487 - Feature: allow regex filter options to be specified multiple times (#2250)
21 May 2026 - 938bbfb - Feature: option to add paddings back to trimmed files (#2251)
19 May 2026 - 5d42541 - Feature: add support for parsing more zip date formats (#2246)
19 May 2026 - 86ca3ec - Fix: yargs static locale shim (#2247)
18 May 2026 - 6d21137 - Refactor: add missing JSDoc (#2245)
v5.0.2
Release Highlights
Fix: status calculation of games with disks
@glucosegrin found an issue where games with disks but no ROMs were always being reported as "found". This was incorrect, Igir's default options require disk files to be present for the game to be written. A positive side effect of fixing this is that the output location of disk files is now included in reports. This bug primarily affected MAME DATs.
Feature/fix: console output tokens
- The
{jelos}token has been renamed to{rocknix}, but you can keep using{jelos}for now. @Sparticuz added some missing consoles for the token, thank you! - A
{crossmix}token has been added for CrossMix-OS. Thank you @h1ghb1rd for the suggestion! - Various other tokens had consoles added or fixed.
Fix: bundled Linux tools compiled with musl
The bundled chdman, maxcso, and dolphin-tool Linux binaries are all now compiled with musl (instead of glibc). They are now fully statically compiled, with absolutely zero dependencies.
Other compilation optimizations were added, reducing the file size for both Linux and macOS.
All changes
17 May 2026 - 6a5b58b - v5.0.2 (#2243)
17 May 2026 - 39471ea - Fix: update console output tokens (#2241)
17 May 2026 - f5847ad - Docs: usage with muOS (#2240)
16 May 2026 - 1cbe8a8 - Feature: add {crossmix} output token (#2239)
16 May 2026 - 0eaa55e - Chore: update dependency Bun to v1.3.14 (#2238)
16 May 2026 - e014418 - CI: fix: various GitHub Action issues (#2237)
16 May 2026 - 7cbb2ee - CI: delete auto-merge disabler GHA workflow (#2236)
16 May 2026 - e0bef32 - Feature: rename JELOS token to ROCKNIX (#1690)
16 May 2026 - c6a553b - Chore: update Node.js to v26 (#2235)
16 May 2026 - 1e87e6d - Chore: Bump fast-uri from 3.1.0 to 3.1.2 (#2231)
15 May 2026 - ba65c12 - CI: Renovate: allow "unstable" versions (#2234)
15 May 2026 - 2896ef6 - Fix: consider disks when calculating statuses (#2233)
15 May 2026 - 8a9c742 - Chore: Bump fast-xml-builder from 1.1.5 to 1.2.0 (#2229)
15 May 2026 - 1642c11 - CI: fix: Dependabot PR auto-renaming (#2232)
15 May 2026 - 21d19c4 - Refactor: major source file reorganization (#2230)
4 May 2026 - 74ca6a4 - Chore: update Node.js to v24.15.0 (#2198)
4 May 2026 - 00a78bb - Docs: update alternatives table (#2224)
3 May 2026 - da903bd - Chore: update dependency dolphin-tool to v0.2603.4 (#2223)
3 May 2026 - 0dcfaaf - Chore: update dependency chdman to v0.287.1 (#2222)
3 May 2026 - 2728a59 - Chore: update ESLint (#2211)
3 May 2026 - 6d6bd91 - Chore: update lockfile (#2221)
3 May 2026 - 148ad66 - Chore: update dependency fast-xml-parser to v5.7.2 (#2220)
27 April 2026 - 5bc342f - Chore: update dependency ajv to v8.20.0 (#2219)
27 April 2026 - fba0f39 - Chore: update dev dependencies (#2217)
27 April 2026 - dc1024d - Chore: update docs dependencies (#2218)
27 April 2026 - 9e29f1f - Chore: update dependencies (#2216)
26 April 2026 - ca41aa5 - Chore: update GitHub Actions (#2215)
24 April 2026 - 60c02f6 - Chore: update dependency maxcso to v0.1130.16 (#2212)
23 April 2026 - 6e9f13f - Chore: update dependency fast-xml-parser to v5.7.0 [SECURITY] (#2210)
v5.0.1
Release Highlights
There was a regression in v5.0.0 with the GitHub release binaries that required AVX2-capable CPUs (Intel Haswell i#-4### series from 2013 and later, AMD Excavator from 2015 and later).
This has been fixed, but you will need an SSE4.2-capable CPU (Intel Nehalem i#-### series from 2008 and later, AMD Bulldozer from 2011 and later) to use the compiled binaries. If your CPU is older than that, you will need to use one of the Node.js-based installation options.
All changes
21 April 2026 - bc5f0e8 - v5.0.1 (#2209)
21 April 2026 - fc5f832 - Chore: update dependency Bun to v1.3.13 (#2208)
21 April 2026 - b5d0601 - CI: compile with "baseline" Bun versions (#2207)
21 April 2026 - 7c7d547 - Chore: update dependency eslint-plugin-simple-import-sort to v13 (#2204)
21 April 2026 - 5e7558d - Docs: add more badges to the installation page (#2205)
20 April 2026 - ada760a - CI: fix: can't comment on locked issues (#2203)
20 April 2026 - c0caf4d - CI: fix: release compilation workflow triggering (#2202)