Releases: emmercm/igir
v2.0.6
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.
v2.0.5
Release Highlights
Feature: {jelos}
output token added
Thank you @samwelnella for this code contribution!
Just Enough Linux Operating System (JELOS) is a Linux distribution for a number of Anbernic, Powkiddy, Hardkernel, and other devices that use its own proprietary directory structure. See the official docs on adding games to a JELOS device.
All changes
6 October 2023 - cd28d78
- v2.0.5 (#746)
6 October 2023 - 8ca55d7
- CI: comment a new contributor's first PR (#745)
6 October 2023 - f29dcfb
- Feature: add {jelos} output token (#698)
5 October 2023 - c044b39
- Refactor: calculate checksums of archived files using streams (#744)
3 October 2023 - 33c5865
- Chore: Hacktoberfest topic & labels (#741)
3 October 2023 - 07bad62
- Feature: calculate file MD5 & SHA1 checksums (#630)
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.
v2.0.4
Release Highlights
Fixes: ROM set merging & splitting
@nottanumber continues to graciously help test edge cases in merging & splitting MAME sets, in lieu of proper MAME ListXML documentation existing on the internet.
Fix: non-fullnonmerged
(nonmerged
, split
, merged
) sets now include BIOS ROMs that don't exist in a BIOS set somewhere else. This would have affected machines such as aes
that aren't marked as a device, have no parent, and yet specify some BIOS ROMs.
Fix: status="nodump"
ROMs are now ignored as there is no chance of finding them, and DATs do not have checksum information for them. mame -verifyroms
will report these games as "is best available."
Fix: don't infer parent/clone information for DATs that have some
@jmf626 brought up some cases where DAT parent/clone information should be trusted and parent/clone inference is dangerous, such as different series numberings in different regions (e.g. NES Black Bass, The (USA)
is the same game as Black Bass II, The (Japan)
).
Parent/clone inference will no longer be performed if a DAT has any parent/clone information.
All changes
1 October 2023 - 359e711
- v2.0.4 (#735)
1 October 2023 - 12fd9eb
- CI: move Renovate lockFileMaintenance to a different day (#734)
1 October 2023 - c306663
- CI: Renovate updateNotScheduled:true (#733)
1 October 2023 - 0a12adf
- Refactor: filter to unique array values, comparing mapped values (#732)
1 October 2023 - 8cf3f1c
- Chore: pin dependency jest-extended to 4.0.1 (#730)
1 October 2023 - 7c0042a
- Docs: npm run from main instructions (#731)
1 October 2023 - 6e5b4e9
- Fix: ignore status:nodump ROMs when merging & splitting (#728)
1 October 2023 - add9ec9
- Fix: get rid of Jest ESM hacks (#729)
30 September 2023 - c76dcc0
- Fix: only exclude BIOS ROMs found in referenced romOf game (#727)
30 September 2023 - 4e62a8c
- Fix: don't infer parents for DATs that already have parent/clone info (#723)
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.
v2.0.3
Release Highlights
Feature: allow incomplete ROM sets
There may be rare instances that you want to keep/write incomplete ROM sets, where not every ROM in a multi-ROM game is found in any input director. For those occasions, there is a new --allow-incomplete-sets
option. The default is still to only keep full ROM sets, as games typically are not playable without all of their ROMs.
Fix: splitting & merging parent/clones with duplicate filenames but differing checksums.
@nottanumber has been on a roll reporting edge cases with the new ROM set merge/split option added in v2. This bug fix affects games where the parent and at least one clone has a ROM with the same filename but with a different checksum. For example:
<machine name="ddonpach" sourcefile="misc/cave.cpp">
<description>DoDonPachi (World, 1997 2/ 5 Master Ver.)</description>
<year>1997</year>
<manufacturer>Cave (Atlus license)</manufacturer>
<!-- ... -->
<rom name="eeprom-ddonpach.bin" size="128" crc="315fb546" sha1="7f597107d1610fc286413e0e93c794c80c0c554f" region="eeprom" offset="0"/>
<!-- ... -->
</machine>
<machine name="ddonpacha" sourcefile="misc/cave.cpp" cloneof="ddonpach" romof="ddonpach">
<description>DoDonPachi (2012/02/12 Arrange Ver. 1.1) (hack)</description>
<year>2012</year>
<manufacturer>hack (trap15)</manufacturer>
<!-- ... -->
<rom name="eeprom-ddonpach.bin" size="128" crc="2df16438" sha1="4881b70589a97e2420feb6d6e6737273beeff303" region="eeprom" offset="0"/>
<!-- ... -->
</machine>
All changes
30 September 2023 - b95cc4c
- v2.0.3 (#722)
29 September 2023 - c4cc554
- CI: don't exempt any assignees from stale issue checks (#721)
29 September 2023 - 768d71a
- Feature: allow incomplete ROM sets (#718)
29 September 2023 - 381e4d5
- Fix: merging parent/clone with same ROM filename and different checksum (#719)
29 September 2023 - 1821e5b
- Chore: update docker/setup-qemu-action action to v3 (#711)
28 September 2023 - 78af969
- Chore: update dependency @types/node to v18.18.0 (#716)
28 September 2023 - 7aba763
- Chore: update dependency @types/node to v18.17.19 (#706)
28 September 2023 - 0abf7f9
- Chore: update ESLint to v6.7.3 (#714)
28 September 2023 - 204e063
- Chore: update dependency @types/semver to v7.5.3 (#713)
28 September 2023 - 6b88149
- Chore: update actions/checkout action to v4 (#710)
28 September 2023 - 765bc30
- Chore: update Jest (#708)
28 September 2023 - 1221c65
- Chore: update ESLint (#707)
28 September 2023 - efb6acb
- Chore: update dependencies (#705)
28 September 2023 - b021477
- Chore: update adRise/update-pr-branch action to v0.7.0 (#709)
28 September 2023 - 1d1acaa
- Fix: prefer the fixdat command in tests (#704)
28 September 2023 - 2684f10
- Fix: add an end-to-end test for --zip-dat-name (#703)
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.
v2.0.2
Release Highlights
Feature: added {gameRegion}
and {gameLanguage}
output tokens
New {gameRegion}
and {gameLanguage}
output tokens have been added, deprecating the existing {datReleaseRegion}
and {datReleaseLanguage}
tokens. The difference with these new tokens is they can be replaced with inferred region and language information, rather than only coming from game "releases" defined in DATs. This makes the new tokens consistent with the region and language information used by --filter-region
, --filter-language
, --prefer-region
, and --prefer-language
.
The {datReleaseRegion}
and {datReleaseLanguage}
tokens will still work for now but will be removed in the future.
Thank you @samwelnella for the suggestion!
Fix: subdirectory structure within output .zip
archives
The support for Hardware Target Game Database SMDBs in v1.4.0 broke the ability for output .zip
archives to have subdirectories within them, which is the expected structure when building "merged" MAME ROM sets. This has been fixed.
Thank you @nottanumber for the continued MAME bug reports!
All changes
27 September 2023 - 682fec9
- v2.0.2 (#702)
27 September 2023 - 45cd8e3
- Fix: respect output archive entry paths with subdirectories (#701)
26 September 2023 - c3659a2
- Refactor: Game and Machine "with" recreation methods (#700)
26 September 2023 - 94e503a
- Feature: {gameRegion} and {gameLanguage} tokens (#699)
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.
v2.0.1
Feature: new option to control grouping ROMs by their game name
The default behavior of igir
is to automatically group extracted files for games with multiple files together in a subdirectory. For example:
# Game with multiple files is grouped:
Metal Gear Solid - VR Missions (USA)/Metal Gear Solid - VR Missions (USA).cue
Metal Gear Solid - VR Missions (USA)/Metal Gear Solid - VR Missions (USA).bin
# Game with a single file is not grouped:
Metal Gear Solid (USA).gbc
A new --dir-game-subdir <mode>
option has been added to allow forcing this behavior for games with a single file (--dir-game-subdir always
), or to turn the behavior off entirely (--dir-game-subdir never
).
Fix: non-retail games being considered retail for {gameType}
igir
was making an assumption that games with any releases in DATs should be considered "verified" which ends up giving them a "Retail" {gameType}
. This was a poor assumption, as DATs such as No-Intro's Game Boy Color have (Proto)
and other non-retail games with releases.
Thank you @samwelnella for this bug report after quite a bit of debugging!
Fix: duplicate files in MAME zips
The official MAME DATs have duplicate files for some machines such as neogeo
where the filename, size, and checksum are all the same but some metadata that igir
doesn't care about is different. igir
now filters out duplicate files from these sets.
Thank you @nottanumber for this bug report!
All changes
24 September 2023 - cd4fe62
- v2.0.1 (#694)
24 September 2023 - 9b4c47b
- Fix: de-duplicate split/merged ROM sets (#693)
24 September 2023 - af07369
- Feature: option to control when ROMs get grouped by their game name (#692)
24 September 2023 - 8be3150
- Fix: don't assume games with releases are "verified" (#690)
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.
v2.0.0
v2: The parent/clone infer, slice, and dice edition
You're gonna be in a great mood all day, because you're going to be parent/cloning your troubles away with igir
. Stop having a boring ROM collection, stop having a boring life.
🚀 New features
Parent/clone inference
A number of DAT groups, such as Redump, don't provide parent/clone information in their DATs. Unless you use a tool such as SabreTools you won't be able to create 1G1R sets from these DATs.
No longer! igir
can now associate most games together into parent/clone sets. There is no other widely used ROM manager that has this feature.
Here are some variants igir
can group together with ease:
- Differing regions
- Differing languages
- Differing release types (alpha, beta, debug, demo, prototype, sample, etc.) - including No-Intro, TOSEC, and GoodTools style tags!
- Differing retail types (collector's edition, limited edition, reprint, rerelease, etc.)
One caveat is: igir
isn't able to group together games that have different localized names, i.e. Pokemon - Blue Version (USA, Europe) (SGB Enhanced)
and Pokemon - Edicion Azul (Spain) (SGB Enhanced)
.
As the updated docs say, this type of inference will never be perfect, so please open a GitHub issue if you find a scenario that isn't working right!
MAME unmerged/split/merged set creation
igir
can now use parent/clone information from MAME DATs to create full un-merged, un-merged, split, and merged ROM sets.
This change comes with a whole new set of arcade documentation to explain merge types and how to build ROM sets for arcade emulators. The DATs page has also been updated with arcade information.
Other than CHD scanning, handling ROM set merging was one of the last major feature gaps igir
had vs. other ROM managers.
🐞 Fixes
Non-preferred ROMs are now reported as "ignored"
When running igir
in 1G1R (--single
) mode, both CLI & CSV reports would indicate that clones that were not written to the output directory were "missing." Now, the preferred clone from a parent/clone set is reported as "found," and all others are reported as "ignored."
Thank you @feurry for this bug report!
"Unmatched" ROMs in reports are now called "unused"
To more accurately describe what's actually happening, files in input directories that are not used as a source for any output file are now described as "unused."
The word "unmatched" was confusing because it could imply these files did not match any DAT, which might not be the case. Files might not be used because they're a duplicate, were filtered out, or weren't preferred based on 1G1R (--single
) settings.
Thank you @feurry for this suggestion!
CLI & CSV reports now respect --only-device
This was an oversight in v1.8.1.
Zip files are re-read for testing
Since v1.7.0, zip files in the output directory were not being re-read from disk in order to test them. This was a bug with some efficiency features added in that version.
📐 Command & option consistency
The --fixdat
option has been replaced with the fixdat
command
The --fixdat
option was the only option to cause file output, so for consistency, it was turned into a command.
The --fixdat
option will still work for now, but it will print a deprecation warning when used.
The --*-filter
options have been renamed to --filter-*
Other options that share similar behavior also share common prefixes, such as --dir-*
and --prefer-*
, so the --*-filter
options (--language-filter
, --region-filter
) got the same prefix treatment.
The --*-filter
options will still work for now, but they will print a deprecation warning when used.
The --dat-regex*
options have been renamed to --dat-name-regex*
...and new --dat-description-regex*
options have been added.
Unofficial MAME XML DATs, in particular, tend to have fairly sparse information in their name, so it may be desirable to filter based on their description instead.
The --dat-regex*
options will still work for now, but they will print a deprecating warning when used.
📂 Output token updates
{batocera}
Support has been added for:
- Nintendo DS
- Nintendo 3DS
Huge shoutout to @dcramer for their code contribution and GitHub Sponsors support!
🙏 Thank you
I started igir
in July 2022 because I was excited to eventually receive my Analogue Pocket preorder, but also because I was frustrated by the existing ROM management tools available. I found other tools unintuitive, lacking 1G1R functionality, and locked to single operating systems. And as a fallible software engineer, I thought I could do better.
Some stats about igir
:
- 7.7k downloads on npm and GitHub combined
- 170 stars on GitHub
- 592 pull requests merged on GitHub
- 11 feature requests reported & implemented, from 8 contributors
- 20 bugs reported & fixed, from 10 contributors
- 24,477 current lines of TypeScript
- 2 community code contributors
I just want to say thank you to everyone who has given me support on GitHub or Reddit, or even if you've just used igir
once. This is easily the most popular code project I've ever managed, and I can't wait to see where it goes in the following years 🚀.
All changes
23 September 2023 - 33a016d
- v2.0.0 (#687)
23 September 2023 - c334118
- Feature: DAT description regex options (#679)
23 September 2023 - 33e0f27
- Docs: usage updates (#686)
23 September 2023 - b1fb461
- Fix: fixdat command rather than option (#566)
23 September 2023 - 0987692
- Fix: --filter option prefix consistency (#565)
23 September 2023 - a9f7353
- Fix: rename UNMATCHED report status to UNUSED (#668)
23 September 2023 - 8688d68
- Fix: don't report non-preferred clones as missing (#667)
22 September 2023 - 1c9366d
- Fix: catch & log ROM header processing exceptions (#685)
22 September 2023 - 2e609e6
- Refactor: default --merge-roms fullnonmerged (#684)
22 September 2023 - 4701b8a
- Refactor: reformat the DAT processing progress bar (#683)
22 September 2023 - 4ee5583
- Fix: create a fresh Zip object when testing (#682)
22 September 2023 - 551436a
- Fix: Array[0] is not guaranteed to be defined (#680)
22 September 2023 - d141497
- CI: lower Renovate's TypeScript priority (#681)
22 September 2023 - f46ed92
- Docs: update (#678)
21 September 2023 - 0765e9d
- Feature: infer parent/child relationships between games (#542)
21 September 2023 - c952f2c
- Feature: DAT ROM merger & splitter (#666)
21 September 2023 - 86efbdd
- Refactor: start enums at 1 (#677)
21 September 2023 - caafc5b
- CI: don't limit concurrency on github.head_ref for on:pull_request (#675)
21 September 2023 - acefe02
- Fix: only consider writing candidates with files ([#674](http...
v1.9.4
Release Highlights
Feature: test
command checks filesize when a ROM checksum is unknown
There are situations such as patching or header removal where the output file's expected checksum is unknown, so it can't be validated. But in some situations, the expected filesize is known, so the test
command will now validate it.
Fix: clean
command won't delete fixdats
Per-DAT fixdats were not being excluded from deletion with the clean
command, resulting in them being deleted right after being created. This has been fixed.
Thank you @feurry for the bug report!
Semi-breaking: minimum Node.js version raised
Because of dependency management reasons, igir
's minimum Node.js version has been raised from >=14.18.0
to >=16.3.0
. Do keep in mind that Node.js 16 recently reached an early end-of-life on September 11th, so you should strongly consider upgrading to the latest LTS version (Node.js 18).
A Node.js end-of-life warning message has been added to igir
to recommend users upgrade their version if the current date is past the version's end-of-life date.
All changes
16 September 2023 - ff379ae
- v1.9.4 (#660)
15 September 2023 - 98a8ad2
- CI: update GitHub issue templates (#659)
15 September 2023 - ce19ae5
- CI: GitHub Actions stale issue labeler & closer (#658)
15 September 2023 - 14c1eab
- CI: update GitHub labels (#657)
15 September 2023 - 686a6a3
- Fix: don't clean fixdats (#656)
11 September 2023 - 8935a0a
- Chore: increase test coverage (#651)
10 September 2023 - b2f7448
- Feature: test written file & entry size (#649)
30 August 2023 - 1eafa33
- Chore: update ESLint to v6 (major) (#636)
30 August 2023 - a2404b2
- Refactor: use the nullish operator where possible (#644)
30 August 2023 - d7cc126
- Feature: Node.js version end-of-life checker & logger (#643)
29 August 2023 - e0f0a69
- Chore: update dependency archiver to v6 (#608)
29 August 2023 - d503f88
- Chore: update lockfile (#610)
29 August 2023 - d175db3
- Chore: update dev dependencies (#607)
29 August 2023 - 8a30283
- Chore: update ESLint (#635)
29 August 2023 - 8bb7226
- Chore: update dependencies (#604)
29 August 2023 - 154de61
- Chore: update dependency typescript to v5.2.2 (#605)
29 August 2023 - ffb0fe2
- Chore: update Jest (#606)
29 August 2023 - 1c04034
- Chore: increase minimum Node.js version to v15 (#640)
29 August 2023 - 594211c
- CI: comment back on the version bump PR after publishing to npm (#642)
29 August 2023 - 1c1a4b3
- Chore: Renovate npm strict engines.node constraint filtering (#641)
28 August 2023 - 4c04558
- Deps: Renovate allowedPostUpgradeCommands fix (#638)
28 August 2023 - a0e246f
- Deps: rebase Renovate PRs when conflicted (#637)
28 August 2023 - 73f54d3
- CI: comment back on the version bump PR after publishing to npm (#634)
28 August 2023 - fcb7d6b
- Docs: contribution guidelines (#633)
28 August 2023 - 1ee154e
- CI: JSDoc ESLint rules (#632)
27 August 2023 - 19112ff
- CI: remove a lot of eslint-disables (#631)
26 August 2023 - 18c7e1c
- CI: Node.js compile on-demand workflow dispatch (#629)
26 August 2023 - 36f5a4b
- CI: comment back on the version bump PR after drafting a release (#627)
26 August 2023 - 82e05e6
- CI: Node.js compile on-demand workflow dispatch (#628)
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.
v1.9.3
Release Highlights
Feature: npm package provenance (security)
igir
is now being published to npm with package provenance.
I would search "supply chain attacks" if you're curious, but the summary is: anyone can validate that igir
(and other open-source projects like it) does not itself contain any malicious code, but that does not guarantee the version published to npm wasn't manipulated by a malicious actor during the build & publish process. With package provenance, packages built on trusted platforms (such as GitHub Actions) can prove that what is published to npm is exactly what was under source control at the time, and there is a certificate chain for it.
That's a lot of words to say: you can trust new versions of igir
on npm even more than you did before.
Feature/fix: detecting symlink permissions on Windows
Some newer versions of Windows require administrator privileges to create symlinks, even when the current user has full permissions on the source & target directories. igir
now tries to detect this lack of permissions at startup when specifying the igir symlink
command, and will offer the advice to try "run as administrator."
Fix: --dir-letter-limit
with multi-ROM games
Unfortunately, v1.9.1 didn't fully fix all of the issues introduced in v1.8.0.
Multi-ROM games were being sorted by their ROM name, not their game name. Hopefully this has been fixed for good.
As an example, the No-Intro Commodore Amiga (Flux) DAT has the game:
<game name="Apidya (Unknown)">
<description>Apidya (Unknown)</description>
<rom name="disk1\apidya_disk1_00.0.raw" size="265730" crc="555b1be8" md5="b1f8d70e604226932b07fd4689bcf585" sha1="af96ba0c5682f16b2b8dcb0547876c51c918fc87"/>
<rom name="disk1\apidya_disk1_00.1.raw" size="256990" crc="9ef64ba6" md5="e99e9d0353df6e3262178b639a974489" sha1="1dee444cbadb98fe1a1058f014b943bee9e5caaa"/>
<!-- ... -->
</game>
ROMs from this games were getting sorted into the "D" subdirectory because of the leading "D" in disk*_apidya_*.raw
. But because this is a multi-ROM game, it should get sorted into the "A" subdirectory because of the leading "A" in Apidya (Unknown)/
.
Fix: the ROM writer threads could exceed --writer-threads <num>
If multiple DATs were written at once, there was a chance that the ROM writer threads could exceed the intended max. This would result in higher CPU and seemingly long file write times.
All changes
26 August 2023 - 4239e0b
- v1.9.3 (#625)
26 August 2023 - 8fd1ddd
- CI: comment back on the version bump PR after drafting a release (#624)
26 August 2023 - 74ce5a5
- CI: GitHub Actions efficiency (#623)
26 August 2023 - 0463bbf
- CI: add some console logs to debug tests in Windows (#622)
26 August 2023 - 346e138
- Fix: logger log level prefix CLI formatting (#621)
25 August 2023 - 7067751
- Feature: add {batocera} support for Amiga CDTV, MSX2, MSX2+, and MSX TurboR (#620)
25 August 2023 - 1dbfc9e
- Fix: Windows symlink permissions check (#619)
25 August 2023 - cb59eb1
- CI: Renovate: separate ESLint updates, try to fix TypeScript files (#618)
25 August 2023 - 458dce0
- CI: Renovate: limit PR open time, use GitHub auto-merge (#617)
25 August 2023 - 3903204
- Fix: pad the last line of wrapped logs with spaces (#615)
25 August 2023 - b7e4bc2
- Fix: prevent writer threads from exceeding the maximum (#616)
25 August 2023 - 76c9f63
- Fix: dir letter of games with multiple ROMs (#613)
25 August 2023 - 5072263
- Refactor: eliminate some File & ArchiveEntry promises (#612)
25 August 2023 - 3668793
- Refactor: underline notice logs (#614)
25 August 2023 - be4a6da
- CI: publish to npm with provenance (#611)
24 August 2023 - 2825d6b
- Refactor: more efficient array duplicate element removal (#603)
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.
v1.9.2
Release Highlights
Feature: new {batocera}
output token has been added
Batocera uses a proprietary directory structure, and igir
now has support to sort ROMs into the correct folders, similar to other emulator frontend tokens.
Huge thank you to @dcramer for this code contribution, your sponsorship, and for helping me work through some CI difficulties as the first contributor in a while!
See the Batocera page in the igir docs for more information.
Fix: determining ROM output directories to clean
v1.9.1 introduced a regression where igir
was no longer finding the right ROM output directories to clean, resulting in some excess error log spam. The issue should be fixed, and better end-to-end tests have been added.
Thank you @docbobo for the bug report!
All changes
24 August 2023 - 5633a8f
- v1.9.2 (#601)
24 August 2023 - aecf67c
- CI: fix PR renamer for version titles (#602)
24 August 2023 - 7bfeb51
- Refactor: isolate ROM & ReleaseCandidate chained processing steps (#600)
23 August 2023 - e29aa4d
- Docs: update (#599)
23 August 2023 - 8d2f8e8
- CI: use github.head_ref to limit workflow concurrency (#598)
23 August 2023 - 742663a
- Feature: add a number of {batocera} systems (#597)
23 August 2023 - 3894d89
- Feature: add Xbox and Xbox 360 support for {batocera} (#596)
23 August 2023 - 8b97a41
- CI: add GitHub Actions workflow linter (#594)
23 August 2023 - c4e1abf
- Fix: npm run build
on Windows (#593)
22 August 2023 - 0278c1d
- CI: escape PR titles for automatic renaming (#595)
22 August 2023 - 7842ba4
- Feature: add {batocera} output token (#575)
22 August 2023 - c9c3337
- CI: use on:pull_request_target for PR-modifying workflows (#592)
22 August 2023 - f996b38
- Docs: writing archives (#591)
22 August 2023 - 19e2c43
- CI: PR title enforcement & automatic renamer (#590)
22 August 2023 - 20c4219
- CI: explicit permissions for PR commenter (#589)
22 August 2023 - 40e1b89
- Fix: output cleaning directories (#588)
20 August 2023 - 4d35c98
- CI: run PR commenter with PRs from forks (#585)
20 August 2023 - 5b771c8
- Fix: calculate raw file checksum when overwriting invalid files (#584)
20 August 2023 - c941e24
- CI: release drafter GitHub Action should use new version number (#583)
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.