Releases: rommapp/romm
4.5.0
Highlights
Netplay
The incredibly smart and beautiful people over at the EmulatorJS project have added Netplay to their client, allowing you to play with your friends on the same instance over the internet! Enable netplay and configure the STUN/TURN servers in your config.yml:
emulatorjs:
netplay:
enabled: true
ice_servers:
- urls: "stun:stun.relay.metered.ca:80"
- urls: "turn:global.relay.metered.ca:80"
username: "<username>"
credential: "<password>"To host a game, start it, then hit the 🌐 icon in botton bar. Set your name, create a room (password optional), and other players should be able to see and join your room. All players need access to your RomM server to join a room and play together. #2728
Multiple notes
You've begged for it, and boy did we ever delivered! Write and store multiple notes for each game, with full mark down support; sharable, swapable, and easily identified with the 📝 icon. #2665
Metadata locale selection for IGDB and ScreenScraper
You can now set the order of your preferred locales/regional variants when fetching metadata from IGDB and ScreenScraper. The options below are available and can be set in your config.yml. #2700
scan:
priority:
region:
- "us" # United States (no localization needed)
- "wor" # World (default)
- "ss" # Screenscraper (default)
- "eu" # Europe
- "jp" # Japan
- "kr" # Korea
- "cn" # China (simplified)
- "tw" # Taiwan (traditional)
Minor changes
- Query parameter handling for tabs and sub-tabs by @zurdi15 in #2695
- Redirect related games to RomM entry if exists by @zurdi15 in #2729
- Make hashing during scan optional with
filesystem.skip_hash_calculationinconfig.ymlby @zurdi15 in #2703 - Console mode locale by @Slabak007 in #2710
- Add translations for firmware management dialogs by @tvdu29 in #2714
- Hungarian translation added (finish, 12/12 files done). by @Soderes in #2718
- Improved save/state layout by @zurdi15 in #2779
- [ROMM-2697] Use colocated es-de folders to import art not present in gamelist.xml by @gantoine in #2766
Fixes
- Czech language pluralization by @Slabak007 in #2701
- Fixed link to documentation in filestructure error by @Descent098 in #2713
- Fix French translations and add locale-aware date formatting by @tvdu29 in #2740
- Invalidate invite token before creating user by @gantoine in #2715
- Fix kekatsu tsv format by @phramusca in #2719
- Update /gamelist/export to generate a correct Batocera gamelist.xml by @vargash in #2720
- Migration 0057 fix by @Tux00-repo in #2739
- [ROMM-2746] Drop + from filenames on update by @gantoine in #2752
- [ROMM-2748] Add
OIDC_USERNAME_ATTRIBUTEby @gantoine in #2755 - [ROMM-2721] Fix saving user without password by @gantoine in #2754
- [ROMM-2722] Fix matching special chars in ssfr by @gantoine in #2753
- Catch RomsNotFoundException in scan file precalculation by @gantoine in #2756
- [ROMM-2685] Fix updating ssfr ID art assets by @gantoine in #2758
- Strip keys from ssfr api query params by @gantoine in #2778
- Change scan type to QUICK for scheduled library scans by @zurdi15 in #2782
- [HOTFIX] Fetch security token for HLTB by @gantoine in #2772
- [ROMM-2774] Remove unsupported language tags by @gantoine in #2775
- [ROMM-2791] Stop filtering out None values in order_by filter by @gantoine in #2804
- [ROMM-2806] Fix arcade ssid in screenscraper by @gantoine in #2807
- Game details view little fixes by @zurdi15 in #2803
Behind-the-scenes
- Cache parsed gamelist.xml files on each scan by @gantoine in #2699
- Add redis-backed session middleware by @gantoine in #2716
- Fix scan_rom tests by @gantoine in #2731
- Move merged_screenshots and merged_ra_metadata to simple RomSchema by @gantoine in #2744
- [ROMM-2668] Speedup feeds endpoint by @gantoine in #2757
- [ROMM-2762] Add get_rom_by_hash endpoint by @gantoine in #2764
- [ROMM-2763] Add MSX2 to ssfr platforms list by @gantoine in #2765
- Add OpenBOR metadata entry for screenscraper by @ronzano in #2760
New Contributors
- @Descent098 made their first contribution in #2713
- @phramusca made their first contribution in #2719
- @vargash made their first contribution in #2720
- @Soderes made their first contribution in #2718
- @Tux00-repo made their first contribution in #2739
- @ronzano made their first contribution in #2760
Full Changelog: 4.4.1...4.5.0
4.5.0-beta.3
What's Changed
- feat: Add config options to disable batch bootup and auto unload in emujs by @gantoine in #2793
- feat: Better search for Lauchbox metadata by @victor-rds in #2799
- feat: Manual Match metada priority by @victor-rds in #2800
- fix: Hide 0-game platforms from console mode homepage by @gantoine in #2794
- chore: Add gamelist entries to roms metadata object by @gantoine in #2801
New Contributors
- @victor-rds made their first contribution in #2799
Full Changelog: 4.5.0-beta.2...4.5.0-beta.3
4.5.0-beta.2
What's Changed
Full Changelog: 4.5.0-beta.1...4.5.0-beta.2
4.5.0-beta.1
Highlights
Netplay
The incredibly smart and beautiful people over at the EmulatorJS project have added Netplay to their client, allowing you to play with your friends on the same instance over the internet! Enable netplay and configure the STUN/TURN servers in your config.yml:
emulatorjs:
netplay:
enabled: true
ice_servers:
- urls: "stun:stun.relay.metered.ca:80"
- urls: "turn:global.relay.metered.ca:80"
username: "<username>"
credential: "<password>"To host a game, start it, then hit the 🌐 icon in botton bar. Set your name, create a room (password optional), and other players should be able to see and join your room. All players need access to your RomM server to join a room and play together. #2728
Multiple notes
You've begged for it, and boy did we ever delivered! Write and store multiple notes for each game, with full mark down support; sharable, swapable, and easily identified with the 📝 icon. #2665
Metadata locale selection for IGDB and ScreenScraper
You can now set the order of your preferred locales/regional variants when fetching metadata from IGDB and ScreenScraper. The options below are available and can be set in your config.yml. #2700
scan:
priority:
region:
- "us" # United States (no localization needed)
- "wor" # World (default)
- "ss" # Screenscraper (default)
- "eu" # Europe
- "jp" # Japan
- "kr" # Korea
- "cn" # China (simplified)
- "tw" # Taiwan (traditional)
Minor changes
- Query parameter handling for tabs and sub-tabs by @zurdi15 in #2695
- Redirect related games to RomM entry if exists by @zurdi15 in #2729
- Make hashing during scan optional with
filesystem.skip_hash_calculationinconfig.ymlby @zurdi15 in #2703 - Console mode locale by @Slabak007 in #2710
- Add translations for firmware management dialogs by @tvdu29 in #2714
- Hungarian translation added (finish, 12/12 files done). by @Soderes in #2718
- Improved save/state layout by @zurdi15 in #2779
- [ROMM-2697] Use colocated es-de folders to import art not present in gamelist.xml by @gantoine in #2766
Fixes
- Czech language pluralization by @Slabak007 in #2701
- Fixed link to documentation in filestructure error by @Descent098 in #2713
- Fix French translations and add locale-aware date formatting by @tvdu29 in #2740
- Invalidate invite token before creating user by @gantoine in #2715
- Fix kekatsu tsv format by @phramusca in #2719
- Update /gamelist/export to generate a correct Batocera gamelist.xml by @vargash in #2720
- Migration 0057 fix by @Tux00-repo in #2739
- [ROMM-2746] Drop + from filenames on update by @gantoine in #2752
- [ROMM-2748] Add
OIDC_USERNAME_ATTRIBUTEby @gantoine in #2755 - [ROMM-2721] Fix saving user without password by @gantoine in #2754
- [ROMM-2722] Fix matching special chars in ssfr by @gantoine in #2753
- Catch RomsNotFoundException in scan file precalculation by @gantoine in #2756
- [ROMM-2685] Fix updating ssfr ID art assets by @gantoine in #2758
- Strip keys from ssfr api query params by @gantoine in #2778
- Change scan type to QUICK for scheduled library scans by @zurdi15 in #2782
- [HOTFIX] Fetch security token for HLTB by @gantoine in #2772
- [ROMM-2774] Remove unsupported language tags by @gantoine in #2775
Behind-the-scenes
- Cache parsed gamelist.xml files on each scan by @gantoine in #2699
- Add redis-backed session middleware by @gantoine in #2716
- Fix scan_rom tests by @gantoine in #2731
- Move merged_screenshots and merged_ra_metadata to simple RomSchema by @gantoine in #2744
- [ROMM-2668] Speedup feeds endpoint by @gantoine in #2757
- [ROMM-2762] Add get_rom_by_hash endpoint by @gantoine in #2764
- [ROMM-2763] Add MSX2 to ssfr platforms list by @gantoine in #2765
- Add OpenBOR metadata entry for screenscraper by @ronzano in #2760
New Contributors
- @Descent098 made their first contribution in #2713
- @phramusca made their first contribution in #2719
- @vargash made their first contribution in #2720
- @Soderes made their first contribution in #2718
- @Tux00-repo made their first contribution in #2739
- @ronzano made their first contribution in #2760
Full Changelog: 4.4.1...4.5.0-beta.1
4.5.0-alpha.2
What's Changed
- Add OpenBOR metadata entry for screenscraper by @ronzano in #2760
- [HOTFIX] Fetch security token for HLTB by @gantoine in #2772
- [ROMM-2697] Use colocated es-de folders to import art not present in gamelist.xml by @gantoine in #2766
- [ROMM-2763] Add MSX2 to ssfr platforms list by @gantoine in #2765
- [ROMM-2762] Add get_rom_by_hash endpoint by @gantoine in #2764
- [ROMM-2774] Remove unsupported language tags by @gantoine in #2775
New Contributors
Full Changelog: 4.5.0-alpha.1...4.5.0-alpha.2
4.5.0-alpha.1
Highlights
Netplay
The incredibly smart and beautiful people over at the EmulatorJS project have added Netplay to their client, allowing you to play with your friends on the same instance over the internet! Enable netplay and configure the STUN/TURN servers in your config.yml:
emulatorjs:
netplay:
enabled: true
ice_servers:
- urls: "stun:stun.relay.metered.ca:80"
- urls: "turn:global.relay.metered.ca:80"
username: "<username>"
credential: "<password>"To host a game, start it, then hit the 🌐 icon in botton bar. Set your name, create a room (password optional), and other players should be able to see and join your room. All players need access to your RomM server to join a room and play together. #2728
Multiple notes
You've begged for it, and boy did we ever delivered! Write and store multiple notes for each game, with full mark down support; sharable, swapable, and easily identified with the 📝 icon. #2665
Metadata locale selection for IGDB and ScreenScraper
You can now set the order of your preferred locales/regional variants when fetching metadata from IGDB and ScreenScraper. The options below are available and can be set in your config.yml. #2700
scan:
priority:
region:
- "us" # United States (no localization needed)
- "wor" # World (default)
- "ss" # Screenscraper (default)
- "eu" # Europe
- "jp" # Japan
- "kr" # Korea
- "cn" # China (simplified)
- "tw" # Taiwan (traditional)
Minor changes
- Query parameter handling for tabs and sub-tabs by @zurdi15 in #2695
- Redirect related games to RomM entry if exists by @zurdi15 in #2729
- Make hashing during scan optional with
filesystem.skip_hash_calculationinconfig.ymlby @zurdi15 in #2703 - Console mode locale by @Slabak007 in #2710
- Add translations for firmware management dialogs by @tvdu29 in #2714
- Hungarian translation added (finish, 12/12 files done). by @Soderes in #2718
Fixes
- Czech language pluralization by @Slabak007 in #2701
- Fixed link to documentation in filestructure error by @Descent098 in #2713
- Fix French translations and add locale-aware date formatting by @tvdu29 in #2740
- Invalidate invite token before creating user by @gantoine in #2715
- Fix kekatsu tsv format by @phramusca in #2719
- Update /gamelist/export to generate a correct Batocera gamelist.xml by @vargash in #2720
- Migration 0057 fix by @Tux00-repo in #2739
- [ROMM-2746] Drop + from filenames on update by @gantoine in #2752
- [ROMM-2748] Add
OIDC_USERNAME_ATTRIBUTEby @gantoine in #2755 - [ROMM-2721] Fix saving user without password by @gantoine in #2754
- [ROMM-2722] Fix matching special chars in ssfr by @gantoine in #2753
- Catch RomsNotFoundException in scan file precalculation by @gantoine in #2756
- [ROMM-2685] Fix updating ssfr ID art assets by @gantoine in #2758
Behind-the-scenes
- Cache parsed gamelist.xml files on each scan by @gantoine in #2699
- Add redis-backed session middleware by @gantoine in #2716
- Fix scan_rom tests by @gantoine in #2731
- Move merged_screenshots and merged_ra_metadata to simple RomSchema by @gantoine in #2744
- [ROMM-2668] Speedup feeds endpoint by @gantoine in #2757
New Contributors
- @Descent098 made their first contribution in #2713
- @phramusca made their first contribution in #2719
- @vargash made their first contribution in #2720
- @Soderes made their first contribution in #2718
- @Tux00-repo made their first contribution in #2739
Full Changelog: 4.4.1...4.5.0-alpha.1
4.4.1
Caution
This release patches two high (CVE-2025-65027 and CVE-2025-65097) and one moderate (CVE-2025-65096) severity vulnerabilities. An attacker who already has an account (with any role) on the instance can, with a special crafted link, gain full administrative control, create a new admin account, or escalate their own privileges. All previous versions are affected, and all server owners should update to this version as soon as possible.
As a precaution, users may be kicked out of their logged-in session when first accessing the app, editing a game or running a scan, which will regenerate session and CSRF cookies. This should only happen once.
Private or single-user instances are not at risk. Server owners should treat any links to RomM from users as suspicious. Further details will be published in 14 days to give server owners time to upgrade.
Minor changes
- [ROMM-2650] Add FPKGi support for PS4/PS5 by @gantoine in #2663
- Use internal SHA1 hash if CHD file is v5 by @sftwninja in #2678
- Add French translations for Metadata Sources page by @tvdu29 in #2684
- Add translations for ROM management dialogs by @tvdu29 in #2686
- Add Czech locale by @Slabak007 in #2693
Fixes
- remove
geon tinfoil releaseDate and let field_validator fix it by @gantoine in #2630 - [ROMM-2628] Fix desirialize job func_name by @gantoine in #2637
- [HOTFIX] Fix importing media from gamelist.xml by @gantoine in #2636
- [ROMM-2639][ROMM-2627] Stop running scans during migration by @gantoine in #2644
- [ROMM-2645] Wrap items in feeds with double quotes by @gantoine in #2647
- [ROMM-2648] Encode filename of download URLs in feeds endpoints by @gantoine in #2649
- [ROMM-2654] Fix manually uploading manual by @gantoine in #2661
- [HOTFIX] Set all v-avatar to text to remove flat background color by @gantoine in #2662
- [ROMM-2657] Safe access env vars with defaults by @gantoine in #2664
- [HOTFIX] _mask_sensitive_values should check for null values by @gantoine in #2670
- [ROMM-2669] Reset url_cover and url_manual to rom value if unchanged by @gantoine in #2671
- [HOTFIX] Fix flashpoint match by UUID by @gantoine in #2681
- [ROMM-2679] Stop force to string url_manual by @gantoine in #2682
- Fix multipart strings by @gantoine in #2688
- Fix CSRF failure on first admin signup by @gantoine in #2691
Other changes
- Bump fastapi, starlette and fastapi-pagination by @gantoine in #2634
- Corrects the indentation level of the "media" list in config.example.yml by @LouiseRipley in #2643
- Bump js-yaml from 4.1.0 to 4.1.1 in /frontend by @dependabot[bot] in #2659
- Add github action to update HLTB API url by @gantoine in #2683
- Implement CSRF middleware directly in repo by @gantoine in #2687
New Contributors
- @LouiseRipley made their first contribution in #2643
- @sftwninja made their first contribution in #2678
- @tvdu29 made their first contribution in #2684
- @Slabak007 made their first contribution in #2693
- @github-actions[bot] made their first contribution in #2689
Full Changelog: 4.4.0...4.4.1
4.4.1-beta.2
Fixes
- Use internal SHA1 hash if CHD file is v5 by @sftwninja in #2678
- [HOTFIX] Fix flashpoint match by UUID by @gantoine in #2681
- [ROMM-2679] Stop force to string url_manual by @gantoine in #2682
- Fix multipart strings by @gantoine in #2688
Other changes
- Add French translations for Metadata Sources page by @tvdu29 in #2684
- feat(i18n): Add translations for ROM management dialogs by @tvdu29 in #2686
- Add github action to update HLTB API url by @gantoine in #2683
- Implement CSRF middleware directly in repo by @gantoine in #2687
New Contributors
- @sftwninja made their first contribution in #2678
- @tvdu29 made their first contribution in #2684
Full Changelog: 4.4.1-beta.1...4.4.1-beta.2
4.4.1-beta.1
Minor changes
Fixes
- [ROMM-2639][ROMM-2627] Stop running scans during migration by @gantoine in #2644
- [ROMM-2645] Wrap items in feeds with double quotes by @gantoine in #2647
- [ROMM-2648] Encode filename of download URLs in feeds endpoints by @gantoine in #2649
- [ROMM-2628] Fix desirialize job func_name by @gantoine in #2637
- remove
geon tinfoilreleaseDateand let field_validator fix it by @gantoine in #2630 - [HOTFIX] Fix importing media from gamelist.xml by @gantoine in #2636
- [ROMM-2654] Fix manually uploading manual by @gantoine in #2661
- [HOTFIX] Set all v-avatar to text to remove flat background color by @gantoine in #2662
- [ROMM-2657] Safe access env vars with defaults by @gantoine in #2664
- [HOTFIX] _mask_sensitive_values should check for null values by @gantoine in #2670
- [ROMM-2669] Reset url_cover and url_manual to rom value if unchanged by @gantoine in #2671
Other changes
- config.example.yml - Corrects the indentation level of the "media" list by @LouiseRipley in #2643
- Bump fastapi, starlette and fastapi-pagination by @gantoine in #2634
- Bump js-yaml from 4.1.0 to 4.1.1 in /frontend by @dependabot[bot] in #2659
New Contributors
- @LouiseRipley made their first contribution in #2643
Full Changelog: 4.4.0...4.4.1-beta.1
4.4.0
Highlights
Warning
- The Tinfoil feed endpoint has been updated from
/tinfoil/feedto/feeds/tinfoil, update your Tinfoil config accordingly. - A manual
Scheduled LaunchBox metadata updatemust 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
- bezelAvailable media types:
box2d- Normal cover art (always enabled)box3d- 3D box artmiximage- Mixed image of multiple mediaphysical- Disc, cartridge, etc.screenshot- Screenshot (enabled by default)title_screen- Title screenmarquee- Custom marqueelogo- Transparent logofanart- User uploaded artworkbezel- Bezel displayed around the EmulatorJS windowmanual- 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 |
|---|
![]() |
| 3D Box |
![]() |
| Physical |
![]() |
| Mix Image |
![]() |
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>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
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
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
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
- PKGi PSP (
- Kekatsu DS (
/feeds/kekatsu/{platform_slug}): Supporting Nintendo DS, GBA, and other compatible platforms with box art metadata
ScummVM metadata
Metadata for ScummVM games stored under a scummvm folder can now be fetched exclusively from IGDB, using a special keyword search. #2576
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
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 gamesTASK_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-XXXtag 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...



