Skip to content

Releases: rommapp/romm

v4.4.0-beta.2

v4.4.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 05 Nov 00:06
3afe2f5

What's Changed

Full Changelog: 4.4.0-beta.1...4.4.0-beta.2

v4.4.0-beta.1

v4.4.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 01 Nov 15:45
9fc3863

Highlights

Warning

  • The Tinfoil feed endpoint has been updated from /tinfoil/feed to /feeds/tinfoil, update your Tinfoil config accordingly.
  • A manual Scheduled LaunchBox metadata update must be run once before Launchbox can be used as a metadata source.

Alternative boxart

Spice up your collection with 3D, physical, and mixed media boxart, courtesy of Screenscraper! Start by configuring which media assets to download in your config.yml file:

scan:
  media:
    - box2d
    - box3d
    - physical
    - miximage
    - screenshot
    - manual
    - bezel

Available media types:

  • box2d - Normal cover art (always enabled)
  • box3d - 3D box art
  • miximage - Mixed image of multiple media
  • physical - Disc, cartridge, etc.
  • screenshot - Screenshot (enabled by default)
  • title_screen - Title screen
  • marquee - Custom marquee
  • logo - Transparent logo
  • fanart - User uploaded artwork
  • bezel - Bezel displayed around the EmulatorJS window
  • manual - Manual in PDF format (enabled by default)
  • video - Gameplay video (warning: large file size)

Restart the container.
Now on the scan page, select Screenscraper as the metadata source, Update metadata as the scan type, and click the Scan button. The media assets will be downloaded and stored alongside existing resources for covers and screenshots. Then under User Interface (/user-interface), change the Boxart style to 3D, Physical, or Mix Image as desired.

2D Box
Screenshot_2025-10-23_at_3 54 58_PM
3D Box
Screenshot_2025-10-23_at_3 55 07_PM
Physical
Screenshot_2025-10-23_at_3 55 16_PM
Mix Image
Screenshot_2025-10-23_at_3 55 25_PM

#2598

ES-DE gamelist.xml

EmulationStation, and it's modern successor ES-DE, use a custom XML format to store game metadata. RomM can parse this format and import the assets as cover art and screenshots. You'll need to store the gamelist.xml file and any related assets under the platform folder, and select ES-DE in the "Metadata sources" dropdown on the scan page:

library/
  └─ roms/
    └─ gba/
      ├─ game_1.gba
      ├─ game_2.gba
      ├─ gamelist.xml
      ├─ 3dboxes/
      │  ├─ game_1.png
      │  └─ game_2.png
      ├─ covers/
      ├─ screenshots/
      └─ etc...

Here's an example of the content in a typical gamelist.xml file, though the parser supports more fields not listed:

<?xml version="1.0"?>
<gameList>
	<game>
		<path>./Advance Wars (J) (Rev 1).zip</path>
		<name>Advance Wars</name>
		<desc>The battle lines have been drawn, and an elite group of sly strategists is massing troops at your borders. You'll have to command ground, air and naval forces if you hope to survive the coming wars, and it won't be easy. With 114 maps to battle on and both the Single-Pak and Multi-Pak link modes, Advance Wars brings turn-based strategy to a depth never before seen on a handheld!</desc>
		<rating>0.8</rating>
		<releasedate>20020111T000000</releasedate>
		<developer>Intelligent Games</developer>
		<publisher>Nintendo</publisher>
		<genre>Strategy</genre>
		<players>1-4</players>
		<video>./videos/Advance Wars (J) (Rev 1).mp4</video>
		<box3d>./3dboxes/Advance Wars (J) (Rev 1).png</box3d>
		<backcover>./backcovers/Advance Wars (J) (Rev 1).png</backcover>
		<cover>./covers/Advance Wars (J) (Rev 1).png</cover>
		<fanart>./fanart/Advance Wars (J) (Rev 1).jpg</fanart>
		<manual>./manuals/Advance Wars (J) (Rev 1).pdf</manual>
		<marquee>./marquees/Advance Wars (J) (Rev 1).png</marquee>
		<miximage>./miximages/Advance Wars (J) (Rev 1).png</miximage>
		<physicalmedia>./physicalmedia/Advance Wars (J) (Rev 1).png</physicalmedia>
		<screenshot>./screenshots/Advance Wars (J) (Rev 1).png</screenshot>
		<title_screen>./titlescreens/Advance Wars (J) (Rev 1).png</title_screen>
		<thumbnail>./covers/Advance Wars (J) (Rev 1).png</thumbnail>
	</game>
