Skip to content

Releases: emmercm/igir

v5.0.1

21 Apr 20:06
Immutable release. Only release title and notes can be modified.
bc5f0e8

Choose a tag to compare

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)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian

v5.0.0

20 Apr 05:38
Immutable release. Only release title and notes can be modified.
9a0e251

Choose a tag to compare

Release highlights

Each release of Igir strengthens my belief that it continues to be the most powerful, flexible, and feature-rich ROM manager available. This release includes probably 100 hours of effort, which I hope is visible.

Almost every page of documentation has been updated for accuracy, completeness, and clarity. A new page with guiding principles has been added to better explain the intentions of Igir and its behavior.

Thank you to everyone who contributes to the project in any way. Thank you to long-time sponsors @dcramer, @rommapp, and @chrisdrackett; and thank you to everyone who sponsors privately or one-off. Thank you to users who submit detailed bug reports respectfully, and thank you to users who submit thoughtful feature requests.

As is tradition, I like to include some Igir by the numbers on major version releases:

  • 38k lines of code and documentation changed since v4.3.2
  • 16 community members have contributed code or documentation (+7/+78% from v4.0.0)
  • 803 stars on GitHub (+260/+48% from v4.0.0)
  • 52k lifetime downloads across all channels (+15.5k/+42% from v4.0.0)

Now, onto the good stuff...

⛓️ Modern compilation

The binaries included in GitHub releases are now compiled with Bun. Bun is a JavaScript runtime and bundler recently acquired by Anthropic (the makers of Claude Code). Bun outperforms Node.js/V8 on most startup time and execution speed benchmarks, and crucially, has native tools to bundle JavaScript into executables.

Igir will remain compatible with Node.js, no Bun-exclusive libraries will be used.

🏎️ Huge performance improvements

Making Igir compatible with Bun unlocked the ability to use Bun's profiler, which is much easier to work with than Node.js'. The profiler helped provide insight into wasted CPU cycles and memory allocations. This release should make Igir the fastest it's been in a long time, no matter what runtime is used.

Many of the speedups are coming from optimizations in concurrency/promise management. To keep contention (and I/O thrash) low, the default reader thread count has been reduced 8→6, and the reader thread count has been reduced 4→3.

All of this performance profiling also led to...

🗄️ Cache performance, structure improvements

Some major improvements have been made to caching behavior:

  • These calculations are now stored under file checksum(s) rather than file paths, eliminating cache misses due to file moves:
  • TorrentZip validations are now cached, speeding up candidate generation.
  • File checksums calculated when testing output files are now stored in the cache, speeding up subsequent scans. Thank you, @noah978, for the suggestion!
  • ROM headers, file signatures, and ROM paddings are now keyed in a way that won't invalidate existing cache entries when support for more headers, signatures, and paddings is added.

Unfortunately, to support Bun, the cache format needed to change, so your existing cache files can't be used and will be overwritten. But the new, standardized format can now be analyzed by humans, and it's better documented.

Other features

Several new CLI options have been added:

Other improvements

Many improvements and bug fixes have been implemented, some notable ones being:

  • .7z and .gz archives are now parsed & extracted without using an external 7za binary. This was somewhat necessary to unlock executable bundling with Bun.
  • Per-file progress bars have been added to DAT/ROM/patch scanning, ROM trim detection, raw archive checksum calculation, output testing, and directory cleaning.
  • DAT files can be downloaded from http:// URLs in addition to https:// now. Thank you, @Ooopz, for the bug fix!
  • Multi-disc games in HTGD DATs won't have their output paths needlessly nested. Thank you,@JosVerheij, for the bug fix!

All changes

