Releases: rommapp/romm
v3.7.2
Note
Release v3.7.1
had a bug that caused the gallery view to stop loading, and has been removed from the Releases and Docker Hub. This release is now the one that follows v3.7.0
.
Major Changes
- Updated EmualtorJS to v.4.2.1
- New option in card menu to remove game from "Continue Playing" section of the homepage
- Improved table view for gallery, with more appropriate columns for sorting games
- New env variable
DISABLE_USERPASS_LOGIN
disables the login fields and endpoint when using OIDC - New env var
OIDC_TLS_CACERTFILE
points to a mounted certificate for encrypted OIDC login - Fixed a handful of OIDC bugs reported since last release
- Fixed some errors when using experimental PostgreSQL database
All Changes
- [ROMM-1414] Env var to disable user/pass login button by @gantoine in #1429
- Fix lockfile to add integrity by @jvanbruegge in #1434
- [ROMM-1432] Make neogeo aes and mvs games playable in emulatorjs by @gantoine in #1435
- Remove SASS library from frontend by @gantoine in #1436
- fix: Add german language to selector by @zurdi15 in #1444
- ci: fix escaping of strings in jq command by @jvanbruegge in #1443
- fix: Do not fail when OIDC server application URL has a trailing slash by @adamantike in #1440
- fix: Use proper JSON contains function for PostgreSQL by @adamantike in #1448
- misc: Move auth constants to separate file by @adamantike in #1449
- fix: Improve OIDC email verified check by @adamantike in #1450
- [ROMM-1452] Mark naive datetimes as UTC by @gantoine in #1456
- [ROMM-1447] Add revision to formatTitle for version switcher by @gantoine in #1457
- [ROMM-1442] Add OIDC_TLS_CACERTFILE path to mounted certfile by @gantoine in #1459
- [ROMM-1427] Add option to remove game from continue playing by @gantoine in #1461
- Add OpenBOR icon by @blakadder in #1463
- Bump emulatorjs to 4.2.1 by @gantoine in #1464
- [ROMM-1335] Check for webGL when testing emulatorjs supported by @gantoine in #1462
- [ROMM-1433] Rework columns in table view by @gantoine in #1455
- v3.7.1 by @gantoine in #1468
New Contributors
- @jvanbruegge made their first contribution in #1434
- @blakadder made their first contribution in #1463
Full Changelog: 3.7.0...3.7.2
v3.7.0
New year, new release! We're excited to announce v3.7.0
, our most feature-packed release to date! 🎊
Major Features
🌐 Internationalization (i18n)
RomM is now available in English, Spanish, French, German, Portuguese, Russian, Korean, and Chinese. Want to help expand our translations? Check out the contribution guide.
🔑 OpenID Connect
OpenID Connect (OIDC) is now a supported authentication method, which allows the app to verify a user’s identity and obtain profile information from an identity provider, like Authentik, Authelia, or Keycloak. Check out the setup guide with Authentik in the wiki, which can be adapted to other providers.
🖼️ Platform and Collection customization
Platforms and collections have a new UI with general information, more actions and customization options, like changing the display name and cover image aspect ratio.
🏠 Homepage customization
Updated UI settings allow for further customization of the homepage, extending to the new "Continue playing" row of games, which will populate with the last played games in EmulatorJS.
Notable Changes
Split Docker images
Two Docker images are now provided: normal and -slim
. The -slim
images are smaller, more lightweight versions of the normal image, while the normal image includes all the EmulatorJS code and cores. When using the slim image, cores will be downloaded on first play from the EmulatorJS CDN.
Experimental PostgreSQL support
We've added experimental support for PostgreSQL as a database backend, which can be enabled by setting ROMM_DB_DRIVER=postgresql
as an environment variable. This is still a work-in-progress and may be unstable, so please report any issues you encounter.
3DS QR codes
Located in the action bar of compatible 3DS games (.cia file extension), the QR code allows you to install the game directly to your 3DS using the "QR Code Install" option in FBI (requires a modified 3DS). Note that download speeds may be slow due to the 3DS's limited network capabilities.
Sentry error reporting
Setting the SENTRY_DSN=
environment variable will enable error reporting to a Sentry workspace you setup. This feature is disabled by default, and when enabled, does not send error reports to our team.
Experimental PSP emulation
We've added experimental support for in-browser PSP emulation with ppsspp
. However, reverse proxy setup is required to get it working, which is likely to break other features (fetching images, scanning, etc.). We recommend NOT enabling PSP emulation unless you're willing to help troubleshoot issues with our team.
Screenshots
All changes
- build(deps-dev): Bump vite from 3.2.10 to 3.2.11 in /frontend by @dependabot in #1326
- fix: Speed up scan for matched roms without filesystem changes by @adamantike in #1334
- misc: Retrieve roms by filename from database in bulk during scan by @adamantike in #1336
- build(deps): Bump python-multipart from 0.0.9 to 0.0.18 by @dependabot in #1340
- fix: Crash on new instance from previous installation by @zurdi15 in #1323
- feat: Add platform info drawer + per platform settings by @zurdi15 in #1324
- fix: Handle hash calculation error by @zurdi15 in #1342
- feat: Add collection info drawer by @zurdi15 in #1341
- fix: Update ROM deletion process to remove associated collections by @zurdi15 in #1345
- misc: Fix some typing issues by @adamantike in #1346
- chore: Refactor frontend layouts by @zurdi15 in #1347
- feat: Add support for _FILE suffix in environment variables by @adamantike in #1349
- [ROMM-1348] Log when a user downloads a game by @gantoine in #1350
- Hotfixes for some sqlalchemy models by @gantoine in #1351
- fix: Setup wizard redirection by @zurdi15 in #1355
- [HOTFIX] Lower permission on update user endpoint and check perms internally by @gantoine in #1357
- feat: Multi language support by @zurdi15 in #1353
- misc: Use async cache in IGDB handler by @adamantike in #1358
- misc: Sort roms in get_roms method by @adamantike in #1359
- misc: Remove unneeded Redis key for Twitch token expiration by @adamantike in #1360
- fix: Improve i18n pluralization by @adamantike in #1361
- misc: Remove print leftover in CallbackIO class by @adamantike in #1364
- fix: Typo in parallel_n64 core name by @adamantike in #1365
- [ROMM-540] OIDC Support by @gantoine in #1321
- [HOTFIX] Update emulatorjs to 4.2.0 by @gantoine in #1372
- Expand list of non-hashable platforms by @gantoine in #1376
- OIDC Fixes Part I by @gantoine in #1378
- feat: Add filter to show matched roms to gallery filter by @zurdi15 in #1381
- fix: toggle check all in gallery table view by @zurdi15 in #1382
- Added Chinese related language files (zh-CN) by @NicksGhost in #1385
- Run trunk fmt on new chinese json files by @gantoine in #1386
- misc: Use immutable types for constants by @adamantike in #1392
- feat: added custom name for platforms by @zurdi15 in #1383
- refactor: collections edit by @zurdi15 in #1389
- fix: Handle terminate signals in init script by @mikhailv in #1390
- Compress images by @gantoine in #1388
- feat: migrated search dialog to full view by @zurdi15 in #1393
- fix: Hide "or" divider in Login form when OIDC is disabled by @adamantike in #1397
- misc: Improve Docker layer caching by installing dependencies before copying by @adamantike in #1398
- feat: Add OIDC_CREATE_USER configuration to enable automatic user creation by @zurdi15 in #1399
- fix: MySQL migration and driver support by @adamantike in #1396
- refactor: Remove OIDC_CREATE_USER configuration and generate an uuid in a OIDC created user password by @zurdi15 in #1402
- feat: 404 view by @zurdi15 in #1394
- fix: protected access to URLs by @zurdi15 in #1400
- feat: Initial Sentry support by @adamantike in #1401
- fix: infinite redirection loop on setup by @zurdi15 in #1403
- OIDC fix auk by @dataway in #1404
- fix: Copy dashboard-icons to Docker image by @adamantike in #1407
- fix: Remove MySQL specific dialect from migrations by @adamantike in #1408
- fix: Update platforms drawer to use display_name and sort results by @zurdi15 in #1409
- December README update by @gantoine in #1410
- fix: Make migrations compatible with PostgreSQL by @adamantike in #1411
- feat: PostgreSQL compatibility by @adamantike in #1413
- feat: continue playing home section by @zurdi15 in #1412
- Added a korean translation of RomM by @ysteen in #1415
- feat: Experimental PSP emulation by @adamantike in #1405
- Docker slim images by @gantoine in #1406
- misc: Use flavor suffix option for Docker metadata action by @gantoine in #1418
- Default grid view for recently and continue playing to false by @gantoine in #1417
- fix: Change rom_id type to int in search endpoint by @adamantike in #1420
- [ROMM-1220] Generate qr code to download 3DS .cia files by @gantoine in #1419
- misc: Change signature for get_matched_rom_by_id function by @adamantike in #1421
- feat: Stop installing development dependencies in Docker images by @adamantike in #1422
- Fork streaming-form-data and fix pyproject.toml by @gantoine in #1423
- hotfi...
v3.7.0-beta.3
What's Changed
- feat: Experimental PSP emulation by @adamantike in #1405
- Docker slim images by @gantoine in #1406
- misc: Use flavor suffix option for Docker metadata action by @gantoine in #1418
- Default grid view for recently and continue playing to false by @gantoine in #1417
- fix: Change rom_id type to int in search endpoint by @adamantike in #1420
- [ROMM-1220] Generate qr code to download 3DA .cia files by @gantoine in #1419
- misc: Change signature for get_matched_rom_by_id function by @adamantike in #1421
- feat: Stop installing development dependencies in Docker images by @adamantike in #1422
- Fork streaming-form-data and fix pyproject.toml by @gantoine in #1423
Full Changelog: 3.7.0-beta.1...3.7.0-beta.3
v3.7.0-beta.1
What's Changed
- fix: Copy dashboard-icons to Docker image by @adamantike in #1407
- fix: Remove MySQL specific dialect from migrations by @adamantike in #1408
- fix: Update platforms drawer to use display_name and sort results by @zurdi15 in #1409
- December README update by @gantoine in #1410
- fix: Make migrations compatible with PostgreSQL by @adamantike in #1411
- feat: PostgreSQL compatibility by @adamantike in #1413
- feat: continue playing home section by @zurdi15 in #1412
- Added a korean translation of RomM by @ysteen in #1415
New Contributors
Full Changelog: 3.7.0-alpha.2...3.7.0-beta.1
v3.7.0-alpha.2
What's Changed
- Expand list of non-hashable platforms by @gantoine in #1376
- OIDC Fixes Part I by @gantoine in #1378
- feat: Add filter to show matched roms to gallery filter by @zurdi15 in #1381
- fix: toggle check all in gallery table view by @zurdi15 in #1382
- Added Chinese related language files (zh-CN) by @NicksGhost in #1385
- Run trunk fmt on new chinese json files by @gantoine in #1386
- misc: Use immutable types for constants by @adamantike in #1392
- feat: added custom name for platforms by @zurdi15 in #1383
- refactor: collections edit by @zurdi15 in #1389
- fix: Handle terminate signals in init script by @mikhailv in #1390
- Compress images by @gantoine in #1388
- feat: migrated search dialog to full view by @zurdi15 in #1393
- fix: Hide "or" divider in Login form when OIDC is disabled by @adamantike in #1397
- misc: Improve Docker layer caching by installing dependencies before copying by @adamantike in #1398
- feat: Add OIDC_CREATE_USER configuration to enable automatic user creation by @zurdi15 in #1399
- fix: MySQL migration and driver support by @adamantike in #1396
- refactor: Remove OIDC_CREATE_USER configuration and generate an uuid in a OIDC created user password by @zurdi15 in #1402
- feat: 404 view by @zurdi15 in #1394
- fix: protected access to URLs by @zurdi15 in #1400
- feat: Initial Sentry support by @adamantike in #1401
- fix: infinite redirection loop on setup by @zurdi15 in #1403
- OIDC fix auk by @dataway in #1404
New Contributors
- @NicksGhost made their first contribution in #1385
- @mikhailv made their first contribution in #1390
- @dataway made their first contribution in #1404
Full Changelog: 3.7.0-alpha.1...3.7.0-alpha.2
3.7.0-alpha.1
What's Changed
- build(deps-dev): Bump vite from 3.2.10 to 3.2.11 in /frontend by @dependabot in #1326
- fix: Speed up scan for matched roms without filesystem changes by @adamantike in #1334
- misc: Retrieve roms by filename from database in bulk during scan by @adamantike in #1336
- build(deps): Bump python-multipart from 0.0.9 to 0.0.18 by @dependabot in #1340
- fix: Crash on new instance from previous installation by @zurdi15 in #1323
- feat: Add platform info drawer + per platform settings by @zurdi15 in #1324
- fix: Handle hash calculation error by @zurdi15 in #1342
- feat: Add collection info drawer by @zurdi15 in #1341
- fix: Update ROM deletion process to remove associated collections by @zurdi15 in #1345
- misc: Fix some typing issues by @adamantike in #1346
- chore: Refactor frontend layouts by @zurdi15 in #1347
- feat: Add support for _FILE suffix in environment variables by @adamantike in #1349
- [ROMM-1348] Log when a user downloads a game by @gantoine in #1350
- Hotfixes for some sqlalchemy models by @gantoine in #1351
- fix: Setup wizard redirection by @zurdi15 in #1355
- [HOTFIX] Lower permission on update user endpoint and check perms internally by @gantoine in #1357
- feat: Multi language support by @zurdi15 in #1353
- misc: Use async cache in IGDB handler by @adamantike in #1358
- misc: Sort roms in get_roms method by @adamantike in #1359
- misc: Remove unneeded Redis key for Twitch token expiration by @adamantike in #1360
- fix: Improve i18n pluralization by @adamantike in #1361
- misc: Remove print leftover in CallbackIO class by @adamantike in #1364
- fix: Typo in parallel_n64 core name by @adamantike in #1365
- [ROMM-540] OIDC Support by @gantoine in #1321
- [HOTFIX] Update emulatorjs to 4.2.0 by @gantoine in #1372
Full Changelog: 3.6.0...3.7.0-alpha.1
v3.6.0
This Thanksgiving, we’re serving up 3.6.0, a hearty update stuffed with QOL improvements and bug fixes that will leave you as satisfied as a plate full of turkey with all the trimmings. 🦃
Progress, completions, and ratings
Track your game progress, completions, and star ratings under the new "Personal" tab, and use them to filter your games by "backlogged", "finished" or "100% completed". We've also moved your (and shared) notes under the same tab.
Major changes
- Display and filter games by age rating (requires a quick sync)
- Use filename without tags or extension when matching unmatched game
- Skip hashing games on desktop platforms for faster scans
- Improved memory usage during 7zip decompression
- New env variable
UPLOAD_TIMEOUT
allows for larger file uploads - Edit file exclusions for config.yml from the UI
All changes
- fix: Correctly update state for cover deletion by @adamantike in #1174
- fix: Use filename without tags or extension when matching unmatched game by @adamantike in #1177
- [ROMM-1181] Skip hashing games on desktop platorms by @gantoine in #1183
- [ROMM-1176] Fetch video ID and place in carousel by @gantoine in #1184
- [ROMM-829] Status fields on rom user by @gantoine in #1137
- chore(README): Update dev instructions for Arch Linux users by @rathmerdominik in #1195
- Bypass nginx proxy buffering when uploading roms by @gantoine in #1201
- [ROMM-1114] Fetch and use age ratings in UI and filters by @gantoine in #1119
- misc: Use bundled Valkey instead of Redis server by @adamantike in #1205
- feat: Add RAHasher and util to calculate RetroAchievements hashes by @adamantike in #1206
- fix: Escape URLs when files are served by nginx by @adamantike in #1224
- fix: Improve memory usage during 7zip decompression by @adamantike in #1226
- fix: Do not set Ruffle's renderer explicitly by @adamantike in #1227
- fix: Improve handling of Redis URL by @adamantike in #1235
- fix: Skip scanning task by checking against the correct function name by @adamantike in #1234
- fix: Correctly resize and save small artwork by @adamantike in #1238
- fix: Avoid image requests for undefined.ico platform icon by @adamantike in #1239
- misc: Upgrade RALibretro to v1.8.0 by @adamantike in #1237
- Add offset parameter to get_roms endpoint by @alisci01 in #1240
- fix: Avoid query during import time to set add_user endpoint scopes by @adamantike in #1241
- Update variables to MariaDB by @drcursor in #1243
- #1228 Configurable upload timeout by @yuri-becker in #1236
- fix: Simplify query that validates new username already exists by @adamantike in #1242
- misc: Create enum for authorization scopes by @adamantike in #1247
- docs: Updated readme preview by @zurdi15 in #1256
- feat: Enable editable exclusions from webUI by @zurdi15 in #1254
- fix: Make tar decompression only consider regular files by @adamantike in #1260
- fix: Broken IGDB age rating image links by @adamantike in #1261
- fix: Download IGDB screenshots with right aspect ratio by @adamantike in #1263
- fix: Show source image on each result for Manual match by @adamantike in #1264
- misc: Initial addition of IGDB typehints by @adamantike in #1265
- misc: Use tini as container entrypoint by @adamantike in #1272
- fix: Personal tab mobile responsive by @zurdi15 in #1271
- Fix #1283 - properly default groupRoms if it doesn't exist in localStorage by @MattTW in #1287
- feat: Add streaming support for 7zip hashing by @adamantike in #1282
- misc: Add MariaDB healthcheck recommendation to Docker Compose config by @adamantike in #1278
- [ROMM-1292] Log when db entries are purged by @gantoine in #1296
- fix: Consider IGDB alternative names when checking for exact match by @adamantike in #1301
- fix: Consider more categories when matching IGDB games by @adamantike in #1300
- [ROMM-1218] Exempt the right path from CSRF protection for tokens by @gantoine in #1303
- Add discord bot + donate btn to readme by @gantoine in #1308
- misc: Add more IGDB typehints by @adamantike in #1310
- Added offline support and configurable logging level by @zurdi15 in #1320
New Contributors
- @rathmerdominik made their first contribution in #1195
- @alisci01 made their first contribution in #1240
- @drcursor made their first contribution in #1243
- @yuri-becker made their first contribution in #1236
Full Changelog: 3.5.1...v3.6.0
v3.6.0-rc.1
What's Changed
- fix: Correctly update state for cover deletion by @adamantike in #1174
- fix: Use filename without tags or extension when matching unmatched game by @adamantike in #1177
- [ROMM-1181] Skip hashing games on desktop platorms by @gantoine in #1183
- [ROMM-1176] Fetch video ID and place in carousel by @gantoine in #1184
- [ROMM-829] Status fields on rom user by @gantoine in #1137
- chore(README): Update dev instructions for Arch Linux users by @rathmerdominik in #1195
- Bypass nginx proxy buffering when uploading roms by @gantoine in #1201
- [ROMM-1114] Fetch and use age ratings in UI and filters by @gantoine in #1119
- misc: Use bundled Valkey instead of Redis server by @adamantike in #1205
- feat: Add RAHasher and util to calculate RetroAchievements hashes by @adamantike in #1206
- fix: Escape URLs when files are served by nginx by @adamantike in #1224
- fix: Improve memory usage during 7zip decompression by @adamantike in #1226
- fix: Do not set Ruffle's renderer explicitly by @adamantike in #1227
- fix: Improve handling of Redis URL by @adamantike in #1235
- fix: Skip scanning task by checking against the correct function name by @adamantike in #1234
- fix: Correctly resize and save small artwork by @adamantike in #1238
- fix: Avoid image requests for undefined.ico platform icon by @adamantike in #1239
- misc: Upgrade RALibretro to v1.8.0 by @adamantike in #1237
- Add offset parameter to get_roms endpoint by @alisci01 in #1240
- fix: Avoid query during import time to set add_user endpoint scopes by @adamantike in #1241
- Update variables to MariaDB by @drcursor in #1243
- #1228 Configurable upload timeout by @yuri-becker in #1236
- fix: Simplify query that validates new username already exists by @adamantike in #1242
New Contributors
- @rathmerdominik made their first contribution in #1195
- @alisci01 made their first contribution in #1240
- @drcursor made their first contribution in #1243
- @yuri-becker made their first contribution in #1236
Full Changelog: 3.5.1...3.6.0-rc.1
v3.5.1
What's Changed
- Hack to get emujs working in dev mode by @gantoine in #1139
- Microfixes to game cards UI by @zurdi15 in #1144
- [ROMM-1150] Fix multi select in table view by @gantoine in #1151
- [ROMM-1123] Limit returned roms to 2500 by @gantoine in #1149
- [ROMM-1155] Patch zipfil + catch more 7zip errors by @gantoine in #1156
- [ROMM-1154] Fix setting main sibling by @gantoine in #1157
- Remove unraid template by @gantoine in #1161
- build(deps): bump cryptography from 42.0.8 to 43.0.1 by @dependabot in #1164
- [ROMM-1153] Use generated pack of favicons by @gantoine in #1159
- [ROMM-1165] set docs and recod paths by @gantoine in #1166
Full Changelog: 3.5.0...3.5.1
v3.5.0
Important
If your games or collections fail to load on restart, wait 10 minutes, then run a QUICK scan from the scan page.
What's Changed
- misc: Improve typing for feed schemas by @adamantike in #1064
- [ROMM-1063] Add Amiga CD32 to emulatorjs game list by @gantoine in #1065
- fix: fab overlay fixed by @zurdi15 in #1073
- fix: Readable setup text on white theme by @zurdi15 in #1072
- fix: Allow access to Tinfoil feed when download auth is disabled by @adamantike in #1078
- fix: Set Gunicorn option forwarded-allow-ips by @adamantike in #1077
- Improve speed of fetching siblings for roms by @gantoine in #1076
- Ruffle flash emulator by @gantoine in #1049
- Calculate and store hashes for rom files by @gantoine in #1005
- Hotfix scans when running HASH_SCAN by @gantoine in #1081
- Fix playing emulatorjs + better platform icon loading by @gantoine in #1086
- Fix home icon size on safari/ios by @gantoine in #1088
- misc: Upgrade Python to v3.12 and Alpine to v3.20 by @adamantike in #1092
- feat: Use X-Accel-Redirect to improve file download speed by @adamantike in #1084
- misc: Pin Node version to v20 by @adamantike in #1095
- Add icon to gallery header for current platform by @gantoine in #1093
- Upload progress bars by @gantoine in #1096
- Skip compressed files if theyre invalid by @gantoine in #1097
- Bump emulatorjs to 4.1.1 by @gantoine in #1100
- feat: Use nginx mod_zip to generate multi-file zip downloads by @adamantike in #1102
- misc: Use single SQLAlchemy engine and session maker by @adamantike in #1105
- Switch funding to open collective by @gantoine in #1108
- Replace illegal fs chars in filenames by @gantoine in #1109
- Upload dialog hotfixed + clear button by @gantoine in #1118
- Fix detecting if platform is flash games by @gantoine in #1120
- feat(UX) - Allow links to open in a new tab by @SaraVieira in #1116
- fix(icons) - match icon names to platform names by @SaraVieira in #1122
- Disable auth on rom content get endpoint when env variable is present by @gantoine in #1125
- Add support for formatting vuejs with trunk by @gantoine in #1124
- Add known bios files from retropie project by @gantoine in #1126
- Add titledb field to tinfoil response by @gantoine in #1127
- Better performance for large collections by @gantoine in #1128
- [ROMM-1113] Add file path in rom edit window by @gantoine in #1129
- misc: Tag Docker image with major version only by @adamantike in #1131
- build(deps): bump axios from 1.6.8 to 1.7.4 in /frontend by @dependabot in #1132
- Bump axios to 1.7.4 by @gantoine in #1134
- [ROMM-1107] Add env variable to disable in-browser emulation by @gantoine in #1133
- Default both fast forward and rewind to enabled by @SaraVieira in #1136
- Allow user to unmatch rom by @SaraVieira in #1138
New Contributors
- @SaraVieira made their first contribution in #1116
Full Changelog: 3.4.0...3.5.0