github rommapp/romm 4.9.0-alpha.2

pre-release5 hours ago

Note

API Changes

New endpoints

  • POST /api/collection/{id}/roms: Add ROMs (list of IDs) to a collection
  • DELETE /api/collection/{id}/roms: Remove ROMs (list of IDs) from a collection
  • POST /api/export/pegasus: Export ROMs to metadata.pegasus.txt and write to platform folder
  • POST /api/play-sessions: Inject a list of play sessions (for playtime tracking)
  • GET /api/play-sessions: Get filtered play sessions
  • DELETE /api/play-sessions/{session_id}: Delete play session
  • POST /api/sync/negotiate: Negotiate sync operations between a client device and server
  • POST /api/sync/sessions/{session_id}/complete: Mark a sync session as complete
  • GET /api/sync/sessions: List sync sessions
  • GET /api/sync/sessions/{session_id}: Get a specific sync session
  • POST /api/sync/devices/{device_id}/push-pull: Manually trigger a push-pull sync for a device

Changed endpoints

  • /api/gamelist/export*/api/export/gamelist-xml ⚠️
  • ConfigResponse returns new fields:
    • DEFAULT_EXCLUDED_DIRS: default list of always-excluded folders
    • DEFAULT_EXCLUDED_FILES: default list of always-excluded files
    • DEFAULT_EXCLUDED_EXTENSIONS: default list of always-excluded extensions
    • GAMELIST_MEDIA_THUMBNAIL: one of MetadataMediaType
    • GAMELIST_MEDIA_IMAGE: of one MetadataMediaType
  • HeartbeatResponse now returns LIBRETRO_API_ENABLED
  • Device create and update endpoints now accept sync_mode and sync_config fields
  • All datetime fields are now serialized to ensure ensuring UTC timezone is always present

Environment variables

  • SYNC_BASE_PATH: (default: /romm/sync)
  • ENABLE_SYNC_FOLDER_WATCHER: (default: false)
  • SYNC_FOLDER_SCAN_DELAY: (default: 2 minutes)
  • ENABLE_SYNC_PUSH_PULL: (default: false)
  • SYNC_PUSH_PULL_CRON: (default: every 30 minutes)
  • SYNC_SSH_KEYS_PATH: (default: /romm/sync/keys)
  • SYNC_SSH_KNOWN_HOSTS_PATH: (default: /romm/sync/known_hosts)

Highlights

Save sync engine

"Coming soon" no more! Third-party app developers will now be able to rely on RomM to keep save files in sync across devices and platforms. #3137

Devices (apps, handhelds, browsers) can choose to register themselves with the server, which uniquely identifies them with a token. The system tracks which device has the latest version of a save file, flags conflicts when two devices change the same save, and syncs in whichever way fits the device: on demand, via a watched folder, or through a scheduled background sync.

Libretro thumbnails

The libretro thumbnail repository is now available as a first-class artwork source for region-correct box art (PAL/Europe, Japan, etc.). Matching is exact case-insensitive against the directory listing, so a ROM named "(Europe)" lands on the (Europe) artwork. The source is enabled by default, and you can set it's priority in your config.yml via the scan.priority.artwork list. #3252

Pegasus metadata export

You can now auto-export a Pegasus compatible metadata.pegasus.txt file, just like the existing gamelist.xml export. Enable it in your config.yml file by setting scan.export.pegasus to true, and it should appear in each platform folder (alongside your ROMs). #3153

Warning

The structure of scan exports in config.yml has changed! If you're currently exporting gamelist.xml files with scan.export_gamelist, migrate to scan.export.gamelist_xml: true

Notable changes

  • Gamelist export improvements by @vargash in #3202
  • Add play session ingest for game time tracking by @tmgast in #3155
  • Send a suggestion to playmatch on manual match when enabled by @DevYukine in #3296

Fixes

  • 4.8.1 hotfixes by @gantoine in #3221
  • UI settings not woking after switching pages back and forth by @Namaneo in #3317
  • MSDOS games fail to launch in console mode ("Error for site owner / Check console") by @gantoine in #3294
  • Include cus region in default ScreenScraper fallback regions by @gantoine in #3273
  • Scan stalls on platforms with 10k+ already-scanned ROMs by @gantoine in #3249
  • Respect LOGLEVEL env var across all log output sources by @gantoine in #3243
  • Registration links redirect to login for unauthenticated users by @gantoine in #3231
  • Address bugs and add test coverage for save-sync by @tmgast in #3135
  • Fix age_ratings Pydantic validation error on MySQL/MariaDB for single-element arrays by @gantoine in #3223
  • Parse Content-Type essence before validating resource downloads by @TechnicallyComputers in #3233
  • [ROMM-3232] Fix content_hash not updated by @gantoine in #3234
  • Fix extension exclusion not matching multi-dot filenames by @gantoine in #3326
  • Fix chunked uploads writing to RAM/tmpfs and upload speed showing 0 B/s by @gantoine in #3316
  • Fix RuffleRS scaling and overflow issues on large and small screens by @jondycz in #3245
  • Fix RAHasher prod build by @dangmai in #3282
  • Fix download failing when hash has not been computed by @Namaneo in #3264
  • Fix race condition in collection and favorite rom membership updates by @Spinnich in #3263
  • Fix settings drawer logout button overflowing on mobile by @gantoine in #3248
  • [ROMM-3235] Improve light mode text by @gantoine in #3236
  • Resolve MariaDB errors in migration downgrades (0068, 0072) by @gantoine in #3246
  • Show TheGamesDB link on platform drawer when tgdb_id is set by @gantoine in #3254
  • A bunch of minor bug fixes by @Namaneo in #3270
  • Re-parse tags from filename when renaming a rom by @zurdi15 in #3295
  • Open refresh metadata dialog with scan type and metadata source selection by @gantoine in #3293

Other changes

New Contributors

Full Changelog: 4.8.1...4.9.0-alpha.2

Don't miss a new romm release

NewReleases is sending notifications on new releases.