Skip to content

Releases: rommapp/romm

4.7.0-alpha.1

4.7.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 12 Feb 16:14
ee998eb

Note

API Changes

  • New endpoints that only return identifiers (IDs)
    • GET /api/collections/identifiers
    • GET /api/collections/virtual/identifiers
    • GET /api/collections/smart/identifiers
    • GET /api/firmware/identifiers
    • GET /api/platforms/identifiers
    • GET /api/roms/identifiers
    • GET /api/roms/{id}/notes/identifiers
    • GET /api/saves/identifiers
    • GET /api/states/identifiers
    • GET /api/users/identifiers
  • New endpoint for device registration
    • POST /api/devices/register_device
    • GET /api/devices
    • GET/PUT/DELETE /api/devices/{device_id}
  • New endpoints for save management
    • GET /api/saves/summary: Saves summary grouped by slot
    • GET /api/saves/{id}/content: Download save content
    • GET /api/saves/{id}/downloaded: Confirm download
    • POST /api/saves/{id}/untrack: Disable sync tracking for a save on a device
    • POST /api/saves/{id}/track: Re-enable sync tracking for a save on a device
    • GET /api/saves can be filtered by rom_id, platform_id, device_id or slot
  • New PKGJ feed endpoints in .tsv format
    • PSP games: GET /api/feeds/pkgj/psp/games
    • PSP DLC files: GET /api/feeds/pkgj/psp/dlc
    • PS Vita games: GET /api/feeds/pkgj/psvita/games
    • PS Vita DLC files: GET /api/feeds/pkgj/psvita/dlc
    • PSX games: GET /api/feeds/pkgj/psx/games
  • Collection.user__username -> Collection.owner_username ⚠️
  • SmartCollectionSchema.user__username -> SmartCollectionSchema.owner_username` ⚠️
  • RomUserSchema.user__username removed ⚠️
  • New field on /heartbeat response OIDC.AUTOLOGIN
  • RomFileCategory enum includes cheat value
  • New fields on SaveSchema and StateSchema objects
    • slot: string | null
    • content_hash: string | null
    • device_syncs: list[DeviceSyncSchema]

Highlights

Auto-export gamelist.xml

Automatically generate an ES-DE compatible gamelist.xml file during scans by enabling the option in your config.yml. This will place the new gamelist.xml file within the platform folder for selected/discovered platforms.

scan:
    export_gamelist: true

@ItzCobaltboy in #2987

Device-based save synchronization

Thanks to @tmgast, we've laid the ground work for device-based save synchronization to enable multi-device save management, as defined in RFC-0001. Devices (handhelds, PCs, etc.) can register with the server and track which saves they've synced, enabling conflict detection when a device tries to upload stale data.

Note that this is purely foundational work to set up an initial structure and API implementation and in intended for third-party developers. #2917

Minor changes

  • Add support for ScummVM shortnames by @gantoine in #2957
  • Add OIDC_AUTOLOGIN=true env var to automatically login using OIDC by @pR0Ps in #2969
  • Group games with same name (but different tags) as versions/siblings by @zeroSteiner in #2984
  • Search by mutliple keywords with | by @gantoine in #2996
    • zelda|mario|sonic would show all games with zelda, mario OR sonic in the name
  • New PKGJ feed endpoints in .tsv format by @gantoine in #2986
    • PSP games: GET /api/feeds/pkgj/psp/games
    • PSP DLC files: GET /api/feeds/pkgj/psp/dlc
    • PS Vita games: GET /api/feeds/pkgj/psvita/games
    • PS Vita DLC files: GET /api/feeds/pkgj/psvita/dlc
    • PSX games: GET /api/feeds/pkgj/psx/games

Fixes

Other changes

New Contributors

Full Changelog: 4.6.1...4.7.0-alpha.1

4.6.1

Choose a tag to compare

@gantoine gantoine released this 27 Jan 14:57
cd56d3a

What's Changed

Full Changelog: 4.6.0...4.6.1

4.6.0

Choose a tag to compare

@gantoine gantoine released this 26 Jan 22:34
443110f

Highlights

Additional metadata

The edit dialog now allows you to manually set metadata properties that would otherwise only be aggregated from metadata sources, if those metadata sources don't support/populate certain fields. #2848

Screenshot 2026-01-12 at 1 16 34 PM

Enhance folder structure config

We've improved the web interface that lets you configure platform bindings and versions, and excluded files and folders. This change should simplify the process of configuring how library folders are interpreted and what content is ignored during scanning. #2809

Screenshot 2026-01-12 at 12 25 11 PM Screenshot 2026-01-12 at 12 25 23 PM

Patcher.js

  • We're introducing a new ROM patching feature to the app that enables your admins and editors to apply various types of patches to ROM files. At this time both ROM and patch files must be downloaded locally and re-uploaded via the patcher, with future work planned to patch ROMs directly from your library. #2787
Screenshot 2026-01-12 at 12 25 37 PM

UI settings sync

UI settings are now synced between devices for every user! These settings do not affect third-party apps, and any setting must be changed at least once for this sync to take effect. #2777

BIOS file defaults

A default BIOS file can now be specified per emulator core directly in your config.yml:

emulatorjs:
  settings:
    mgba:
      bios_file: gba_bios.bin

#2873

Minor changes

Fixes

  • Fix YAML indentation in netplay section of config example file by @Zuko in #2812
  • [HOTFIX] Fix scrolling load more in gallery views by @gantoine in #2813
  • [HOTFIX] Multi roms should only consider top-level files by @gantoine in #2821
  • Notes flag by @zurdi15 in #2817
  • [ROMM-2824] Also replace - with : for edge cases in HLTB and LB handlers by @gantoine in #2827
  • [ROMM-2844] Use webp images for game covers in list view by @gantoine in #2845
  • [ROMM-2835] Fix appearance of chevron screenshot buttons by @gantoine in #2846
  • [ROMM-2833] Fix using default locales in igdb handler by @gantoine in #2847
  • [ROMM-2796] Add check to overwrite media assets by @gantoine in #2851
  • Allow deleting single chip in additional metadata by @SaraVieira in #2861
  • [ROMM-2853] Update rom_file.category column enum by @gantoine in #2860
  • [HOTFIX] Dont schedule tasks if already queued by @gantoine in #2885
  • [ROMM-2808] Stop filtering nsfw games from search results by @gantoine in #2852
  • [ROMM-2856] Use platform slug to fetch feed games by @gantoine in #2862
  • [HOTFIX] Check if gamelist metadata source selected before populating cache by @gantoine in #2865
  • [ROMM-2889] Add media to update_config_file by @gantoine in #2897
  • [HOTFIX] Rename selected_statuses to statuses by @gantoine in #2902
  • [HOTFIX] Only add ? to qs on download path by @gantoine in #2907
  • [ROMM-2874] Feature/updated-after-query-param by @BrandonKowalski in #2898
  • [ROMM-2906] Fix icon color light mode by @gantoine in #2913
  • [HOTFIX] Remove files from model_dump in scan by @gantoine in #2914
  • [ROMM-2891] Empty String Flashpoint ID by @BrandonKowalski in #2918

Other changes

New Contributors

Full Changelog: 4.5.0...4.6.0

4.6.0-beta.2

4.6.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 23 Jan 21:09
bbab9a3

Highlights

Additional metadata

The edit dialog now allows you to manually set metadata properties that would otherwise only be aggregated from metadata sources, if those metadata sources don't support/populate certain fields. #2848

Screenshot 2026-01-12 at 1 16 34 PM

Enhance folder structure config

We've improved the web interface that lets you configure platform bindings and versions, and excluded files and folders. This change should simplify the process of configuring how library folders are interpreted and what content is ignored during scanning. #2809

Screenshot 2026-01-12 at 12 25 11 PM Screenshot 2026-01-12 at 12 25 23 PM

Patcher.js

  • We're introducing a new ROM patching feature to the app that enables your admins and editors to apply various types of patches to ROM files. At this time both ROM and patch files must be downloaded locally and re-uploaded via the patcher, with future work planned to patch ROMs directly from your library. #2787
Screenshot 2026-01-12 at 12 25 37 PM

UI settings sync

UI settings are now synced between devices for every user! These settings do not affect third-party apps, and any setting must be changed at least once for this sync to take effect. #2777

BIOS file defaults

A default BIOS file can now be specified per emulator core directly in your config.yml:

emulatorjs:
  settings:
    mgba:
      bios_file: gba_bios.bin

#2873

Minor changes

Fixes

  • Fix YAML indentation in netplay section of config example file by @Zuko in #2812
  • [HOTFIX] Fix scrolling load more in gallery views by @gantoine in #2813
  • [HOTFIX] Multi roms should only consider top-level files by @gantoine in #2821
  • Notes flag by @zurdi15 in #2817
  • [ROMM-2824] Also replace - with : for edge cases in HLTB and LB handlers by @gantoine in #2827
  • [ROMM-2844] Use webp images for game covers in list view by @gantoine in #2845
  • [ROMM-2835] Fix appearance of chevron screenshot buttons by @gantoine in #2846
  • [ROMM-2833] Fix using default locales in igdb handler by @gantoine in #2847
  • [ROMM-2796] Add check to overwrite media assets by @gantoine in #2851
  • Allow deleting single chip in additional metadata by @SaraVieira in #2861
  • [ROMM-2853] Update rom_file.category column enum by @gantoine in #2860
  • [HOTFIX] Dont schedule tasks if already queued by @gantoine in #2885
  • [ROMM-2808] Stop filtering nsfw games from search results by @gantoine in #2852
  • [ROMM-2856] Use platform slug to fetch feed games by @gantoine in #2862
  • [HOTFIX] Check if gamelist metadata source selected before populating cache by @gantoine in #2865
  • [ROMM-2889] Add media to update_config_file by @gantoine in #2897
  • [HOTFIX] Rename selected_statuses to statuses by @gantoine in #2902
  • [HOTFIX] Only add ? to qs on download path by @gantoine in #2907
  • [ROMM-2874] Feature/updated-after-query-param by @BrandonKowalski in #2898
  • [ROMM-2906] Fix icon color light mode by @gantoine in #2913
  • [HOTFIX] Remove files from model_dump in scan by @gantoine in #2914
  • [ROMM-2891] Empty String Flashpoint ID by @BrandonKowalski in #2918

Other changes

New Contributors

Full Changelog: 4.5.0...4.6.0-beta.2

4.6.0-beta.1

4.6.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 21 Jan 18:47
1602688

Highlights

Additional metadata

The edit dialog now allows you to manually set metadata properties that would otherwise only be aggregated from metadata sources, if those metadata sources don't support/populate certain fields. #2848

Screenshot 2026-01-12 at 1 16 34 PM

Enhance folder structure config

We've improved the web interface that lets you configure platform bindings and versions, and excluded files and folders. This change should simplify the process of configuring how library folders are interpreted and what content is ignored during scanning. #2809

Screenshot 2026-01-12 at 12 25 11 PM Screenshot 2026-01-12 at 12 25 23 PM

Patcher.js

  • We're introducing a new ROM patching feature to the app that enables your admins and editors to apply various types of patches to ROM files. At this time both ROM and patch files must be downloaded locally and re-uploaded via the patcher, with future work planned to patch ROMs directly from your library. #2787
Screenshot 2026-01-12 at 12 25 37 PM

UI settings sync

UI settings are now synced between devices for every user! These settings do not affect third-party apps, and any setting must be changed at least once for this sync to take effect. #2777

BIOS file defaults

A default BIOS file can now be specified per emulator core directly in your config.yml:

emulatorjs:
  settings:
    mgba:
      bios_file: gba_bios.bin

#2873

Minor changes

Fixes

  • Fix YAML indentation in netplay section of config example file by @Zuko in #2812
  • [HOTFIX] Fix scrolling load more in gallery views by @gantoine in #2813
  • [HOTFIX] Multi roms should only consider top-level files by @gantoine in #2821
  • Notes flag by @zurdi15 in #2817
  • [ROMM-2824] Also replace - with : for edge cases in HLTB and LB handlers by @gantoine in #2827
  • [ROMM-2844] Use webp images for game covers in list view by @gantoine in #2845
  • [ROMM-2835] Fix appearance of chevron screenshot buttons by @gantoine in #2846
  • [ROMM-2833] Fix using default locales in igdb handler by @gantoine in #2847
  • [ROMM-2796] Add check to overwrite media assets by @gantoine in #2851
  • Allow deleting single chip in additional metadata by @SaraVieira in #2861
  • [ROMM-2853] Update rom_file.category column enum by @gantoine in #2860
  • [HOTFIX] Dont schedule tasks if already queued by @gantoine in #2885
  • [ROMM-2808] Stop filtering nsfw games from search results by @gantoine in #2852
  • [ROMM-2856] Use platform slug to fetch feed games by @gantoine in #2862
  • [HOTFIX] Check if gamelist metadata source selected before populating cache by @gantoine in #2865
  • [ROMM-2889] Add media to update_config_file by @gantoine in #2897
  • [HOTFIX] Rename selected_statuses to statuses by @gantoine in #2902
  • [HOTFIX] Only add ? to qs on download path by @gantoine in #2907
  • [ROMM-2874] Feature/updated-after-query-param by @BrandonKowalski in #2898
  • [ROMM-2906] Fix icon color light mode by @gantoine in #2913
  • [HOTFIX] Remove files from model_dump in scan by @gantoine in #2914
  • [ROMM-2891] Empty String Flashpoint ID by @BrandonKowalski in #2918

Other changes

New Contributors

Full Changelog: 4.5.0...4.6.0-alpha.2

4.6.0-alpha.4

4.6.0-alpha.4 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 19 Jan 17:04
f48cf10

What's Changed

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

4.6.0-alpha.3

4.6.0-alpha.3 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 18 Jan 16:25
9b64acc

What's Changed

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

4.6.0-alpha.2

4.6.0-alpha.2 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 17 Jan 22:45
a2f2249

Highlights

Additional metadata

The edit dialog now allows you to manually set metadata properties that would otherwise only be aggregated from metadata sources, if those metadata sources don't support/populate certain fields. #2848

Screenshot 2026-01-12 at 1 16 34 PM

Enhance folder structure config

We've improved the web interface that lets you configure platform bindings and versions, and excluded files and folders. This change should simplify the process of configuring how library folders are interpreted and what content is ignored during scanning. #2809

Screenshot 2026-01-12 at 12 25 11 PM Screenshot 2026-01-12 at 12 25 23 PM

Patcher.js

  • We're introducing a new ROM patching feature to the app that enables your admins and editors to apply various types of patches to ROM files. At this time both ROM and patch files must be downloaded locally and re-uploaded via the patcher, with future work planned to patch ROMs directly from your library. #2787
Screenshot 2026-01-12 at 12 25 37 PM

UI settings sync

UI settings are now synced between devices for every user! These settings do not affect third-party apps, and any setting must be changed at least once for this sync to take effect. #2777

BIOS file defaults

A default BIOS file can now be specified per emulator core directly in your config.yml:

emulatorjs:
  settings:
    mgba:
      bios_file: gba_bios.bin

#2873

Minor changes

Fixes

  • Fix YAML indentation in netplay section of config example file by @Zuko in #2812
  • [HOTFIX] Fix scrolling load more in gallery views by @gantoine in #2813
  • [HOTFIX] Multi roms should only consider top-level files by @gantoine in #2821
  • Notes flag by @zurdi15 in #2817
  • [ROMM-2824] Also replace - with : for edge cases in HLTB and LB handlers by @gantoine in #2827
  • [ROMM-2844] Use webp images for game covers in list view by @gantoine in #2845
  • [ROMM-2835] Fix appearance of chevron screenshot buttons by @gantoine in #2846
  • [ROMM-2833] Fix using default locales in igdb handler by @gantoine in #2847
  • [ROMM-2796] Add check to overwrite media assets by @gantoine in #2851
  • Allow deleting single chip in additional metadata by @SaraVieira in #2861
  • [ROMM-2853] Update rom_file.category column enum by @gantoine in #2860
  • [HOTFIX] Dont schedule tasks if already queued by @gantoine in #2885
  • [ROMM-2808] Stop filtering nsfw games from search results by @gantoine in #2852
  • [ROMM-2856] Use platform slug to fetch feed games by @gantoine in #2862
  • [HOTFIX] Check if gamelist metadata source selected before populating cache by @gantoine in #2865
  • [ROMM-2889] Add media to update_config_file by @gantoine in #2897
  • [HOTFIX] Rename selected_statuses to statuses by @gantoine in #2902
  • [HOTFIX] Only add ? to qs on download path by @gantoine in #2907
  • [ROMM-2874] Feature/updated-after-query-param by @BrandonKowalski in #2898
  • [ROMM-2906] Fix icon color light mode by @gantoine in #2913

Other changes

New Contributors

Full Changelog: 4.5.0...4.6.0-alpha.2

4.6.0-alpha.1

4.6.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@gantoine gantoine released this 12 Jan 18:23
751aff5

Note

API Changes

  • ⚠️ Endpoint GET /api/roms now only accepts multiple values for the following fields:
    • platform_id -> platform_ids
    • selected_genre -> genres
    • selected_franchise -> franchises
    • selected_collection -> collections
    • selected_company -> companies
    • selected_age_rating -> age_ratings
    • selected_status -> statuses
    • selected_region -> regions
    • selected_language -> languages
  • The endpoint also accepts the following new fields:
    • last_played: Whether the rom has a last played value for the current user
    • player_counts: Associated player counts
    • genres_logic: Logic operator for genres filter: 'any' (OR) or 'all' (AND)
    • franchises_logic: Logic operator for franchises filter: 'any' (OR) or 'all' (AND)
    • collections_logic: Logic operator for collections filter: 'any' (OR) or 'all' (AND)
    • companies_logic: Logic operator for companies filter: 'any' (OR) or 'all' (AND)
    • age_ratings_logic: Logic operator for age ratings filter: 'any' (OR) or 'all' (AND)
    • regions_logic: Logic operator for regions filter: 'any' (OR) or 'all' (AND)
    • languages_logic: Logic operator for languages filter: 'any' (OR) or 'all' (AND)
    • statuses_logic: Logic operator for statuses filter: 'any' (OR) or 'all' (AND)
    • player_counts_logic: Logic operator for player count filter: 'any' (OR) or 'all' (AND)
  • New field UserSchema.ui_settings/UserForm.ui_settings: sync UI settings between devices
  • New field RomMetadataSchema.player_count: Aggregate player count for games (1, 2, 2-4, etc)
  • New field RomSchema.has_notes: Whether a ROM + user combo has at least 1 note
  • New field RomSchema.manual_metadata: Manually set metadata fields typically aggregated from metadata sources
  • New endpoint GET /api/setup/library: Get library structure information for setup wizard
  • New endpoint POST /api/setup/platforms: Create platform folders during setup wizard
  • Expose scan.media from config file via ConfigResponse.SCAN_MEDIA property

Highlights

Additional metadata

The edit dialog now allows you to manually set metadata properties that would otherwise only be aggregated from metadata sources, if those metadata sources don't support/populate certain fields. #2848

Screenshot 2026-01-12 at 1 16 34 PM

Enhance folder structure config

We've improved the web interface that lets you configure platform bindings and versions, and excluded files and folders. This change should simplify the process of configuring how library folders are interpreted and what content is ignored during scanning. #2809

Screenshot 2026-01-12 at 12 25 11 PM Screenshot 2026-01-12 at 12 25 23 PM

Patcher.js

  • We're introducing a new ROM patching feature to the app that enables your admins and editors to apply various types of patches to ROM files. At this time both ROM and patch files must be downloaded locally and re-uploaded via the patcher, with future work planned to patch ROMs directly from your library. #2787
Screenshot 2026-01-12 at 12 25 37 PM

UI settings sync

UI settings are now synced between devices for every user! These settings do not affect third-party apps, and any setting must be changed at least once for this sync to take effect. #2777

BIOS file defaults

A default BIOS file can now be specified per emulator core directly in your config.yml:

emulatorjs:
  settings:
    mgba:
      bios_file: gba_bios.bin

#2873

Minor changes

Fixes

  • Fix YAML indentation in netplay section of config example file by @Zuko in #2812
  • [HOTFIX] Fix scrolling load more in gallery views by @gantoine in #2813
  • [HOTFIX] Multi roms should only consider top-level files by @gantoine in #2821
  • Notes flag by @zurdi15 in #2817
  • [ROMM-2824] Also replace - with : for edge cases in HLTB and LB handlers by @gantoine in #2827
  • [ROMM-2844] Use webp images for game covers in list view by @gantoine in #2845
  • [ROMM-2835] Fix appearance of chevron screenshot buttons by @gantoine in #2846
  • [ROMM-2833] Fix using default locales in igdb handler by @gantoine in #2847
  • [ROMM-2796] Add check to overwrite media assets by @gantoine in #2851
  • Allow deleting single chip in additional metadata by @SaraVieira in #2861
  • [ROMM-2853] Update rom_file.category column enum by @gantoine in #2860
  • [HOTFIX] Dont schedule tasks if already queued by @gantoine in #2885
  • [ROMM-2808] Stop filtering nsfw games from search results by @gantoine in #2852
  • [ROMM-2856] Use platform slug to fetch feed games by @gantoine in #2862
  • [HOTFIX] Check if gamelist metadata source selected before populating cache by @gantoine in #2865
  • [ROMM-2889] Add media to update_config_file by @gantoine in #2897

Other changes

New Contributors

Full Changelog: 4.5.0...4.6.0-alpha.1

4.5.0

Choose a tag to compare

@gantoine gantoine released this 29 Dec 15:42
6bd6264

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

Screenshot 2025-12-10 at 3 52 36 PM

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)
516566290-2c43d67e-f55e-400b-8a89-a23e25d1ef36

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_calculation in config.yml by @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

Behind-the-scenes

New Contributors

Full Changelog: 4.4.1...4.5.0