20 April 2026 - 9a0e251 - v5.0.0 (#2201)
20 April 2026 - c1f5ca2 - Chore: update dependency dolphin-tool to v0.2603.3 (#2200)
20 April 2026 - ef08dc4 - Chore: update dependency maxcso to v0.1130.15 (#2199)
20 April 2026 - eb42002 - Chore: update dependency typescript to v6.0.3 (#2197)
19 April 2026 - 18051ae - CI: fix: Bun bundling external executables (#2196)
19 April 2026 - e693cc6 - CI: fix: Bun compilation on Linux (#2195)
19 April 2026 - 21f2c63 - Docs: page moves (#2194)
19 April 2026 - 71a8cd3 - Refactor: Bun compilation tweaks (#2192)
19 April 2026 - 68a9389 - Chore: pin dependency click to ==8.2.1 (#2193)
19 April 2026 - e00e7b3 - Docs: major update (#2131)
19 April 2026 - 204aa76 - Feature: add additional patch logging (#2190)
19 April 2026 - df34641 - Refactor: don't lock anything if cache key is present and doesn't need recomputing (#2191)
19 April 2026 - 1749a72 - Fix: exclude duplicate "duplicate" and "unused" file paths from reports (#2189)
18 April 2026 - 026721f - Refactor: prevent mutex deadlocking, pending mutex eviction (#2188)
18 April 2026 - 05f5edb - Refactor: cache type version to reduce cache busting (#2187)
18 April 2026 - 2268f42 - Chore: update dependencies (#2186)
18 April 2026 - 560ede1 - Fix: DirectoryCleaner, ROMTrimProcessor progress bars (#2185)
18 April 2026 - 349ab82 - Feature: cache TorrentZip validation (#2184)
18 April 2026 - 0055424 - Fix: increase XML entity expansions for MAME DATs (#2182)
18 April 2026 - d29d33f - Fix: don't block archive raw-writing because of patching (#2183)
18 April 2026 - 73ef448 - Fix: zip moved input files, don't delete moved output files (#2181)
17 April 2026 - 48f9121 - Fix: don't duplicate output path for multi-roms ...

Read more

v4.3.2

24 Feb 17:24
Immutable release. Only release title and notes can be modified.
4721abe

Choose a tag to compare

Release Highlights

This release addresses some user-submitted bugs & feature requests.

Feature: --patch-only option

The option lets you write only patched ROMs, skipping all others.

Thank you @noah978 for the suggestion!

Feature: --trim-scan-files <mode> option

The option lets you always or never scan files not inside archives. --trim-scan-files never can help speed up your processing time if you know you definitely don't have any trimmed ROMs.

Thank you @HeroponRikiBestest for the suggestion!

Feature: handle region variants for {emulationstation} and {romm}

Some ROM frontends differentiate regional variants of consoles, such as:

  • NEC PC Engine vs. TurboGrafx
  • Nintendo NES vs. Famicom
  • Sega Genesis vs. Mega Drive

Igir will do its best to pick the right one based on DAT information.

Thank you @dirn and @Europia79 for working through this with me!

All changes

24 February 2026 - 4721abe - v4.3.2 (#2049)
24 February 2026 - 547a49a - Chore: update dependency wrap-ansi to v10 (#2047)
24 February 2026 - 95db495 - Feature: trimmed file scanning mode option (#2048)
23 February 2026 - 9d76db8 - Chore: update dependency chdman to v0.285.1 (#2046)
22 February 2026 - ac0b75b - Fix: re-scan archives cached as empty (#2044)
21 February 2026 - ed47629 - Chore: update lockfile (#2045)
21 February 2026 - 319f9f3 - Feature: patch only option (#2042)
20 February 2026 - 6cb963c - Feature: handle regional variant names with tokens (#2041)
20 February 2026 - e42316b - Refactor: avoid Buffer.toString() when parsing DAT contents (#2043)
20 February 2026 - 05c36c4 - CI: use the correct reusable workflow syntax (#2040)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian

v4.3.1

20 Feb 05:17
7e7fb8f

Choose a tag to compare

Release Highlights

Feature: more ROM signatures detected

Added:

  • Apple disks (.a2r, Kryoflux .raw, .woz)
  • Atari Jaguar (.jag)
  • Atari Lynx (.bll)
  • Nintendo DSi (.dsi)
  • Nintendo Pokémon Mini (.min)
  • Nintendo SNES (unheadered .sfc)

Signatures help with parsing archives, extension correction, and detecting trimmed ROMs.

Feature/fixes: token additions & updates

Thank you to everyone who contributed!

Fixes: trimmed ROMs

Two fixes:

  • Igir wasn't matching the padded CRC32s of trimmed ROMs correctly.
  • Writing trimmed ROMs would get retried when igir test was provided.

Thank you @d0k3 for all the help you've given with trimmed ROMs!

Sponsors

Thank you @dcramer, @rommapp, @chrisdrackett, @gavinmcfall, and @moose-juice for the monetary support you've given and continue to give! Knowing that Igir has provided value to so many people is truly humbling!

All changes

20 February 2026 - 7e7fb8f - v4.3.1 (#2039)
19 February 2026 - 54c0bec - Chore: update ESLint (#2037)
19 February 2026 - f21dc6a - Fix: don't incorrectly retry writing trimmed files (#2036)
19 February 2026 - 072e32d - Fix: match against padded CRC32 with size (#2035)
19 February 2026 - f8d9f33 - Fix: update MiSTer, RomM tokens (#2034)
19 February 2026 - 9a27b31 - Feature: Add SpruceOS/{spruce} output token support (#1982)
18 February 2026 - 8e7be01 - Fix: don't ever parse XML tag values as numbers (#2033)
18 February 2026 - 04ff5fc - Fix: Update gameConsole mappings for romm (#1897)
18 February 2026 - 860d088 - Feature: add missing links for pocket and MiSTer (#1856)
18 February 2026 - 1595958 - CI: fix: only comment pkg.pr.new info on owner-opened PRs (#2032)
18 February 2026 - 34b7a9a - Chore: update dependency fast-xml-parser to v5.3.6 [SECURITY] (#2029)
18 February 2026 - e852610 - Chore: update dependency tar to v7.5.8 [SECURITY] (#2030)
18 February 2026 - b564e2b - CI: fix: only comment pkg.pr.new info on owner-opened PRs (#2026)
18 February 2026 - 2a8da7f - Feature: update romm mapping according to version 4.1.6 (#1847)
17 February 2026 - 200c75d - Fix: dir2dat treat subdirectories with multiple files as a game (#2023)
16 February 2026 - 109416a - Feature: remove unrecognized archive extensions during correction (#2025)
16 February 2026 - 5befaeb - Feature: detect unheadered SNES ROM signature, fix headered (#2022)
15 February 2026 - da82300 - Feature: detect some Atari ROM signatures (#2013)
15 February 2026 - b4434a2 - Feature: detect some Apple disk formats (#2012)
14 February 2026 - 89253c0 - Feature: detect DSi ROM signature (#1980)
14 February 2026 - 229f7a0 - Feature: detect Pokemon Mini ROM signature (#1970)
14 February 2026 - 2876656 - CI: provide GH_TOKEN to all steps that call gh (#2021)
14 February 2026 - bf1d774 - CI: don't run npm whoami (#2020)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian

v4.3.0

14 Feb 06:52
c4d5ab3

Choose a tag to compare

Release Highlights

This release mostly addresses a backlog of dependency updates. The minimum supported Node.js version has been bumped from v18.20.0 to v20.19.0, as v18 reached the end of its security support nine months ago.

Refactor: more awaited promises

An insidious quirk of Node.js is that if functions return unawaited promises, they can lose their stack information, making debugging significantly more challenging. Linting rules were tightened to disallow this, and some async iterables were changed to for await...of syntax. These changes should provide meaningful stack traces when exceptions happen, making addressing issues easier.

All changes

14 February 2026 - c4d5ab3 - v4.3.0 (#2019)
14 February 2026 - a58113e - Fix: build zstd-napi on postinstall (#2018)
14 February 2026 - 01a0cc5 - Chore: update Node.js to v24.13.1 (#2017)
13 February 2026 - e293ce5 - Refactor: never return unawaited promises (#2015)
13 February 2026 - 5faaa58 - CI: Renovate hold back major ESLint updates (#2016)
13 February 2026 - ec84b2a - Chore: update dependency eslint-plugin-unicorn to v63 (#2014)
13 February 2026 - 6b502a1 - Chore: update ESLint (#2010)
13 February 2026 - fd19214 - Feature: display progress during ROM patching (#2008)
13 February 2026 - c4b0383 - CI: fork addnab/docker-run-action@v3 (#2011)
13 February 2026 - 52ee232 - Chore: update dependency Pillow to v12.1.1 [SECURITY] (#2006)
13 February 2026 - 6a898c6 - Chore: update docs dependencies (#1968)
12 February 2026 - 0b798c0 - Refactor: tweak some progress bar titles (#2009)
12 February 2026 - b140c8e - Fix: escaping glob-like paths for file scanning (#2007)
11 February 2026 - 1365280 - Refactor: use for await...of to read files (#2004)
10 February 2026 - 8bb6f71 - Fix: node-disk-info can return undefined mount path (#2000)
10 February 2026 - d2ba0ba - Refactor: don't lose 'fs' stack traces with 'util.promisify' (#2003)
10 February 2026 - e5ad0f9 - Chore: update lockfile (#1999)
10 February 2026 - 3e53dad - CI: increase timeout for 'node-unit' on Windows (#2002)
8 February 2026 - 946b7ae - Chore: update dependency eslint-plugin-jsdoc to v62.5.1 (#1997)
8 February 2026 - c0612b7 - Chore: update dependency terminal-size to v4.0.1 (#1998)
8 February 2026 - 8a20a7c - Chore: update dependency yargs to v18 (#1994)
8 February 2026 - e8cad33 - Chore: update jest monorepo to v30 (major) (#1995)
8 February 2026 - 38a559c - Chore: update dependency eslint-plugin-unicorn to v62 (#1988)
7 February 2026 - be8719b - Chore: update dependency which to v6 (#1993)
7 February 2026 - b07da4c - Chore: update dependency trash to v10 (#1992)
7 February 2026 - 95e3d96 - Chore: update dependency eslint-plugin-jsdoc to v62 (#1981)
7 February 2026 - 29ad915 - Chore: update dependency node-gyp to v12 (#1991)
7 February 2026 - a3d2107 - Chore: update dependency jest-extended to v6 (#1990)
7 February 2026 - f86ea27 - Chore: update dependency eslint-plugin-jsdoc to v58 (#1979)
7 February 2026 - 5ca6760 - Chore: update dependency eslint-plugin-jsdoc to v56 (#1977)
7 February 2026 - a5ac9a1 - Chore: update dependency eslint-plugin-jest to v29 (#1971)
7 February 2026 - 1fa997d - Chore: update dependency eslint-plugin-jsdoc to v52 (#1973)
7 February 2026 - 8438d28 - Refactor: trace log clarity (#1969)
7 February 2026 - b7ba094 - Chore: bump minimum Node.js version to ^20.19.0 || ^22.13.0 || >=24.0.0 (#1963)
7 February 2026 - 61afc14 - Refactor: clearer names for some test cases (#1967)
7 February 2026 - 24d5146 - CI: fix: npm cache directory caching (#1966)
6 February 2026 - e338242 - Fix: try to resolve deadlocks in KeyedMutex (#1964)
6 February 2026 - 2d08092 - Chore: update Node.js to v24.13.0 (#1960)
6 February 2026 - d8a0add - Chore: update dependency chdman to v0.285.0 (#1958)
6 February 2026 - e653340 - Chore: update ESLint to v8.54.0 (#1959)
6 February 2026 - 3904748 - Chore: update dev dependencies (#1954)
6 February 2026 - f0d923e - Chore: Bump js-yaml from 3.14.1 to 3.14.2 (#1914)
6 February 2026 - c0bcc3f - Fix: 'should move to the same directory' test timeouts (#1965)
5 February 2026 - 9f5e538 - CI: fix: npm/npx ECOMPROMISED on Windows (#1962)
2 February 2026 - [`c5...

Read more

v4.2.0

19 Aug 03:13
e3cccf2

Choose a tag to compare

Release Highlights

This is the 100th release of Igir on GitHub, blaze it!

🛟 Stability improvements

This release was focused on addressing a lot of stability and runtime issues for different architectures:

Changed to a CRC32 library that doesn't use Node.js native addons.

The old library subtly required modern CPUs with SSE4.2, but Igir aims to be as widely compatible as it can be safely. The change of library means CRC32 calculation will be slower, but most users will be I/O-bound and not CPU-bound. Thank you @james-berzuk for the bug report, and a huge shoutout to @chrismsnz for deep diving with some executable debuggers!

Memory reduction with parsing XML DATs.

Known XML tags that Igir doesn't use will now be ignored during XML parsing time. This will be particularly noticeable with official MAME DATs that include a lot of information that Igir doesn't use. Thank you @dirctbe for the report.

Support for libretro's mame2003 DATs.

Regardless of MAME (and Logiqx) providing very clear schemas for DAT XMLs, many sources do not respect these schemas, with libretro's mame2003 DAT being one such culprit. Igir can now read this DAT and others like it. Thank you @cinnamonmatexfce for the report.

Conflicting Node.js native addon module filenames.

Compiled executables from GitHub releases had a problem where the Zstd v1.5.5 native addon wasn't included correctly. This has been fixed, thank you @emerrepengo for the report.

Fixed ROM patching when zipping with input zip files.

A bug would happen when the igir zip command was used with zip files in an input directory where no file would be patched. This has been fixed, thank you @mjm for the report.

Disallow ROM patching with the igir link command.

Because Igir never modifies your input directory (unless you use an obvious command or option such as igir move), the igir link command doesn't work with patching. The only output files written are links to files in the input directory, there is no opportunity to create a patched file. This is now validated at option parsing time. Thank you @noah978 for the report.

dolphin-tool is statically linked with libusb on Linux again.

This was a bit of a regression. Many Linux distros don't come with libusb installed, which meant Igir had external dependencies that it couldn't easily install. This has been fixed, thank you @noah978 for the report.

All changes

19 August 2025 - e3cccf2 - v4.2.0 (#1829)
19 August 2025 - b227960 - Fix: replace '@node-rs/crc32' with '@aws-crypto/crc32' (#1814)
18 August 2025 - 962fb80 - Chore: update dependency dolphin-tool to v0.2506.1 (#1826)
18 August 2025 - d44f899 - CI: Renovate pin digests at any time (#1825)
18 August 2025 - 3d651a5 - Chore: Pin dependencies (#1824)
17 August 2025 - 012ab0d - Chore: update GitHub Actions (#1823)
17 August 2025 - 6bf635c - Chore: update dependency chdman to v0.279.0 (#1822)
17 August 2025 - 55f645d - CI: pin GitHub Actions action digests (#1821)
17 August 2025 - fa4a54a - Fix: don't allow patch options to be used with link command (#1820)
17 August 2025 - 5298d21 - CI: comment on issues resolved by a release (#1819)
17 August 2025 - a713300 - CI: pin GitHub Actions action digests (#1818)
17 August 2025 - 1321ca3 - Refactor: ignore unneeded MAME DAT tags & attributes (#1817)
16 August 2025 - 655081f - Chore: update actions/checkout action to v5 (#1812)
16 August 2025 - 8b549cb - Chore: update dependency typescript to v5.9.2 (#1798)
16 August 2025 - 8124270 - Fix: conflicting Node native addon prebuild filenames (#1816)
15 August 2025 - c8d37e5 - Chore: update ESLint (#1805)
15 August 2025 - 28470e2 - Chore: update actions/download-artifact action to v5 (#1806)
15 August 2025 - d25ffb7 - Chore: update Node.js to v24.5.0 (#1802)
15 August 2025 - cc4e091 - Chore: update actions/first-interaction action to v3 (#1813)
12 August 2025 - 2ad798d - Fix: don't consider zips for raw-moving when patching (#1797)
12 August 2025 - 0282e4c - CI: fix: shellcheck (#1809)
31 July 2025 - b37a74e - Fix: parse libretro mame2003 DATs (#1794)
31 July 2025 - 0bbe6e9 - Fix: don't consider zips for raw-moving when patching (#1795)
31 July 2025 - 02baeea - Chore: update lockfile (#1789)
31 July 2025 - 215d467 - Chore: update dependency node-addon-api to v8.5.0 (#1786)
31 July 2025 - c408c00 - CI: merge queue wait for non-UNKNOWN merge state (#1796)
31 July 2025 - f002e48 - Fix: compare resolved paths when processing excludes (#1793)
27 July 2025 - 572abc0 - Chore: update dev dependencies (#1785)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian

v4.1.2

26 Jul 04:52
48ae97b

Choose a tag to compare

Release Highlights

Feature/fix: exclude detecting trimmed ROMs in archives by default

It typically doesn't make sense to archive trimmed ROMs, so Igir will now not detect trimmed ROMs inside archives by default. This is particularly noticeable with archive formats such as CHD, which are very expensive to extract. An option --trim-scan-archives has been added to turn this behavior back on. Thank you @nipsy for the suggestion!

Fix: compiled Windows binaries

v4.1.1's Windows binaries didn't function because of a subtle issue between Volta and Node-API. These should be fixed going forward. Thank you @BlackShad79 for the bug report!

All changes

26 July 2025 - 48ae97b - v4.1.2 (#1784)
26 July 2025 - becbf87 - CI: cache npm dependencies in GitHub Actions (#1783)
26 July 2025 - f9f1825 - Feature: trim-scan-archives option (#1781)
26 July 2025 - eea6c29 - Chore: update ESLint (#1779)
26 July 2025 - 3236690 - CI: merge queue wait a short period after PR merge (#1782)
26 July 2025 - 70965db - Chore: delete old, unused NAPI prebuilds (#1778)
20 July 2025 - 45ff334 - Docs: add more DAT release groups (#1774)
20 July 2025 - ea9eea0 - Chore: add Patreon funding link (#1773)
20 July 2025 - b9f0ab0 - Chore: update Node.js to v24.4.1 (#1772)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian

v4.1.1

19 Jul 23:36
c5a53e7

Choose a tag to compare

⚠️ The Windows executables were broken for this release and have been removed. ⚠️

Release Highlights

Fix: always match empty files

Some DATs include empty files (those with a size of 0 bytes) for some multi-ROM games. Igir will now always match & write those files when appropriate. This matches RomVault's behavior. Previously, you would have had to have an empty file in your input directory for a match to occur.

This also fixes the ability to write directory entries in zip files (empty files with a / at the end of the filename). This is very uncommon; No-Intro, Redump, and TOSEC all do not catalog any ROMs like this.

All changes

19 July 2025 - c5a53e7 - v4.1.1 (#1771)
19 July 2025 - aee71a6 - Chore: update actions/first-interaction action to v2 (#1768)
19 July 2025 - 28d843f - Chore: update ESLint (#1767)
19 July 2025 - 5eb3efe - CI: test zipping empty directories (#1770)
19 July 2025 - dec6a16 - Fix: handle writing empty files (#1769)
14 July 2025 - c25ce1d - Chore: update Node.js to v24.4.0 (#1766)
13 July 2025 - e98a1de - CI: fix: don't run the merge queue workflow twice on PR merges (#1764)
13 July 2025 - d135c43 - CI: fix: test published pkg.pr.new package (#1765)
13 July 2025 - ea9ebe0 - CI: debug: test published pkg.pr.new package (#1763)
13 July 2025 - 6cab392 - CI: revert usage of macos-latest-large (#1761)
13 July 2025 - de352c4 - CI: fix: merge queue debug logs (#1762)
13 July 2025 - 115c152 - CI: don't run Node-API prebuildify on version bump PRs (#1760)
13 July 2025 - 8886b35 - CI: test published pkg.pr.new package (#1759)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian

v4.1.0

13 Jul 20:05
8c67058

Choose a tag to compare

Release Highlights

✂️ New feature: trimmed ROM detection & matching

The marquee feature of this release is that Igir can now detect trimmed GBA, DS, and 3DS ROMs and match them against DATs that catalog their full-size/padded version. This feature will be most helpful for organizing your ROMs on flash carts for these handhelds. More information can be found in the new doc page.

Thank you @d0k3 for the feature suggestion!

⚠️ Semi-breaking:

Support for Node.js v16 has been dropped. The minimum version required has been bumped from >=16.13.2 to ^18.20.0 || ^20.11.0 || >=22.

This is to support several dependencies that have dropped support for Node.js versions that have reached end of life. You shouldn't be using Node.js v16 anyway, as it hasn't received a security patch since 2023. You shouldn't be using Node.js v18 either, but I try to keep support for older versions until it's necessary to bump.

Updates

  • @Choromanski updated the {romm} token with new consoles and various fixes: Acorn Archimedes, Apple-I, Bandai Super Vision 8000, Casio PV-1000, Commodore C128, Emerson Arcadia 2001, Entex Adventure Vision, Funtech Super A'Can, J2ME, Symbian, Nintendo Game & Watch, Nintendo 64DD, Philips CD-i, RCA Studio II, Sord M5, Texas Instruments TI-99/4A, and VTech CreatiVision. Thank you!

Fixes

A couple of bugs have been fixed:

  • Fixed npm install --global igir (thank you @Azlaroc for the report)
  • Fixed CMPro DATs that contain duplicate ROMs (e.g. libretro-database's System.dat) (thank you @Sparticuz for the report)

Sponsors

Thank you @RetroHoarder for your recent sponsorship!

All changes

13 July 2025 - 8c67058 - v4.1.0 (#1758)
13 July 2025 - 6b9f28c - CI: test published pkg.pr.new package (#1757)
13 July 2025 - 6c19c51 - CI: fix: remove Renovate rebase label on some actions (#1756)
13 July 2025 - a64904f - Docs: update comparison chart (#1754)
12 July 2025 - c31e540 - Feature: detect trimmed ROMs (#1691)
12 July 2025 - 42f3e78 - CI: remove Renovate rebase label on some actions (#1753)
12 July 2025 - ef28f71 - CI: fix: publish packages to pkg.pr.new (#1752)
12 July 2025 - 8d912b9 - Fix: de-duplicate ROMs in a BIOS DAT (#1751)
12 July 2025 - 06d5cb7 - Chore: update dependency eslint-plugin-unicorn to v59 (#1748)
12 July 2025 - 9942f83 - Docs: qlty.sh badge (#1750)
12 July 2025 - 3fa4ba7 - CI: publish packages to pkg.pr.new (#1749)
12 July 2025 - 6baf6dc - Chore: update dependency eslint-plugin-unicorn to v58 (#1747)
12 July 2025 - 4a45f19 - Chore: bump minimum Node.js version to ^18.20.0 || ^20.11.0 || >=22 (#1745)
11 July 2025 - 0080673 - Fix: run node-gyp-build as a postinstall script (#1746)
11 July 2025 - 16868e9 - Chore: update dependency tar to v7 (#1729)
11 July 2025 - f17750c - Fix: Updated the paths of all romm consoles (#1740)
10 July 2025 - c1b6bec - Chore: Roll back dependency eslint-plugin-unicorn to 57.0.0 (#1736)
10 July 2025 - d829374 - Chore: update ESLint (#1744)
7 July 2025 - 4b52443 - Chore: bump minimum Node.js version to ^18.18.0 || ^20.9.0 || >=21.1.0 (#1739)
7 July 2025 - 57402c8 - Refactor: ESLint rule additions (#1693)
7 July 2025 - 22fb8e2 - Chore: Roll back dependency jest to 29.7.0 (#1737)
7 July 2025 - b3a6ad5 - Chore: update lockfile (#1730)
7 July 2025 - ca091ae - Chore: Roll back dependency eslint-plugin-jest to 28.14.0 (#1734)
7 July 2025 - 8c38775 - Chore: Roll back dependency eslint-plugin-jsdoc to 50.8.0 (#1735)
7 July 2025 - dbad3f5 - Chore: update dev dependencies (#1728)
7 July 2025 - c1d3c82 - Chore: update dependency eslint-plugin-prettier to v5.5.1 (#1726)
7 July 2025 - c418b2f - Chore: update dependency wrap-ansi to v9 (#1725)
7 July 2025 - c757504 - Chore: update dependency mkdocs-material to v9.6.15 (#1727)
7 July 2025 - 0f2084d - Chore: update dependency trash to v9 (#1724)
7 July 2025 - 8275928 - CI: refactor: completely in-house merge queue (#1720)
7 July 2025 - 4b26b17 - Chore: update dependency is-unicode-supported to v2 (#1717)
7 July 2025 - ccc1917 - Chore: update dependency node-gyp to v11 (#1723)
7 July 2025 - 0ffedb0 - Chore: update dependency node-addon-api to v8 (#1722)
7 July 2025 - 92a9476 - Chore: update dependency jest-extended to v4 (#1721)
7 July 2025 - ad63e44 - Chore: update dependency jest-extended to v3 (#1719)
7 July 2025 - 6756db2 - Chore: update dependency @jest/globals to v29 (#1716)
7 July 2025 - 4ad430d - Chore: bump minimum Node.js version to ^18.18.0 || ^20.5.0 || >=21 (#1718)
6 July 2025 - 48b53f0 - Chore: update dependency @jest/globals to v28 (#1715)
6 July 2025 - a829eae - Chore: bump minimum Node.js version to v18.18.0 (#1714)
6 July 2025 - b93d110 - Cho...

Read more

v4.0.2

29 Jun 16:53
ca44b27

Choose a tag to compare

This is a fix to the Node.js packaging issues from v4.0.0. There are no functional changes, please see v4.0.0's release notes.

All changes

29 June 2025 - ca44b27 - v4.0.2 (#1668)
29 June 2025 - 7d39103 - Fix: v4.0.0's pseudo monorepo packaging (#1667)
29 June 2025 - 902a8d5 - Chore: pin dependencies (#1666)

Igir, and other open-source projects like it, are a labor of love. They wouldn't be nearly as meaningful without the community supporting them. Constructive feedback and general positivity will always be welcome. Be kind to others, and be kind to yourselves.
❤️ Christian