</gameList>

#2563

Task status page

We've added a new section on the /administration page for monitoring background tasks. This section displays real-time task status, execution statistics for successful tasks, and error messages for failed tasks. #2502

Screenshot 2025-10-27 at 4 05 56 PM

Multi-threaded library scanning

Multiple games under the same platform can now be scanned in parallel, significantly reducing the time required to scan large libraries. Simply increase the SCAN_WORKERS environment variable to the number of games to scan in parallel. Note that parallel scanning is limited by the power of your CPU and the maximum permitted connections to selected metadata providers. #2566

Screenshot 2025-10-27 at 4 22 23 PM

Manually edit metadata

The game's edit window now allows you to directly edit metadata IDs and JSON values. Changing a metadata ID will prompt the server to refresh metadata from that specific source, using the new ID. The JSON values can also be edited directly, and will be saved as raw metadata; for example, you can update youtube_video_id to use gameplay videos instead of trailers. Note: an UPDATE or COMPLETE scan of a game will override any manual changes made to metadata IDs or JSON values. #2578

Screenshot 2025-10-27 at 4 29 06 PM

PS3/PSVita/PSP PKGi and Kekatsu DS feeds

Added support for PKGi and Kekatsu feed formats, enabling direct integration with popular game download tools:

  • PKGi PS3 (/feeds/pkgi/ps3/{content_type}): Supports games, DLC, demos, updates, patches, mods, translations, and prototypes
    • PKGi PSP (/feeds/pkgi/psp/{content_type}): Supporting the same content types
    • PKGi PS Vita (/feeds/pkgi/psvita/{content_type}): Supporting the same content types
  • Kekatsu DS (/feeds/kekatsu/{platform_slug}): Supporting Nintendo DS, GBA, and other compatible platforms with box art metadata

#2572

ScummVM metadata

Metadata for ScummVM games stored under a scummvm folder can now be fetched exclusively from IGDB, using a special keyword search. #2576

Screenshot 2025-10-27 at 4 27 46 PM

Screenscraper hash matching

The scanner will attempt to match games against Screenscraper's hash database, using the pre-calculated hashes for the largest, top-level ROM file. If no match is found, it will fall back to the existing file name matching logic. #2616

#2616

Minor changes

  • [ROMM-2546] Suborder consoles by generation by @gantoine in #2571
  • [ROMM-2531] Allow scanning without metadata providers by @gantoine in #2573
  • [ROMM-2491] Add shuffle button in navbar by @gantoine in #2574
  • [ROMM-2289] Display smart collection filter rules in sidebar by @gantoine in #2584
  • [ROMM-2159] Remember game sort order on reload by @gantoine in #2585
  • [ROMM-2147] Clarify language around scan types by @gantoine in #2586

Note

New environment variables

  • SCAN_WORKERS: Number of parallel worker processes for scanning games
  • TASK_RESULT_TTL: How long to keep task results in Valkey (in seconds)
  • SEVEN_ZIP_TIMEOUT: imeout for 7-Zip operations (in seconds)

