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