Commit Graph

9275 Commits

Author SHA1 Message Date
zurdi d7a896b5da fix: re-parse tags from filename when renaming a rom
Renaming a rom via PUT /roms/{id} only updated fs_name and its
derivatives, leaving regions/languages/tags/revision/version stale
against the new filename. Re-parse them whenever fs_name changes so
edits like "patapon (Fr En)" -> "Patapon (Fr, En)" are reflected in
the database.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:23:33 +00:00
Georges-Antoine Assi 64ea0561c2 Merge pull request #3294 from rommapp/copilot/fix-msdos-games-launch-issue
fix: MSDOS games fail to launch in console mode ("Error for site owner / Check console")
2026-04-20 16:43:49 -04:00
copilot-swe-agent[bot] 681efc6a46 fix: enable COEP/COOP headers for console play route to fix MSDOS games
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/487d4506-1203-499e-afc4-a45ee1f2438b

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-20 18:08:38 +00:00
copilot-swe-agent[bot] ae9fb0b46e Initial plan 2026-04-20 17:56:47 +00:00
Georges-Antoine Assi e228683191 refactor env.tempalte 2026-04-18 16:18:46 -04:00
Georges-Antoine Assi 2000a6c440 Merge pull request #3282 from dangmai/fix-rahasher-dockerfile
Fix RAHasher prod build
2026-04-17 20:44:52 -04:00
Dang Mai 47eb47a8f1 Small spacing fix 2026-04-17 16:26:24 -07:00
Dang Mai a5ff6010cd Fix RAHasher prod build 2026-04-17 16:24:31 -07:00
Georges-Antoine Assi 504074d7e2 Merge pull request #3277 from rommapp/copilot/fix-rahson-retry-code
fix: bump RAHasher to 1.8.3 in docker/Dockerfile
2026-04-16 22:19:11 -04:00
Georges-Antoine Assi 3104a55ae1 update libretro to 1.8.3 in prod 2026-04-16 22:15:06 -04:00
copilot-swe-agent[bot] 80d20eec51 fix: bump RAHasher version from 1.8.1 to 1.8.3 in docker/Dockerfile
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/59aeb3a2-1a8c-47f5-9f90-f6d537765977

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-17 01:44:30 +00:00
copilot-swe-agent[bot] d87488191f Initial plan 2026-04-17 01:42:19 +00:00
Georges-Antoine Assi 49fd1280af Merge pull request #3273 from rommapp/copilot/fix-custom-boxart-download
fix: include `cus` region in default ScreenScraper fallback regions
2026-04-16 21:37:32 -04:00
Georges-Antoine Assi 7b20101d50 Merge pull request #3270 from Namaneo/home-boxarts
A bunch of minor bug fixes
2026-04-16 11:16:16 -04:00
Georges-Antoine Assi b18edb1528 fix trunk issues 2026-04-16 11:15:58 -04:00
Georges-Antoine Assi ed15fa13d4 fix type errors 2026-04-16 10:37:12 -04:00
copilot-swe-agent[bot] bf246f842f fix: add cus region to default ScreenScraper fallback regions
Games where only custom (cus) region artwork exists were not fetched
unless users explicitly added 'cus' to their region priority config.
Adding 'cus' to the default fallback list ensures custom artwork is
always considered as a fallback when no other regional artwork exists.

Agent-Logs-Url: https://github.com/rommapp/romm/sessions/75c3e455-f7dd-4bd6-bec7-0460987e40a0

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-16 14:28:51 +00:00
copilot-swe-agent[bot] 7e5e56f824 Initial plan 2026-04-16 14:16:55 +00:00
Georges-Antoine Assi e1969652bf run fmt 2026-04-16 08:14:48 -04:00
Julien Loir 9a311a889b Add missing skip_hash_calculation from config write 2026-04-16 12:57:30 +02:00
Julien Loir a3cc1daada Check for computed large cover instead of ROM property 2026-04-16 12:43:08 +02:00
Julien Loir 98185a309b Make home boxarts respect gallery configuration 2026-04-16 12:14:21 +02:00
Georges-Antoine Assi faee6ff359 Merge pull request #3269 from rommapp/fix-pytest
fix(tests): bump pytest-asyncio for pytest 9 compatibility
2026-04-15 21:39:11 -04:00
Georges-Antoine Assi f5474ee588 fix(tests): bump pytest-asyncio for pytest 9 compatibility
pytest-asyncio 0.23 is incompatible with pytest 9 (it calls the removed
Package.obj attribute, causing an INTERNALERROR during collection).
Bump to ~= 1.1 and set asyncio_default_fixture_loop_scope to silence the
1.x deprecation warning.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 19:43:53 -04:00
Georges-Antoine Assi 350fc8dd84 tiny fix 2026-04-15 19:20:17 -04:00
Georges-Antoine Assi 7ce1a9faca Merge pull request #3266 from Spinnich/fix/gitattributes-line-endings
fix(git): enforce LF line endings for shell scripts via .gitattributes
2026-04-15 18:49:40 -04:00
Georges-Antoine Assi 341709674a tiny fix 2026-04-15 18:39:17 -04:00
Georges-Antoine Assi 833cf28be9 Merge pull request #3264 from Namaneo/fix-download
Fix download failing when hash has not been computed
2026-04-15 18:37:30 -04:00
Georges-Antoine Assi e5f2e1fcf0 Merge pull request #3268 from rommapp/dependabot/uv/pytest-9.0.3
chore(deps): bump pytest from 8.4.1 to 9.0.3
2026-04-15 15:58:01 -04:00
dependabot[bot] 64330f397f chore(deps): bump pytest from 8.4.1 to 9.0.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.1 to 9.0.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.4.1...9.0.3)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 9.0.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 19:46:30 +00:00
Georges-Antoine Assi 66cad62b4d Merge pull request #3267 from rommapp/dependabot/npm_and_yarn/frontend/follow-redirects-1.16.0
chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /frontend
2026-04-15 15:36:10 -04:00
dependabot[bot] d501799bba chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /frontend
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 19:14:20 +00:00
Spinnich e84ac3c46a fix(git): add eol=lf for .gitattributes itself and renormalize to LF
The .gitattributes file was stored with CRLF endings, which prevents
git from parsing its rules reliably on Linux/macOS. Add a self-referential
eol=lf rule and renormalize the file to LF in the index.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 11:53:14 -04:00
Spinnich 077296e978 fix(git): enforce LF line endings for shell scripts via .gitattributes
Windows developers with core.autocrlf=true (or the default) will have
git check out shell scripts with CRLF endings. When those files are
copied into a Linux Docker container they fail to execute:

  exec /entrypoint.sh: no such file or directory

