Minor changes
- feat(screenscraper): pace and report scans against the account's reported limits by @Spinnich in #3989
- feat: reorderable region and language priority lists in scan settings by @gantoine in #4015
- feat(frontend): autofocus the search field on the Search view by @gantoine in #4022
- feat(home): make the random pick widget clickable and denser by @gantoine in #4056
- feat(rating): show provider ratings by @wadiebs in #4096
- feat(soundtrack player): improve artwork by @wadiebs in #4168
- feat(v2): previous / next game buttons on the details page by @gantoine in #4012
- feat(v2): search platforms by slug, folder, category and family by @Spinnich in #4136
- feat(hasheous): map famicom to the NES platform by @sdornan in #4162
- feat(v2): show IGDB ports on the game overview by @sdornan in #4184
Fixes
- fix(steamgriddb): skip DMCA-locked grids when scraping SteamGridDB by @gantoine in #4004
- fix(security): close three permission gaps found auditing 5.1.0 by @gantoine in #3993
- fix(backend): re-run the Hasheous hash lookup on a hashes scan by @gantoine in #4013
- fix(v2): keep RSelect menus inside the viewport and tidy the selection text by @gantoine in #4014
- fix(roms): give each FPKGi package a unique name within its rom by @gantoine in #4021
- fix(backend): scope ScreenScraper French fallback to taxonomy fields by @gantoine in #4026
- fix(v2): pivot to a filtered search from the overview info grid by @gantoine in #4023
- fix(backend): tolerate calendar-invalid gamelist dates on PostgreSQL by @gantoine in #4024
- fix(player): skip the save load a state immediately discards by @gantoine in #4025
- fix(roms): search the gallery by CRC32, MD5, SHA-1 and RA hash by @Spinnich in #4032
- fix(docker): always start the RQ scheduler by @XenuIsWatching in #4033
- fix(backend): scope the kiosk read-only cap to the anonymous visitor by @Spinnich in #4047
- fix: batch of open bug fixes (#4027, #4034, #4035, #4038, #4040, #4043, #4045) by @gantoine in #4051
- fix(scan): report only newly discovered firmware by @gantoine in #4055
- fix(rom-details): render the manual viewer on mobile by @gantoine in #4058
- fix(hasheous): read the CHD and DOS signature sources by @gantoine in #4060
- fix(stats): pluralize the platform game count and lift meta legibility by @gantoine in #4065
- fix(config): map tic80 to the tic-80 platform slug by @XenuIsWatching in #4090
- fix(docker): keep the Redis password out of the RQ worker command line by @gantoine in #4093
- fix(v2): make hashes recoverable without HTTPS and show all firmware hashes by @Spinnich in #4083
- fix(home): stop scanning the library filesystem on every home page load by @Spinnich in #4069
- fix(auth): accept a stale user-bound CSRF token on anonymous requests by @bikeborb in #4086
- fix(v2): drop a random pick after leaving the platform by @Spinnich in #4113
- fix(states): repoint the row when a re-upload changes emulator by @TowyTowy in #4112
- fix(v2): keep Playmatch selectable when providers are set to All by @sdornan in #4120
- fix(hashing): extract CHD SHA-1 for folder-based ROMs by @sdornan in #4129
- fix(v2): compute game-card cover width instead of deriving it by @sdornan in #4135
- fix(media): stop recording paths for media that never landed by @sdornan in #4131
- fix(screenscraper): report rejected credentials instead of a bare 403 by @Spinnich in #4130
- fix(launchbox): match ROMs during a scan the way Match ROM does by @sdornan in #4121
- fix(hltb): renew rejected HLTB sessions instead of failing the scan by @sdornan in #4125
- fix(v2): drop a random pick that lands after leaving the gallery by @Spinnich in #4138
- fix(ss): store the ScreenScraper box-2D front locally by @sdornan in #4139
- fix(v2): show a running scan on pages loaded mid-scan by @sdornan in #4142
- fix(resources): fetch each cover once instead of once per size by @Spinnich in #4143
- fix(metadata): identify archives and folder ROMs by the right file by @Spinnich in #4146
- fix(match-rom): show the saving overlay above the grid match panel by @sdornan in #4147
- refactor(i18n): name gallery filters by property instead of "Show X" by @sdornan in #4149
- fix(v2): bulk favorite no-ops on a fresh instance and reports the wrong direction by @Spinnich in #4151
- fix: refresh the v2 gallery when a ROM is edited or matched by @sdornan in #4153
- fix(v2): pin mobile bottom nav with sticky instead of fixed by @nickybmon in #4155
- fix(export): stop miximage_v2 colliding with miximage, persist gamelist back covers by @sdornan in #4156
- fix(hashing): surface unreadable zip and tar archives by @sdornan in #4163
- fix: remove double URL-encoding of MobyGames search terms by @justinjd00 in #4181
- fix(i18n): correct Breton pt_BR player-count and align ja_JP/tr_TR by @sdornan in #4183
- fix(i18n): translate pt_BR strings left in English by @sdornan in #4185
- fix(v2): close open overlays when the route changes by @sdornan in #4193
- Changed default compose, will explain more in pull by @danblu3 in #4202
- fix(v2): drop the roms from the gallery when they leave the collection on screen by @sdornan in #4204
- fix(scan): normalize region and language tags to one canonical spelling by @sdornan in #4206
- fix: demote uvicorn HTTP access logs to WARNING/DEBUG only by @gantoine with @Copilot in #4214
- fix: Add
.xdeltasupport to server-side ROM patcher and v2 patcher UI by @gantoine with @Copilot in #4215 - fix(states): enforce ROM visibility when uploading a state by @gantoine in #4216
- fix(auth): build invite links from ROMM_BASE_URL by @sdornan in #4217
- fix(scan): re-read filename tags on a complete rescan by @sdornan in #4218
- fix(libretro): cache missing thumbnail listings by @sdornan in #4219
- fix(launchbox): match titles differing only by punctuation by @sdornan in #4224
- fix(hltb): match titles whose series prefix the catalogue omits by @sdornan in #4225
- fix(ss): don't use the Switch icon URL as the manual URL by @TowyTowy in #4228
- fix(resources): publish downloaded resources atomically by @sdornan in #4230
- fix(i18n): translate route titles once locale messages are loaded by @sdornan in #4231
- fix(i18n): add the missing playlists permission entity label by @sdornan in #4234
- fix(hltb): fetch metadata when a HowLongToBeat ID is set by hand by @sdornan in #4235
- fix(launchbox): match LaunchBox dumps that separate words with underscores by @sdornan in #4239
- fix(backend): make filters match against all grouped versions instead of only the main version of each game entry by @darkpaul91 in #4240
- feat(metadata): warn when ScreenScraper dev credentials are missing by @gantoine in #4243
- fix(scan): ignore Windows Zone.Identifier files by @Florian-Cullmann in #4245
Other changes
- perf(roms): stop the Missing tab scanning the whole library by @Spinnich in #4005
- perf(scan): stop hashing single-file ROMs twice by @XenuIsWatching in #4017
- perf(collections): serve smart and standard collections from a composed query by @Spinnich in #4039
- perf(roms): extend the sibling covering index to cover the ROM grouping query by @Spinnich in #4054
- perf(roms): let a gallery window fetch skip the library count by @Spinnich in #4062
- perf(roms): pick a random rom without paging to a random offset by @Spinnich in #4071
- perf(roms): sort metadata fields on the indexed roms column by @Spinnich in #4078
- perf(gallery): resolve the random rom button in one request by @Spinnich in #4097
- perf(home): stop counting the whole library for the two home rows by @Spinnich in #4110
- perf(scan): scope a rom-id scan to the selected roms by @sdornan in #4188
- perf(scan): cut scan memory and drop a quadratic file listing check by @XenuIsWatching in #4198
- perf(scan): stop re-hashing unchanged firmware on every scan by @sdornan in #4211
- test: fix flaky LaunchBox release date property test (DST fold) by @sdornan in #4242
- chore(deps): bump aiohttp from 3.14.1 to 3.14.3 by @dependabot[bot] in #4115
- chore(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /frontend by @dependabot[bot] in #4118
- chore(deps): bump socket.io-parser from 4.2.6 to 4.2.7 in /frontend by @dependabot[bot] in #4119
- chore(deps-dev): bump js-yaml from 4.2.0 to 4.3.1 in /frontend by @dependabot[bot] in #4189
Note
API changes
| Change | Description |
|---|---|
GET /roms/random
| Retrieve one rom picked at random, or null when the scope holds none. Accepts platform_ids, collection_id, virtual_collection_id and smart_collection_id.
|
GET /roms
| Now accepts a with_total parameter (default true). Set it to false when the caller already knows the total; total then comes back null unless the rom id index is being built and already carries it.
|
GET /setup/library
| existing_platforms now comes back empty once the database holds roms, instead of walking every platform directory.
|
POST /states
| Now rejects an upload against a rom the caller cannot see. |
DELETE /roms/{rom_id}/files/{file_id}
| Now requires the ROMS/DELETE grant instead of ROMS/WRITE.
|
GET /feeds/fpkgi
| Package names are deduplicated within a rom, so two packages that share a title id no longer overwrite each other on the console. |
GET /collections/smart/{id}
| The cached rom_ids, rom_count and covers are now resolved as the collection owner, not the requesting viewer. The live rom listing is still per-requester.
|
CustomLimitOffsetPage[SimpleRomSchema]
| total is now nullable.
|
InviteLinkSchema
| Adds url, the full registration link built from ROMM_BASE_URL, or null when that points at loopback.
|
MetadataSourcesDict
| Adds SS_DEV_CREDENTIALS_SET.
|
RomSSMetadata
| Adds box2d_path.
|
RomGamelistMetadata
| Adds box2d_back_path, fanart_path and title_screen_path.
|
RomHasheousMetadata
| Adds mame_redump_match.
|
Streaming endpoints
These moved from ROMS_READ to ROMS_USER_WRITE, which is always-on for authenticated users but absent from the read-only set a kiosk visitor gets.
New Contributors
- @wadiebs made their first contribution in #4096
- @sdornan made their first contribution in #4120
- @nickybmon made their first contribution in #4155
- @justinjd00 made their first contribution in #4181
- @danblu3 made their first contribution in #4202
- @darkpaul91 made their first contribution in #4240
- @Florian-Cullmann made their first contribution in #4245
Full Changelog: 5.1.0...5.2.0