Skip to content

Releases: emmercm/igir

v2.4.1

11 Feb 02:29
905aacf
Compare
Choose a tag to compare

Release Highlights

Feature: macOS ARM binaries for Apple Silicon

Every new release, including this one, will have 64-bit ARM binaries built for macOS.

As always, running igir via npm is the most reliable method, and it should be preferred over the binaries published to GitHub.

Fix: reducing memory usage

@TheBrainScrambler has been helping debug fatal out-of-memory crashes that can affect large DAT packs.

Some minor changes were made to reduce the memory footprint of DATs. But a major change with this release is replacing the old XML parsing library with a different one, resulting in a ~60% memory reduction during DAT scanning on my M2 MacBook Air. This change carries some risk that the two libraries parse DATs differently, so please open GitHub issues for any problems you encounter.

All changes

11 February 2024 - 905aacf - v2.4.1 (#932)
11 February 2024 - b7c4147 - Refactor: filter out DATs earlier (#930)
11 February 2024 - 64b027f - Chore: update ESLint (#890)
11 February 2024 - 02acebb - Docs: dat-ignore-parent-clone option (#931)
11 February 2024 - a5deb8e - Chore: pin dependencies (#929)
11 February 2024 - 546ab4a - Refactor: replace xml2js with fast-xml-parser (#926)
10 February 2024 - ffc4913 - Refactor: remove some unused game properties (#927)
10 February 2024 - da27e06 - Refactor: eliminate unnecessary game name storage (#924)
10 February 2024 - 77b7c3b - Refactor: use a set for progress bar waiting messages (#925)
10 February 2024 - f1b90c8 - Fix: greatly reduce the number of allowed filesystem threads (#923)
9 February 2024 - 740975b - Feature: compile igir for Apple Silicon (#922)
9 February 2024 - a523656 - Fix: reduce README help message width for GitHub (#921)

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

v2.4.0

09 Feb 03:05
aa82c37
Compare
Choose a tag to compare

Release Highlights

This release is addressing some feature requests that have been open for a few months.

Feature: game name & ROM filename regex preference

Two new options, --prefer-game-regex <pattern> and --prefer-rom-regex <pattern>, have been added. These will let you define custom rules for building 1G1R sets. See the 1G1R docs for all 1G1R options!

Thank you @lucaorio for the suggestion!

Feature: combining all DATs into one

A new --dat-combine option has been added to combine every game from every DAT into one new DAT. This can be useful when creating dir2dats or fixdats. See the new DAT processing docs for all DAT options.

Thank you @lucaorio for the suggestion!

Feature: ignore existing parent/clone information in DATs

A new --dat-ignore-parent-clone option has been added that will ignore any parent/clone information in DATs, letting igir infer parent/clone information using its strategies.

Thank you @lucaorio for the suggestion!

Feature: regex patterns in files

The value for all --*-regex* <pattern> options can now be a filename, where every line in the file will be logically "OR"ed together to form the regex match. All relevant documentation has been updated.

@feurry had a good suggestion for combining this with All Killer No Filler game lists that exist out there. Thank you for the suggestion!

Fix: dangling file handles when enumerating zip files

@doggy found an issue that could happen with large DAT packs or large ROM collections where igir would run out of available file handles and crash. The issue was introduced in v2.1.2 and should be fixed now.

All changes

9 February 2024 - aa82c37 - v2.4.0 (#920)
9 February 2024 - 37b776a - Docs: regex updates (#919)
9 February 2024 - 11bfacb - Feature: prefer-game-regex, prefer-rom-regex options (#918)
9 February 2024 - f3a18ab - Docs: update example use cases (#917)
9 February 2024 - 81e6b00 - Feature: dat-ignore-parent-clone option (#916)
9 February 2024 - ea9df88 - Feature: dat-combine option (#912)
9 February 2024 - a88e4cd - Fix: don't leave open file handles when hashing zip entries (#915)
2 February 2024 - ae85f69 - Fix: reduce README help message width for GitHub (#911)
2 February 2024 - e3189a6 - Fix: use a "flat" style for the GitHub stars badge (#910)
2 February 2024 - 77b4d7d - Feature: warn the user of any unused patches (#909)
2 February 2024 - 9c134de - Refactor: more granular output cleaner logs (#908)
2 February 2024 - 4b815a3 - Docs: update igir internals (#906)
2 February 2024 - 6ab7f37 - Feature: support reading regex patterns from files (#907)

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

v2.3.0

02 Feb 04:52
2f505af
Compare
Choose a tag to compare

Release Highlights

Feature: --dir-letter letter count & grouping options

Two new options have been added to further customize the --dir-letter option's behavior:

  • --dir-letter-count lets you control how many letters to use for the subdirectory (with the default still being one letter)
  • --dir-letter-group lets you create ranges of letters, with the existing --dir-letter-limit controlling how many files end up in each subdirectory

A new output path options docs page has been added to detail these new options and some existing options that didn't have proper documentation.

Thank you @ddcruver for the feature request!

Fix: ROMs of MAME BIOS machines should always be considered a BIOS ROM

@Nikoh77 found an issue with libretro's FinalBurn Neo DATs where ROMs of BIOS machines weren't being considered as BIOS files, which caused issues with ROM set merging & splitting. This has been fixed.

All changes

2 February 2024 - 2f505af - v2.3.0 (#905)
1 February 2024 - ef93dac - Docs: output path options (#904)
1 February 2024 - 24491f3 - Feature: dir-letter-group option (#900)
1 February 2024 - 7bc5540 - Fix: husky v9 upgrade (#902)
1 February 2024 - 2bf425d - CI: don't automerge GitHub Actions major version updates (#903)
1 February 2024 - be1d8e1 - Fix: don't log stack traces for arguments parse failures (#901)
1 February 2024 - 5575d20 - Feature: dir-letter-count option (#849)
28 January 2024 - 168bbde - Chore: update lockfile (#899)
28 January 2024 - 462c3ac - Chore: update dependency husky to v9 (#898)
27 January 2024 - d160935 - Chore: update dependency eslint-plugin-jsdoc to v48 (#897)
27 January 2024 - dbbcb07 - Chore: update dependency eslint-plugin-jsdoc to v47 (#896)
27 January 2024 - 7cb6920 - Chore: update actions/cache action to v4 (#893)
27 January 2024 - 63253d3 - Chore: update dependency @types/node to v20.11.6 (#892)
27 January 2024 - a777394 - Chore: update dependency @fast-csv/format to v5 (#894)
27 January 2024 - 0e4682c - Chore: update dependency @fast-csv/parse to v5 (#895)
27 January 2024 - e005409 - Chore: update dependencies (#891)
27 January 2024 - 08926b4 - Chore: update dependency ts-jest to v29.1.2 (#889)
27 January 2024 - f96f396 - Chore: update dependency mkdocs-material to v9.5.5 (#888)
22 January 2024 - 47bf374 - Chore: update dependency Pillow to v10.2.0 [SECURITY] (#887)
19 January 2024 - 71ead76 - Fix: consider every ROM of a BIOS game to be a BIOS file when merging & splitting (#880)
19 January 2024 - e8fd7a3 - Chore: update Node.js to v20.11.0 (#884)
19 January 2024 - a45ac47 - Fix: clearer conflicting input files log message (#886)
6 January 2024 - bb378d3 - Fix: GitHub Actions binary compile actions/upload-artifact@v4 usage (#883)
5 January 2024 - aa1cae8 - Chore: remove robloach-datfile type definition (#882)

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

v2.2.1

05 Jan 23:56
2765099
Compare
Choose a tag to compare

Happy New Year to everyone! May we endeavor to be people that our future selves will be proud of.

Release Highlights

Fixes: possible errors when no ROMs were written

Two situations could have come up when the output directory didn't already exist and no ROMs were written (because no matching ones were found), and they have been fixed:

  • Don't error on output directories not existing when cleaning
  • Ensure the fixdat directory exists before writing a fixdat file

Fix: gracefully handle .zip stream errors

Corrupted .zip archives had a chance to cause unhandled exceptions in some circumstances, and these should be better handled now. In particular, this may happen when a .zip archive contained at least one file but was missing its central directory.

Thank you @deelowe for the bug report!

Fix: possible fatal error when checking Samba paths

v2.1.0 introduced a possible fatal error during checking if an input file's path is on a Samba (SMB) share or not. This has been fixed, and you should expect some better performance when reading files.

Thank you @jstapels for the bug report!

New sponsors

Thank you to @Nikoh77 and @AlexMC for newly sponsoring igir!

All changes

5 January 2024 - 2765099 - v2.2.1 (#881)
5 January 2024 - 5f9b96e - Fix: only query disk info at startup (#879)
4 January 2024 - 639d30f - Chore: remove CandidateWriter test console.log()s (#874)
4 January 2024 - 983c085 - Fix: handle stream errors when reading a zip file (#875)
4 January 2024 - 89ae8c1 - Fix: ensure the fixdat dir exists before writing (#873)
4 January 2024 - 33213da - Chore: update lockfile (#871)
4 January 2024 - b6c01bf - Fix: don't require output dirs to exist when cleaning (#872)
28 December 2023 - ce55a93 - Chore: update dependency eslint-plugin-unicorn to v50 (#868)
28 December 2023 - 8663488 - Chore: update dev dependencies (#860)
27 December 2023 - 3453b2e - Chore: update actions/upload-artifact action to v4 (#867)
27 December 2023 - 1232e2a - Chore: update actions/stale action to v9 (#866)
27 December 2023 - 027e99b - Chore: update actions/setup-python action to v5 (#865)
27 December 2023 - 27baed4 - Chore: update actions/setup-go action to v5 (#864)
27 December 2023 - 6c3f16e - Chore: update actions/download-artifact action to v4 (#863)
27 December 2023 - cc4723a - Chore: update docs dependencies (#862)
27 December 2023 - efe7927 - Chore: update ESLint (#861)
27 December 2023 - fc64d7e - Chore: update dependency typescript to v5.3.3 (#869)
27 December 2023 - f9e3319 - Chore: update dependency @types/jest to v29.5.11 (#859)
27 December 2023 - f6fdc17 - Chore: update dependencies (#858)
7 December 2023 - ded3728 - Docs: EZ-FLASH (#852)

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

v2.2.0

07 Dec 05:58
5a2beee
Compare
Choose a tag to compare

Release Highlights

DAT creation via dir2dat command

igir has had the ability to work without DATs ("DAT inference") since v0.4.0 - and now igir has the ability to write these generated DATs to disk!

This feature works with all other DAT features:

  • The ability to infer parent/child relationships between games (docs)
  • The ability to merge & split parent/child games (docs)
  • The ability to filter by region, language, and much more (docs)

This required the ability for igir to calculate MD5 and SHA1 checksums of files, in addition to CRC32. These additional checksums will only be calculated when needed, and they will slow down file scanning when using the dir2dat command, but some efficiencies from v2.1.2 should offset this. This unlocks the ability to use MD5 and SHA1 checksums for other purposes in the future, such as file matching and write validation.

See the brand new dir2dat docs page!

All changes

7 December 2023 - 5a2beee - v2.2.0 (#850)
7 December 2023 - 1df8ffb - Feature: dir2dat command (#740)
3 December 2023 - 0cc9aec - Fix: npm publishing (#848)

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

v2.1.2

30 Nov 01:47
41005b5
Compare
Choose a tag to compare

Release Highlights

igir has passed 200 stars on GitHub since the last release! I never thought igir would see this level of success. My thanks go out to each and every one of you!

Output token updates

@juliadin has contributed another batch of updates, thank you so much!

  • Added: Adam image {adam} which supports 41 consoles! (docs)
  • Added: MinUI {minui} which supports 18 consoles! (docs)
  • Fixed: PSP & Vita games are no longer incorrectly considered PS1 games

Fix: calculating archived file checksum efficiencies

.tar, .tar.gz, and .tgz archives no longer need to extract files to a temporary location on disk before calculating their checksum(s). The reading archives docs have been updated to show which archive types require temporary files.

.zip archives are no longer read multiple times when calculating the MD5 and SHA1 checksums of files.

Fix: ignore ROMs with a zero or missing size

DATs that don't provide valid filesizes for ROMs were causing igir to write empty files in the output directory. These files have no value, so they are now ignored and will not be written.

Thank you @juliadin for the bug report!

Fix: BPS patch bug

There was an issue with processing "target copy" commands in BPS patches that would result in wrong data. This has been fixed.

Thank you @Mihara for the bug report!

All changes

30 November 2023 - 41005b5 - v2.1.2 (#845)
30 November 2023 - 260ba7e - Chore: update dependency Pillow to v10 [SECURITY] (#844)
30 November 2023 - 124037a - Docs: docker run --rm (#843)
30 November 2023 - f6b057c - CI: pin & group docs dependencies (#842)
30 November 2023 - 6a08c38 - Docs: update (#841)
30 November 2023 - 1863549 - CI: fix Renovate Node.js updating (#839)
30 November 2023 - d99f310 - CI: apply Renovate stability settings globally (#840)
29 November 2023 - 89c81c4 - Fix: Add PSP and PS Vita to sort PSX roms properly (#838)
29 November 2023 - 46d25a1 - Feature: add {adam} outputToken, docs and tests (#833)
29 November 2023 - 62a019e - Fix: eliminate TAR extraction temp files, reduce ZIP checksum file reads (#836)
29 November 2023 - 753fce9 - Fix: exclude zero size ROMs (#835)
29 November 2023 - 1f79a36 - Feature: outputToken MinUI (#817)
28 November 2023 - d107a0b - Chore: update dependencies (#823)
28 November 2023 - e4a73f2 - Chore: update lockfile (#834)
28 November 2023 - b48bd56 - Chore: update lockfile (#832)
27 November 2023 - 7c6bfbb - Chore: update dessant/lock-threads action to v5 (#830)
27 November 2023 - b4e98f7 - Chore: update dependency typescript to v5.3.2 (#831)
27 November 2023 - 8ff9c68 - Chore: update dependency eslint-plugin-unicorn to v49 (#829)
27 November 2023 - e8872c3 - Chore: update dependency @types/archiver to v6 (#828)
27 November 2023 - ebd25fc - Chore: update dev dependencies (#827)
27 November 2023 - 6879db7 - Chore: update Node.js to v20.10.0 (#826)
27 November 2023 - 8ba31b7 - Chore: update ESLint (#825)
27 November 2023 - 47cfb8b - Chore: update dependency @types/jest to v29.5.10 (#824)
21 November 2023 - f137585 - Feature: add Node.js v21 to EOL checker (#821)
21 November 2023 - 9eb74a4 - Refactor: skip candidate preference when not in 1G1R mode (#820)
16 November 2023 - 6cc2eb1 - Fix: BPS patch TARGET_COPY reading (#816)
16 November 2023 - b851854 - Feature: validate BPS & UPS patch self checksums (#815)

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

v2.1.1

16 Nov 05:24
5629ab6
Compare
Choose a tag to compare

Release Highlights

This release is entirely brought to you by @juliadin who has been adding a ton of output tokens & documentation!

Output token updates

  • Added: TWiLightMenu++ {twmenu} which supports 22 consoles! (docs)
  • Added: MiyooCFW {miyoocfw} which supports 20 consoles! (docs)
  • Fix: FunKey OS {funkeyos} Neo Geo Pocket was removed from the list of supported consoles (docs)

All changes

16 November 2023 - 5629ab6 - v2.1.1 (#814)
16 November 2023 - 5cc0d48 - Feature: output token {miyoocfw} for Bittboy/Powkiddy custom firmware MiyooCFW (#811)
10 November 2023 - de64253 - Feature: output token {twmenu} (#804)
9 November 2023 - 537d5ef - Docs: require every Markdown file to be used (#812)
7 November 2023 - f8a3f1b - Refactor: change output dir to "dist" (#808)
7 November 2023 - 4edd5e9 - CI: port Renovate changes from metalsmith-plugins (#809)
5 November 2023 - 40d5f36 - Docs: JELOS output token (#805)
5 November 2023 - 69ebb3a - Fix: Fix some issues with output token funkeyos (#803)

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

v2.1.0

29 Oct 00:51
ee50d93
Compare
Choose a tag to compare

Release Highlights

Feature: tweaks to reading files concurrently

Enough is going on in these few changes that a minor version bump is warranted. As always, please open issues for any unexpected behavior!

First, the default number of files being read & written concurrently has both been reduced from 20 to 10. This should help with some hard drive thrash. Write threads have had the --writer-threads <number> option since v1.6.5, and a new matching --reader-threads <number> option has been added with this release.

Second, if multiple hard drives are provided as input paths, igir should do a better job of reading from each disk in parallel, hopefully speeding up processing.

Third, Samba (SMB) paths are now limited to reading one file at a time, to reduce network thrash and speed up processing time. Let me know if you experience any issues with this! Thank you @samuelcole for the bug report!

Fix: rewrite of the CMPro DAT parser

Rather than using an existing library, I rewrote the CMPro DAT parser from scratch to solve for some bugs around whitespace and newlines. This carries some risk! If you find any problems, please open a bug report and I'll be very happy to address it.

Thank you @juliadin for the bug report on libretro DATs!

Fix: potential crash with many files in multiple input directories

It turns out Node.js' Array#push() is recursive, or does something to balloon the call stack to the point of crash when providing many arguments with the spread operator.

Feature: {funkeyos} output token added

Thank you @juliadin for this quality contribution, with quality documentation to match!

All changes

29 October 2023 - ee50d93 - v2.1.0 (#801)
29 October 2023 - 7682a97 - Feature: prefer input files not from the output path (#767)
28 October 2023 - bdecb10 - Feature: limit concurrent file reads per hard drive (#785)
28 October 2023 - 58abf4f - Chore: update lockfile (#800)
28 October 2023 - df19a61 - Feature: Output token funkeyos (#786)
28 October 2023 - 57577b8 - Chore: update dependency @types/node to v20 (#798)
28 October 2023 - b04dfdc - Chore: update lockfile (#799)
28 October 2023 - ba6fc2e - Chore: update ESLint (#797)
28 October 2023 - 805b242 - Chore: update dev dependencies (#796)
27 October 2023 - f936ea1 - Chore: update dependency @types/jest to v29.5.6 (#795)
27 October 2023 - 0cdebea - Chore: update dependencies (#794)
27 October 2023 - cb94715 - Fix: moved ROM deleter progress bar total (#793)
27 October 2023 - c83d577 - Refactor: ban Array#push() (#792)
27 October 2023 - d034726 - Refactor: use Volta instead of nvm (#791)
27 October 2023 - a4a015a - Refactor: revert tsconfig settings that were necessary for robloach-datfile (#789)
27 October 2023 - d7f7ff0 - Fix: username in the first PR interaction comment (#790)
27 October 2023 - 01630f2 - Chore: update dependency node to v20 (#787)
27 October 2023 - 24df53a - Fix: provide ts-node as a loader to the start script (#788)
23 October 2023 - b1e9ee1 - Feature: reader threads debug option (#778)
23 October 2023 - d8ef643 - Fix: replace robloach-datfile with a custom CMPro DAT parser (#784)
23 October 2023 - bb6cade - Feature: DAT downloading & parsing progress bar icons (#783)
23 October 2023 - 5e44cb6 - Fix: catch CMPro DAT parsing errors (#782)
22 October 2023 - af710cc - Feature: separate candidate combiner & parent inferrer progress bar symbols (#780)
21 October 2023 - 4c42ad1 - CI: add footer with links to inactive lock comments (#779)

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

v2.0.7

21 Oct 22:43
9e1c864
Compare
Choose a tag to compare

Release Highlights

Output token updates

New PC consoles added:

  • Acorn Atom ({mister}, {batocera})
  • Amstrad PCW ({mister})
  • Apple I ({mister})
  • Apple II & IIe ({mister}, {batocera})
  • Bandai Super Vision 8000 ({mister})
  • Bandai RX-78 ({mister})
  • Casio PV-2000 ({mister})
  • Commodore C16 ({mister}, {jelos})
  • Commodore C128 ({mister}, {batocera}, {jelos})
  • Sharp MZ ({mister})
  • Sinclair ZX-80 ({mister})

Existing consoles updated to support {mister}:

  • Commodore Amiga CD32
  • Nintendo 64

Fixes: 7zip

This release has two fixes to the 7zip library which affects .7z, .gz, and .zipx input files.

  • Fixed a possible crash when retrying listing files in an archive.

    This was partly fixed in v2.0.6, and hopefully fixed for good now. This has been an infrequent issue since v1.7.0.

  • Ability to extract a single file from multi-file archives.

    As long as igir has existed publicly (v0.0.1), the 7zip library has never supported extracting files one at a time from archives. This release adds a workaround, speeding up processing times and reducing hard drive wear.

All changes

21 October 2023 - 9e1c864 - v2.0.7 (#776)
21 October 2023 - 265d8ec - Docs: fix mkdocs-material emoji deprecations (#777)
21 October 2023 - 1837a00 - Fix: possible stack size limit issues when globbing many files (#775)
21 October 2023 - 0456459 - Refactor: handle multi-line progress bar messages (#774)
21 October 2023 - 6ea98dd - Fix: clear the last deleted progress bar (#773)
21 October 2023 - f3195da - Fix: 7zip extract only the exact intended archive entry (#772)
21 October 2023 - 6ebe652 - Refactor: limit the number of archive entries scanned at once (#771)
17 October 2023 - dc9929d - Chore: pin dependencies (#769)
17 October 2023 - 569f503 - Chore: update dependency node to v18.18.2 (#761)
17 October 2023 - 71c0fb3 - Refactor: re-enable airbnb-base ESLint (#768)
14 October 2023 - 54e6bd6 - Refactor: enable eslint-plugin-jest/recommended (#766)
14 October 2023 - 01df5c8 - CI: clearer GitHub Actions Node.js compile job names (#765)
14 October 2023 - e237847 - Refactor: adopt more eslint-plugin-unicorn rules (#764)
13 October 2023 - 1898207 - Feature: output tokens update (#763)
13 October 2023 - b1012f3 - CI: lock old closed issues (#762)
13 October 2023 - 582423b - Refactor: more Array#at() and String#charAt() safety (#760)
13 October 2023 - 70297da - Refactor: ESLint strict-boolean-expressions (#759)
13 October 2023 - 5aebf34 - Fix: retry listing 7zip archive entries (#758)
13 October 2023 - 5f627d8 - Chore: update dependency node to v18.18.1 (#747)
12 October 2023 - f5408dd - Refactor: OutputTokens interface (#757)

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

v2.0.6

12 Oct 00:44
2a19172
Compare
Choose a tag to compare

Release Highlights

Thank you @jmf626 for two bug reports on game languages!

Fix: 1G1R language preference tiebreaking

When specifying a list of preferred languages (e.g. --prefer-language EN,ES), igir will now consider all of those languages when comparing two clones, not just the first preferred language found.

For example, these two Game Boy clones are both in English, but differ in their other languages:

Tintin in Tibet (Europe) (En,Fr,De,Nl)
Tintin in Tibet (Europe) (En,Es,Sv)

If we prefer games in English, then games in Spanish, and then everything else (i.e. --prefer-language EN,ES) - we might expect Tintin in Tibet (Europe) (En,Es,Sv) to be the preferred clone. And now that is true! But previously, igir processed these clones as both being in English, which is the most preferred language; so they were considered equivalent, and other preferences such as region would have been their tiebreaker.

Fix: prefer getting languages from game names

If a game has releases cataloged, igir was getting a game's list of languages from the primary language of each region. But most DAT groups provide language information in game titles, and this usually provides more detail than assuming language from region.

Guessing a game's languages from its release regions is now the fallback in case languages aren't provided in the name.

Notification: minimum Node.js version increased to v16.6.0

First, Node.js v16 reached end-of-life a month ago on September 11, 2023. You should not be using Node.js v16 of any version, as it is no longer supported and will not receive security updates.

This change was necessary to adopt some TypeScript ESLint best practices to hopefully prevent runtime errors in the future.

All changes

12 October 2023 - 2a19172 - v2.0.6 (#756)
11 October 2023 - 1402e78 - Refactor: prefer Array.prototype.at() (#749)
11 October 2023 - 2095c42 - Fix: don't memoize recursive functions (#755)
11 October 2023 - 9106ac0 - Fix: prefer getting languages from game names rather than release regions (#750)
11 October 2023 - 5269f1e - Docs: contribution guidelines update (#752)
11 October 2023 - 2e5144e - Fix: better 1G1R preference of games that share a primary language (#748)

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