Fixes

  • [ROMM-2555] Validate release date for tinfoil feed by @gantoine in #2557
  • [ROMM-2554] Remove htlb from manual search by @gantoine in #2558
  • [ROMM-2551] Fix error message on rom delete by @gantoine in #2559
  • [ROMM-2552] Rom hashes should only include top-level nested files by @gantoine in #2567
  • [ROMM-2548] Fix text readablility of new version alert by @gantoine in #2568
  • [ROMM-2547] Flashpoint scrape by flashpoint-XXX tag by @gantoine in #2569
  • [ROMM-2338] Consistent pending job fetch in watcher by @gantoine in #2582
  • [ROMM-2146] Open rows in new tab with right click by @gantoine in #2587
  • [HOTFIX] Fix fetching saves/states for rom or platform by @gantoine in #2594
  • Fix type error when role claim is null by @Tarow in #2570
  • Separate checks for readable/writable config.yml by @gantoine in #2588
  • Multi-threaded s...
Read more

v4.4.0-alpha.5

v4.4.0-alpha.5 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 31 Oct 16:07
6ad6b8f

What's Changed

Full Changelog: 4.4.0-alpha.4...4.4.0-alpha.5

v4.4.0-alpha.4

v4.4.0-alpha.4 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 31 Oct 01:20
7fa978c

What's Changed

Full Changelog: 4.4.0-alpha.3...4.4.0-alpha.4

v4.4.0-alpha.3

v4.4.0-alpha.3 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 29 Oct 13:27
78044c8

What's Changed

Full Changelog: 4.4.0-alpha.2...4.4.0-alpha.3

4.4.0-alpha.2

4.4.0-alpha.2 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 28 Oct 18:26
4eb86ab

What's Changed

Full Changelog: 4.4.0-alpha.1...4.4.0-alpha.2

v4.4.0-alpha.1

v4.4.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 27 Oct 21:26
4386344

Highlights

Warning

  • The Tinfoil feed endpoint has been updated from /tinfoil/feed to /feeds/tinfoil, update your Tinfoil config accordingly.
  • A manual Scheduled LaunchBox metadata update must be run once before Launchbox can be used as a metadata source.

Alternative boxart

Spice up your collection with 3D, physical, and mixed media boxart, courtesy of Screenscraper! Start by configuring which media assets to download in your config.yml file:

scan:
  media:
    - box2d
    - box3d
    - physical
    - miximage
    - screenshot
    - manual
    - bezel

Available media types:

  • box2d - Normal cover art (always enabled)
  • box3d - 3D box art
  • miximage - Mixed image of multiple media
  • physical - Disc, cartridge, etc.
  • screenshot - Screenshot (enabled by default)
  • title_screen - Title screen
  • marquee - Transparent logo
  • fanart - User uploaded artwork
  • bezel - Bezel displayed around the EmulatorJS window
  • manual - Manual in PDF format (enabled by default)
  • video - Gameplay video (warning: large file size)

Restart the container.
Now on the scan page, select Screenscraper as the metadata source, Update metadata as the scan type, and click the Scan button. The media assets will be downloaded and stored alongside existing resources for covers and screenshots. Then under User Interface (/user-interface), change the Boxart style to 3D, Physical, or Mix Image as desired.

2D Box
Screenshot_2025-10-23_at_3 54 58_PM
3D Box
Screenshot_2025-10-23_at_3 55 07_PM
Physical
Screenshot_2025-10-23_at_3 55 16_PM
Mix Image
Screenshot_2025-10-23_at_3 55 25_PM

#2598

ES-DE gamelist.xml

EmulationStation, and it's modern successor ES-DE, use a custom XML format to store game metadata. RomM can parse this format and import the assets as cover art and screenshots. You'll need to store the gamelist.xml file and any related assets under the platform folder, and select ES-DE in the "Metadata sources" dropdown on the scan page:

library/
  └─ roms/
    └─ gba/
      ├─ game_1.gba
      ├─ game_2.gba
      ├─ gamelist.xml
      ├─ 3dboxes/
      │  ├─ game_1.png
      │  └─ game_2.png
      ├─ covers/
      ├─ screenshots/
      └─ etc...

