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
- hotfix poetry lock by @gantoine in #1425
- v3.7.0 by @gantoine in #1428
New Contributors
- @NicksGhost made their first contribution in #1385
- @mikhailv made their first contribution in #1390
- @dataway made their first contribution in #1404
- @ysteen made their first contribution in #1415
Full Changelog: 3.6.0...3.7.0