Skip to content

Releases: emmercm/igir

v1.9.1

19 Aug 15:23
ea21409
Compare
Choose a tag to compare

Release Highlights

There are a lot of fixes and tweaks in this release. I'm intending a v2 release when I'm able to finish the parent/child inference feature, and had been holding back these changes for that, but there have been enough bug fixes that warrant an earlier release.

Feature: progress bar totals increment during file scans

When scanning directories with a lot of files (likely most obvious with --input option), igir would wait until the end of file scanning to indicate how many files it had found. Now, when specifying directory names (unfortunately globs aren't supported right now), the total file count will increment to help indicate that progress is being made.

Optimization: don't calculate "raw" file CRCs when not testing output files

Calculating the checksums of large files (e.g. BIN/CUEs, ISOs, CHDs, etc.) can take a really long time. When copying or moving only (and not extracting or zipping), and not testing them (i.e. just igir copy or igir move), igir will no longer bother calculating the expected checksum of these files.

Fix: fatal error with invalid progress bar size

@netwaretcs reported a bug that I see infrequently during development and was hoping was limited to local change instability. Sometimes igir would full crash when the "in progress" section of the progress bar had a negative number, a race condition I'm still trying to pin down. The crash should be prevented, at least.

Fix: --dir-letter-limit with multi-ROM games

The --dir-letter-limit option added in v1.8.0 was causing multi-ROM games to get sorted into odd folders, sometimes even outside of the --dir-letter folder. This has been fixed.

Fix: self-closing tags in MAME DATs

@kbullett found a bug with older MAME DATs that make use of XML self-closing tags causing crashes in igir. This should be fixed, but please continue to report any issues you see with non-DTD-compliant DATs!

Fix: deletion of moved archives of games with duplicate ROMs

@docbobo reported a bug where igir would not delete single-game archives of games that contain duplicate ROMs (e.g. duplicate BIN/CUE tracks). This should be fixed.

All changes

19 August 2023 - ea21409 - v1.9.1 (#582)
19 August 2023 - 62c0303 - CI: ShellCheck (#580)
19 August 2023 - 423c8b8 - Fix: delete moved archives of games that contain duplicate ROMs (#581)
19 August 2023 - 79c7e72 - Refactor: use TypeScript sets where appropriate (#577)
19 August 2023 - cce309e - Git: update Husky pre-commit for POSIX sh Compatibility (#578)
18 August 2023 - a0636ac - Refactor: eliminate TypeScript "as" keyword (#573)
14 August 2023 - 51cb6fc - UX: warn when specifying --dir-dat-* options that don't make sense (#571)
14 August 2023 - 88bbde7 - Chore: add 1G1R tests (#570)
14 August 2023 - 754fcde - Chore: update dependency node to v18.17.1 (#562)
14 August 2023 - 2674361 - Fix: stop & cleanup the progress bars on SIGINT (#572)
14 August 2023 - f46cf5b - Fix: protections against self-closing tags in XML DATs (#569)
10 August 2023 - 6d4e249 - Feature: don't calculate CRCs for raw files when not testing (#567)
10 August 2023 - fb7d92a - Fix: dir letter limit with multi-ROM games (#564)
10 August 2023 - 1092039 - Refactor: break out ROM output path code into its own file (#563)
7 August 2023 - ed1d5b4 - Feature: add Belgium & Scandinavia as regions (#561)
7 August 2023 - 25b6a9d - Docs: new logo (#543)
7 August 2023 - 96ceec8 - Feature: increment progress bar totals during file scans (#560)
7 August 2023 - bad93bd - Docs: update (#559)
6 August 2023 - ed1224c - Docs: update (#550)
6 August 2023 - 6056738 - Fix: progress bar can't have negative "in progress" value (#558)
5 August 2023 - 38bf781 - CI: release drafter GitHub Action should use new version number (#555)

Sponsors

  • @dcramer thank you for being the first project sponsor! It means a lot, and your code contributions already have been awesome.

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

v1.9.0

05 Aug 23:23
d5563d5
Compare
Choose a tag to compare

Release Highlights

This release helps bring igir up to parity with features found in other ROM collection managers.

Feature: subdirectory DAT description option

A new --dir-dat-description option has been added that functions similarly to --dir-dat-name. The option will append a DAT's description as a subdirectory to the output directory.

Feature: NTSC & PAL preference options

New --prefer-ntsc and --prefer-pal 1G1R options have been added. Most DAT groups do not supply this information for most games, so you shouldn't need this option very frequently.

Feature: debug game filtering & reporting

New --no-debug and --only-debug filter options have been added, and debug games are now considered non-retail.

A new "debug" column has been added to the report CSV (igir report).

All changes

5 August 2023 - d5563d5 - v1.9.0 (#554)
5 August 2023 - d461073 - Feature: parse Redump-style game categories (#553)
5 August 2023 - dbed7b2 - Feature: no deubg & only debug filters, debug reporting (#551)
5 August 2023 - 72f824c - Feature: prefer NTSC & PAL options (#552)
4 August 2023 - d832e7f - Renovate: apply config migration manually (#549)
4 August 2023 - d1ca453 - Fix: trim whitespaces from the fixdat filename (#548)
4 August 2023 - ed423c3 - Feature: dir-dat-description option, {datDescription} token (#547)
4 August 2023 - 99cea95 - Docs/CI: fetch full Git history to determine page creation date (#546)
2 August 2023 - b2375c9 - Docs: put the homepage URL in the CLI header (#544)
30 July 2023 - ecd5d28 - Fix: remove empty contribution guidelines (#541)
30 July 2023 - 2d3d8ca - Refactor: rename some modules to have accurate noun prefixes (#539)
30 July 2023 - c8603af - CI: release drafter GitHub Action needs added/deleted instructions (#538)

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

v1.8.2

30 Jul 01:08
c1d85e5
Compare
Choose a tag to compare

Release Highlights

Fix/feature: ROM reports respect filter options

ROMs that are filtered out by --no-* and --only-* options will no longer appear in CLI & CSV (i.e. igir report) reports.

Previously, when supplying ROM filter options such as --no-demo, --no-prototype, and --no-aftermarket, ROMs that matched that criterion would still appear in the CSV report and CLI "done" message.

For example, No-Intro's July 29th Game Boy DAT catalogs 2,156 games. Previously, even if you supplied --no-demo --no-prototype --no-aftermarket as options, both the CLI and CSV report would indicate there are 2,156 possible games, but in reality that criteria only matches 1,802 games.

All changes

29 July 2023 - c1d85e5 - v1.8.2 (#537)
29 July 2023 - 5254ad4 - Refactor: prefer the nullish operator (#536)
29 July 2023 - 6ed395a - Fix: report & progress bar status respect ROM filters (#532)
29 July 2023 - 903acd0 - CI: release drafter GitHub Action requires full commit log depth (#535)
29 July 2023 - 0ecc4e0 - CI: release drafter GitHub Action needs temporary Git tag (#534)
29 July 2023 - 40d04ca - CI: release drafter GitHub Action requires commit log depth (#533)
29 July 2023 - 8e3be7a - CI: release drafter GitHub Action don't use commit diffs (#531)
29 July 2023 - a00322b - Refactor: split CandidateFilter into DATFilter & CandidatePreferer (#530)
29 July 2023 - d7a66c8 - CI: release drafter GitHub Action allow manual runs (#529)
29 July 2023 - 0908da9 - CI: release drafter GitHub Action requires Node.js (#528)
28 July 2023 - 84274ef - CI: version-bumping GitHub Action requires squash merging (#527)

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

v1.8.1

29 Jul 14:16
f2d5f79
Compare
Choose a tag to compare

Release Highlights

Feature: new {gameType} replaceable token

To help complement the new --only-* filter options added in v1.8.0, a new {gameType} output token has been added.

When used in the --output option's value, the {gameType} token will be replaced with one of the following based on the game/ROM:

  • Aftermarket
  • Alpha
  • Bad
  • Beta
  • BIOS
  • Demo
  • Device
  • Fixed
  • Hacked
  • Homebrew
  • Overdump
  • Pending Dump
  • Pirated
  • Prototype
  • Retail
  • Sample
  • Test
  • Trained
  • Translated
  • Unlicensed

Thank you, @21millStreets, for the feature request!

All changes

28 July 2023 - f2d5f79 - v1.8.1 (#526)
28 July 2023 - 999d660 - CI: version-bumping GitHub Action requires Node.js (#525)
27 July 2023 - 6f842c3 - Feature: {gameType} output token (#522)
27 July 2023 - a5bad6a - CI: use personal access token for rebasing (#524)
27 July 2023 - a699328 - CI: automatically rebase auto-mergeable PRs (#523)
26 July 2023 - 4fa1e7f - Fix: make non-TTY output consistent with progress bar freezing (#521)
25 July 2023 - 8b1a5b3 - CI: release drafter GitHub Action (#519)
25 July 2023 - 01e15a8 - CI: version-bumping GitHub Action (#518)
25 July 2023 - e9ddcb9 - Chore: @typescript-eslint/no-restricted-imports fix (#514)
25 July 2023 - 502e91d - Chore: revert dependency updates (#516)
25 July 2023 - b1abb42 - Chore: fix Renovate config, GitHub Actions required status checks (#515)
25 July 2023 - d27b377 - Chore: update lockfile (#510)
25 July 2023 - eef3a67 - Chore: placeholder for GitHub Actions release-drafter/release-drafter (#513)
25 July 2023 - 533d3ab - Chore: update dependency @types/node to v18.16.20 (#512)
25 July 2023 - ef222d8 - Chore: update dev dependencies to v6 (major) (#509)
24 July 2023 - a0fbb88 - Chore: update Jest (#507)
24 July 2023 - fe60a6a - Chore: update dependency release-it to v16 (#508)
24 July 2023 - 81279cf - Chore: update dev dependencies (#506)
24 July 2023 - 7af5cd6 - Chore: update dependencies (#504)
24 July 2023 - 0601dbf - Chore: update dependency typescript to v5.1.6 (#505)

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

v1.8.0

24 Jul 02:51
f9b47d0
Compare
Choose a tag to compare

Release Highlights

New --dir-letter-limit option added

This new option lets you specify the maximum number of ROMs per --dir-letter subdirectory. Some ROM cart devices and FPGA cores may have memory limitations around opening directories with many ROMs.

This new option will split subdirectories like this:

Output/A/
Output/B1/
Output/B2/
Output/C/
Output/D1/
Output/D2/
Output/D3/

Thank you, @21millStreets, for the feature request!

New --only-* options

Every existing --no-* ROM filtering option now has a matching --only-* option. The full list of new options is:

  • --only-device
  • --only-unlicensed
  • --only-demo
  • --only-beta
  • --only-sample
  • --only-prototype
  • --only-test-roms
  • --only-aftermarket
  • --only-homebrew
  • --only-unverified
  • --only-bad

Thank you, @21millStreets, for the feature request!

Redump-style revisions are now supported

Redump uses letters rather than numbers for some revisions, and they use ring codes to differentiate some releases. Examples:

Sega Classics Arcade Collection - Limited Edition (Europe) (Rev A)
Quiz Scramble Special (Japan) (Rev B)
Dungeon Master II - Skullkeep (USA) (RE3)
Sonic CD (USA) (RE125)

Both types of numbering schemes are now parsed as revision numbers for the --prefer-revision-newer and --prefer-revision-older options.

All changes

24 July 2023 - f9b47d0 - v1.8.0 (#503)
24 July 2023 - 0f61440 - Chore: bug report template update (#502)
24 July 2023 - 37e3b89 - Feature: support Redump revisions for revision preferences (#501)
24 July 2023 - 8569246 - Feature: "only" ROM filtering options for every "no" option (#499)
24 July 2023 - 4a4508f - Feature: dir letter limit option (#496)

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

v1.7.1

24 Jul 00:16
b8acf43
Compare
Choose a tag to compare

Release Highlights

Update checker

igir will now print a notice message when there is a new version available.

All changes

23 July 2023 - b8acf43 - v1.7.1 (#500)
23 July 2023 - 9aee9aa - Feature: update checker (#497)
23 July 2023 - 29a4baf - Refactor: queue log messages (#498)
23 July 2023 - 38dcd40 - Fix: maintain ROM folders from DATs for patched ROMs (#494)
23 July 2023 - 07f9c92 - Refactor: tighten output path assembling function signatures (#493)

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

v1.7.0

22 Jul 23:23
2cccd42
Compare
Choose a tag to compare

Release Highlights

Even though the minor version was bumped, this isn't obviously a feature release. It's more of an opinionated "bug" fix that should make igir's behavior with writing archives of multiple ROMs more intuitive.

Fix: when not extracting, prefer that a game's ROMs all come from the same input archive

When a game has multiple ROMs and igir isn't extracting them during output (e.g. igir [copy|move] zip or just igir [copy|move]), prefer that those ROMs all come from the same archive in the input directories, if possible.

There are two nuanced scenarios that can happen otherwise:

  1. When processing archived input files, and when not extracting or zipping (i.e. just igir [copy|move]), if igir sources ROMs from different input files, then you would have gotten a warning message about different files trying to write to the same output file, and nothing would have been written.

    This would have been most obvious with consoles with games that have duplicate ROMs, such as some disc-based systems having duplicate Track 01s. But there were likely other edge case scenarios when dealing with duplicate ROMs in archive inputs, in general.

    Thank you, @chainsawsalad, for reporting this scenario and working with me on testing the solution!

  2. When processing archived input files, and when moving & (re-)zipping (i.e. igir move zip), if igir sources ROMs from different input files, then the input archive files may not have been deleted (i.e. not successfully "moved").

    That's because when moving ROMs, igir will only delete input archives if every file in it was written to the output. Otherwise, there would be some file loss, and this might be unexpected to users.

There is no single "right way" to handle situations like these, and there may be other edge cases that haven't been found or reported yet, so please keep your feedback coming on GitHub!

All changes

22 July 2023 - 2cccd42 - v1.7.0 (#491)
22 July 2023 - 1e7841f - Fix: only prefer all ROMs from the same input archive if not extracting (#492)
22 July 2023 - 308c532 - Fix: prefer all ROMs for a game come from the same input archive (#467)
19 July 2023 - 7ae6cd0 - Chore: update dependency word-wrap to 1.2.4 [SECURITY] (#488)
19 July 2023 - aec12ec - Refactor: memoize some archive methods for performance (#487)
18 July 2023 - d18991f - Chore: update dependency node to v18.17.0 (#486)

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

v1.6.7

17 Jul 03:27
7cfc191
Compare
Choose a tag to compare

Release Highlights

New --no-device option added

A new filter option has been added to filter out MAME "devices".

See the ROM Filtering docs for the full information on filtering ROMs.

Fix a potential crash when reporting on games with no ROMs

Some DATs (such as MAME ones) contain games with no ROMs, and these were causing issues when generating the CSV report (igir report). This should be fixed.

Thank you @dixius99 for the bug report!

All changes

17 July 2023 - 7cfc191 - v1.6.7 (#479)
13 July 2023 - 51a5c42 - Feature: report on devices (#477)
12 July 2023 - 51096a0 - Feature: no devices filter option (#476)
12 July 2023 - fbbe586 - Fix: reporting on games with no ROMs (#475)
8 July 2023 - 88afaac - Chore: npm funding link (#470)
7 July 2023 - c2f96b0 - Chore: update Snyk badge (#471)
7 July 2023 - 3fa6b4d - Feature: postinstall script for npx, and GitHub commenter (#468)
28 June 2023 - cfca06a - Chore: update lockfile (#462)
28 June 2023 - e6f7c47 - Chore: update dev dependencies (#459)
28 June 2023 - 3facb49 - Chore: update dependency @types/jest to v29.5.2 (#458)
28 June 2023 - 41ece15 - Chore: update dependencies (#461)
27 June 2023 - 3ed29f5 - Fix: allow duplicate input files when writing a single zip's entries (#452)
27 June 2023 - 7da58b7 - Refactor: don't discard duplicates during ROM scanning (#454)
27 June 2023 - ecb2427 - Refactor: index ROMs by checksum only once, before generating candidates (#451)

v1.6.6

27 Jun 02:30
885e17b
Compare
Choose a tag to compare

Release Highlights

Fix: support for MAME XML DATs

progetto-SNAPS, pleasuredome, and likely other MAME DATs do not conform to the Logiqx XML DTD, so they were not supported previously. But now they are supported! Thankfully, they all appear to be non-compliant in the same ways, so they all should work now.

Thank you @mattieb for the bug report!

All changes

27 June 2023 - 885e17b - v1.6.6 (#466)
26 June 2023 - de6787e - Fix: scale progress bar in-progress correctly (#464)
26 June 2023 - c19acec - Feature: support MAME XML DATs (#463)
26 June 2023 - e332503 - Chore: increase test coverage (#465)
25 June 2023 - 908e412 - Chore: update dependency typescript to v5.1.3 (#460)
24 June 2023 - d6addc5 - Chore: update Node.js to v18.16.1 (#447)
24 June 2023 - 5f4502a - Chore: update dependency semver to 7.5.2 [SECURITY] (#457)

v1.6.5

23 Jun 22:32
865fa1c
Compare
Choose a tag to compare

Release Highlights

New --writer-threads debug option added

The Swiss GameCube homebrew is sensitive to fragmentation of ISO files, even on flash media, so this option was added to limit how many ROM files are written at once.

Docs update

New documentation pages have been added for commands, output tokens, the Analogue Pocket, and MiSTer FPGA.

As always, you can find the official igir documentation at https://igir.io/overview/.

All changes

23 June 2023 - 865fa1c - v1.6.5 (#455)
23 June 2023 - 90cc2be - Docs: update (#449)
23 June 2023 - 04242a8 - Fix: reduce candidate missing files log level (#450)
21 June 2023 - ebbc896 - Chore: GitHub labels syncing (#448)
21 June 2023 - 5587f14 - Feature: progress bar to show # actively in progress (#442)
13 June 2023 - 90b8941 - Chore: update lockfile (#405)
13 June 2023 - 5e57427 - Feature: writer threads option (#443)
13 June 2023 - d16cdf9 - Fix: always log found ROM count, even without DATs (#445)
13 June 2023 - 0584304 - Fix: ROMWriter filesize logging & consistency (#444)
28 May 2023 - 15ab442 - Chore: update dependencies (#404)
28 May 2023 - 6e93244 - Chore: update dev dependencies (#403)