Adding eol=lf attributes for *.sh, entrypoint.sh, and
docker/init_scripts/init ensures the repository always stores and checks
out these files with Unix line endings, regardless of platform or
git config.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 09:08:02 -04:00
Georges-Antoine Assi 04d21e8c18 Merge pull request #3263 from Spinnich/fix/collection-race-condition
Fix race condition in collection and favorite rom membership updates
2026-04-15 09:01:45 -04:00
Julien Loir 97e5bbe1cc Fix download failing when hash has not been computed 2026-04-15 13:50:48 +02:00
Spinnich e8ec8a0b18 fix(linting): fix import order in AddRoms.vue and RemoveRoms.vue
Move @/__generated__ import after third-party modules to satisfy
trunk's @trivago/prettier-plugin-sort-imports ordering rules.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 06:56:07 -04:00
Spinnich 15b485b118 fix(collections): address reviewer feedback on types and concurrency
- Use CollectionSchema instead of ReturnType<typeof collectionsStore.getCollection>
  in AddRoms.vue and RemoveRoms.vue (simpler, per gantoine review)
- Wrap bulk INSERT in a savepoint so a concurrent duplicate-key violation
  is caught via IntegrityError and ignored rather than aborting the transaction
- Only bump Collection.updated_at in remove_roms_from_collection when rows
  were actually deleted (rowcount > 0), matching add_roms_to_collection behavior

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 06:46:12 -04:00
Spinnich 14342b5726 fix(tests): use client.request(\"DELETE\") to send JSON body in tests
Starlette's TestClient (httpx-based) does not expose body kwargs on the
delete() convenience method; client.request(\"DELETE\", ..., json=...) is
the correct approach. Also switch datetime.utcnow() to
datetime.now(timezone.utc) to silence Python 3.13 deprecation warnings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 21:02:26 -04:00
Spinnich 9aab88ad8b fix(tests): fix remaining DELETE body and timestamp comparison issues
- Switch content= to data= for DELETE requests (Starlette TestClient is
  requests-based and does not accept content= keyword argument)
- Fix test_bumps_updated_at to record time before the API call and use >=
  comparison, avoiding false failures when MariaDB truncates DATETIME to
  whole seconds and creation/update land in the same second

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 20:53:57 -04:00
Spinnich fae6d869f1 fix(tests): correct test failures in collection endpoint tests
- Replace client.delete(json=...) with content=json.dumps()+Content-Type header
  (Starlette TestClient does not forward json= on DELETE requests)
- Adjust duplicate-name test to expect HTTP 500 matching CollectionAlreadyExistsException
- Add description="" to collections created without it to satisfy Pydantic schema
- Strip tzinfo before comparing updated_at to avoid offset-naive/aware TypeError

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 20:43:12 -04:00
Spinnich 1c9f010918 Fix isort import ordering in test_collection.py 2026-04-14 20:33:45 -04:00
Spinnich 4cc0c868b7 Fix linting and formatting issues from trunk CI 2026-04-14 20:27:45 -04:00
Spinnich 2ecefa3d3f Fix race condition in collection and favorite rom membership updates
Replace full rom_ids list replacement with atomic POST/DELETE endpoints
that add or remove individual ROMs from a collection. This prevents
concurrent rapid clicks from overwriting each other (last-write-wins).

Also fix missing session.flush() in add_rom_user() and add collection
endpoint tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 15:08:53 -04:00
Georges-Antoine Assi 7724aabb95 Merge pull request #3259 from rommapp/copilot/add-indices-to-roms-rom-files
Add missing index on `rom_files(rom_id)` to fix slow game listing on large ROM sets
2026-04-14 09:09:43 -04:00
copilot-swe-agent[bot] ce5624b470 Add index on rom_files(rom_id) to fix PostgreSQL performance issue
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/7bb628cb-282d-44c3-b912-9c81212611a9

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-14 02:35:19 +00:00
copilot-swe-agent[bot] 99aa32ee44 Initial plan 2026-04-14 02:30:58 +00:00
Georges-Antoine Assi 35df20b97a Merge pull request #3257 from rommapp/dependabot/uv/pillow-12.2.0
chore(deps): bump pillow from 12.1.1 to 12.2.0
2026-04-13 20:39:56 -04:00
dependabot[bot] 4b71e0aab0 chore(deps): bump pillow from 12.1.1 to 12.2.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.1.1 to 12.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 12.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 23:39:05 +00:00
Georges-Antoine Assi 3388b3413b Merge pull request #3254 from rommapp/romm-3251
feat: show TheGamesDB link on platform drawer when tgdb_id is set
2026-04-12 19:49:41 -04:00