Here's an example of the content in a typical gamelist.xml file, though the parser supports more fields not listed:

<?xml version="1.0"?>
<gameList>
	<game>
		<path>./Advance Wars (J) (Rev 1).zip</path>
		<name>Advance Wars</name>
		<desc>The battle lines have been drawn, and an elite group of sly strategists is massing troops at your borders. You'll have to command ground, air and naval forces if you hope to survive the coming wars, and it won't be easy. With 114 maps to battle on and both the Single-Pak and Multi-Pak link modes, Advance Wars brings turn-based strategy to a depth never before seen on a handheld!</desc>
		<rating>0.8</rating>
		<releasedate>20020111T000000</releasedate>
		<developer>Intelligent Games</developer>
		<publisher>Nintendo</publisher>
		<genre>Strategy</genre>
		<players>1-4</players>
		<video>./videos/Advance Wars (J) (Rev 1).mp4</video>
		<box3d>./3dboxes/Advance Wars (J) (Rev 1).png</box3d>
		<backcover>./backcovers/Advance Wars (J) (Rev 1).png</backcover>
		<cover>./covers/Advance Wars (J) (Rev 1).png</cover>
		<fanart>./fanart/Advance Wars (J) (Rev 1).jpg</fanart>
		<manual>./manuals/Advance Wars (J) (Rev 1).pdf</manual>
		<marquee>./marquees/Advance Wars (J) (Rev 1).png</marquee>
		<miximage>./miximages/Advance Wars (J) (Rev 1).png</miximage>
		<physicalmedia>./physicalmedia/Advance Wars (J) (Rev 1).png</physicalmedia>
		<screenshot>./screenshots/Advance Wars (J) (Rev 1).png</screenshot>
		<title_screen>./titlescreens/Advance Wars (J) (Rev 1).png</title_screen>
		<thumbnail>./covers/Advance Wars (J) (Rev 1).png</thumbnail>
	</game>
</gameList>

#2563

Task status page

We've added a new section on the /administration page for monitoring background tasks. This section displays real-time task status, execution statistics for successful tasks, and error messages for failed tasks. #2502

Screenshot 2025-10-27 at 4 05 56 PM

Multi-threaded library scanning

Multiple games under the same platform can now be scanned in parallel, significantly reducing the time required to scan large libraries. Simply increase the SCAN_WORKERS environment variable to the number of games to scan in parallel. Note that parallel scanning is limited by the power of your CPU and the maximum permitted connections to selected metadata providers. #2566

Screenshot 2025-10-27 at 4 22 23 PM

Manually edit metadata

The game's edit window now allows you to directly edit metadata IDs and JSON values. Changing a metadata ID will prompt the server to refresh metadata from that specific source, using the new ID. The JSON values can also be edited directly, and will be saved as raw metadata; for example, you can update youtube_video_id to use gameplay videos instead of trailers. Note: an UPDATE or COMPLETE scan of a game will override any manual changes made to metadata IDs or JSON values. #2578

Screenshot 2025-10-27 at 4 29 06 PM

PS3/PSVita PKGi and Kekatsu DS feeds

Added support for PKGi and Kekatsu feed formats, enabling direct integration with popular game download tools:

  • PKGi PS3 (/feeds/pkgi/ps3/{content_type}): Supports games, DLC, demos, updates, patches, mods, translations, and prototypes
  • PKGi PS Vita (/feeds/pkgi/psvita/{content_type}): Supporting the same content types
  • Kekatsu DS (/feeds/kekatsu/{platform_slug}): Supporting Nintendo DS, GBA, and other compatible platforms with box art metadata

#2572

ScummVM metadata

Metadata for ScummVM games stored under a scummvm folder can now be fetched exclusively from IGDB, using a special keyword search. #2576

Screenshot 2025-10-27 at 4 27 46 PM

Minor changes

  • [ROMM-2546] Suborder consoles by generation by @gantoine in #2571
  • [ROMM-2531] Allow scanning without metadata providers by @gantoine in #2573
  • [ROMM-2491] Add shuffle button in navbar by @gantoine in #2574
  • [ROMM-2289] Display smart collection filter rules in sidebar by @gantoine in #2584
  • [ROMM-2159] Remember game sort order on reload by @gantoine in #2585
  • [ROMM-2147] Clarify language around scan types by @gantoine in #2586

Note

New environment variables

  • SCAN_WORKERS: Number of parallel worker processes for scanning games
  • TASK_RESULT_TTL: How long to keep task results in Valkey (in seconds)
  • SEVEN_ZIP_TIMEOUT: imeout for 7-Zip operations (in seconds)

Fixes

  • [ROMM-2555] Validate release date for tinfoil feed by @gantoine in #2557
  • [ROMM-2554] Remove htlb from manual search by @gantoine in #2558
  • [ROMM-2551] Fix error message on rom delete by @gantoine in #2559
  • [ROMM-2552] Rom hashes should only include top-level nested files by @gantoine in #2567
  • [ROMM-2548] Fix text readablility of new version alert by @gantoine in #2568
  • [ROMM-2547] Flashpoint scrape by flashpoint-XXX tag by @gantoine in #2569
  • [ROMM-2338] Consistent pending job fetch in watcher by @gantoine in #2582
  • [ROMM-2146] Open rows in new tab with right click by @gantoine in #2587
  • [HOTFIX] Fix fetching saves/states for rom or platform by @gantoine in #2594
  • Fix type error when role claim is null by @Tarow in #2570
  • Separate checks for readable/writable config.yml by @gantoine in #2588
  • Multi-threaded scan fixes by @gantoine in #2583

Behind-the-scenes

  • [ROMM-2414] Refactor data loading in console mode by @gantoine in #2581
  • Explicit favorites collection in model by @gantoine in #2564
  • Update community apps in readme by @gantoine in #2575
  • Bump dockerfile baselayer image tags by @Gant...
Read more

4.3.2

Choose a tag to compare

@gantoine gantoine released this 12 Oct 19:26
cf50f06

What's Changed

New environment variables

  • ROMM_TMP_PATH: Path where compressed files are temporarily extracted during scan
  • IPV4_ONLY: Only bind to an IPv4 address (skips IPv6)

New Contributors

Full Changelog: 4.3.1...4.3.2

4.3.2-beta.1

4.3.2-beta.1 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 11 Oct 13:50
cf50f06

What's Changed

New environment variables

  • ROMM_TMP_PATH: Path where compressed files are temporarily extracted during scan
  • IPV4_ONLY: Only bind to an IPv4 address (skips IPv6)

New Contributors

Full Changelog: 4.3.1...4.3.2-beta.1

4.3.1

Choose a tag to compare

@gantoine gantoine released this 04 Oct 16:30
44965ae

What's Changed

New environment variables

  • DISABLE_SETUP_WIZARD: Disables the setup wizard when using OIDC
  • TINFOIL_WELCOME_MESSAGE: Custom welcome message in Tinfoil
  • Support for OIDC role claim
    • OIDC_CLAIM_ROLES: List of claim roles
    • OIDC_ROLE_VIEWER: Mapped role for viewer user
    • OIDC_ROLE_EDITOR: Mapped role for editor user
    • OIDC_ROLE_ADMIN: Mapped role for admin users

Resetting HowLongToBeat Data

If you need to reset HLTB data due to the bug¹ above and want to reset the HLTB IDs on all your games, you can run this SQL script against your database container:

UPDATE roms
SET roms.hltb_id = null, roms.hltb_metadata = '{}'

To access the SQL interface if using mariadb:

sudo docker exec -it <container id or name> mariadb -u <db username> -p <db name> 

New Contributors

Full Changelog: 4.3.0...4.3.1