Commit Graph

9394 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
4ee310b0da fix(console): honor DISABLE_EMULATOR_JS in console mode
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/67bb960a-e5ec-4569-bdeb-d8c90028c004

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-14 18:40:25 +00:00
copilot-swe-agent[bot]
5ed8fae4fc Initial plan 2026-05-14 18:29:58 +00:00
Georges-Antoine Assi
c635ba5451 Merge pull request #3370 from rommapp/dependabot/uv/authlib-1.6.12
chore(deps): bump authlib from 1.6.9 to 1.6.12
2026-05-13 22:16:04 -04:00
dependabot[bot]
e6662e9968 chore(deps): bump authlib from 1.6.9 to 1.6.12
Bumps [authlib](https://github.com/authlib/authlib) from 1.6.9 to 1.6.12.
- [Release notes](https://github.com/authlib/authlib/releases)
- [Changelog](https://github.com/authlib/authlib/blob/1.6.12/docs/changelog.rst)
- [Commits](https://github.com/authlib/authlib/compare/v1.6.9...1.6.12)

---
updated-dependencies:
- dependency-name: authlib
  dependency-version: 1.6.12
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-14 00:22:55 +00:00
Georges-Antoine Assi
c6a2f56fad Merge pull request #3367 from rommapp/regional-provider-tags
Prefer ROM's own region tag for ScreenScraper and IGDB artwork
2026-05-13 11:19:53 -04:00
Georges-Antoine Assi
8e009dffc0 render covers at their natural aspect ratio and drop the cover-style setting
Covers now use object-fit: contain inside a fixed slot, so each image
keeps its own aspect ratio (letterboxed where needed) instead of being
cropped to the platform's configured ratio. The slot itself still uses
a single default aspect ratio for grid stability, so cards don't reflow
as images load.

With per-platform aspect ratio no longer doing anything visible, remove
the Cover style picker from the platform info drawer and clean up dead
plumbing: galleryViewStore.getAspectRatio no longer reads
platform.aspect_ratio, platformId is dropped from Skeleton / SearchCover
/ MatchRom / showSearchCoverDialog, and the orphaned i18n keys
(cover-style, settings, old-squared-cases, old-horizontal-cases) are
stripped from all platform.json locale files.

Backend aspect_ratio column is left in place; no client sends it anymore.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 11:11:09 -04:00
Georges-Antoine Assi
c15038957a Merge pull request #3364 from rommapp/tolerate-forward-compat-config
Tolerate forward-compat values and malformed YAML in config loader
2026-05-13 10:22:26 -04:00
Georges-Antoine Assi
dad1250e15 case-insensitive region lookup for provider shortcode mapping
Rom.regions can contain raw filename text like "europe" or "EUROPE"
(filename parsing in roms_handler doesn't normalize casing), so the
direct dict lookup missed those tags and the locale silently fell back
to scan.priority.region. Replace the dict access with a helper that
lowercases both sides.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 09:34:10 -04:00
Georges-Antoine Assi
944514acc0 prefer rom's own region tag for ScreenScraper and IGDB artwork
When a ROM filename carries a region tag (e.g. (Europe)), use that
region first when picking artwork and localized titles, falling back to
the configured scan.priority.region. Previously the configured priority
was the only signal, so a US-first config would force US covers onto
European ROMs even when an EU asset was available.

Adds a shared name->provider-shortcode map and threads the rom through
the IGDB and SS lookup APIs so the rom-aware locale/region selection
can run for both providers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 09:06:11 -04:00
Georges-Antoine Assi
fd0ed1b22c cleanup 2026-05-13 08:56:28 -04:00
Georges-Antoine Assi
8210bab806 Tolerate forward-compat values and malformed YAML in config loader
Sample configs shipped with newer releases can reference media types or
options unknown to older versions; previously the loader called
sys.exit(3) and refused to boot. Now drop unknown scan.media entries,
fall back to defaults for unknown gamelist media thumbnail/image values,
and recover from YAML parse errors with a clear critical log instead of
a traceback. Type-mismatch validation still hard-fails since those are
real misconfigurations.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 22:26:43 -04:00
Georges-Antoine Assi
d87bf08074 Merge pull request #3362 from enlewof/master
Add exclude for images directory in config.batocera-retrobat.yml
2026-05-12 10:38:57 -04:00
Allen Lew
2c05abda61 Update config.batocera-retrobat.yml
Don't scan the images directory in games
2026-05-11 22:29:16 -07:00
Georges-Antoine Assi
effd081f90 Merge pull request #3286 from rommapp/local-lb-fix
Fix local LaunchBox handler: paths, arcade, videos, remote-match images
2026-05-09 14:46:35 -04:00
Georges-Antoine Assi
8999b66574 Preserve local LaunchBox data on UPDATE scans and video extensions
UPDATE scans with a known launchbox_id were calling get_rom_by_id(),
which only returns remote data and bypassed get_rom()'s local-first
merge — so local-only fields like Notes were getting clobbered and
local media matching fidelity dropped. get_rom_by_id() now optionally
takes fs_name/platform_slug and merges the local entry when its
DatabaseID matches the requested id.

Also fixes populate_rom_specific_paths writing every video as
video.mp4 regardless of source extension; since store_media_file is a
byte copy, .mkv/.webm contents would be served as .mp4 and break MIME
sniffing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 14:32:34 -04:00
Georges-Antoine Assi
d8ef6f0c05 Merge branch 'master' into local-lb-fix 2026-05-09 13:20:31 -04:00
Georges-Antoine Assi
547c64c4f5 update hltb api 2026-05-09 12:56:01 -04:00
Georges-Antoine Assi
d009662499 Merge pull request #3342 from rommapp/copilot/add-copy-default-config-yml
Auto-create missing `config.yml` on startup in mounted config volume
2026-05-09 11:00:22 -04:00
Georges-Antoine Assi
562ec51869 fix batocerya 2026-05-09 10:38:47 -04:00
Georges-Antoine Assi
796e9afd46 Merge pull request #3349 from enlewof/patch-1
Update config.batocera-retrobat.yml
2026-05-09 10:38:24 -04:00
Georges-Antoine Assi
f3b46d7bf3 Merge pull request #3353 from rommapp/validate-image-uploads
fix(backend): validate uploaded images with libmagic
2026-05-09 10:35:46 -04:00
Georges-Antoine Assi
e3aaa106a2 perf(backend): reuse libmagic instance for image upload validation
magic.Magic(mime=True) loads the magic database from disk on construction;
instantiating it per request was adding pointless overhead to every avatar
and artwork upload. Share a module-level instance guarded by a lock (the
underlying magic_t handle is not thread-safe), and surface MagicException
as a 400 so a sniffing failure fails closed instead of bubbling a 500.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 10:14:38 -04:00
Georges-Antoine Assi
783d9a257e test(backend): cover artwork upload validation for roms and collections
Adds rejection + acceptance tests for update_rom, add_collection, and
update_collection artwork uploads, mirroring the existing avatar tests:
non-image content returns 400, and a real PNG uploaded under a misleading
filename like payload.html is stored with the trusted .png extension.

Also fixes two `return HTTPException(...)` → `raise` in raw.py so the 404
path actually surfaces instead of silently returning the exception object.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 09:37:44 -04:00
Georges-Antoine Assi
53f14f5710 fix(backend): validate uploaded images with libmagic before storing
Avatar, ROM artwork, and collection artwork uploads now sniff the file
header with libmagic and reject anything that isn't PNG/JPEG/WebP/GIF,
saving the file with an extension derived from the detected MIME rather
than the user-supplied filename. Pairs with the raw asset endpoint,
which decides inline vs attachment from the on-disk extension.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 09:18:02 -04:00
Georges-Antoine Assi
cce678ed0b Merge pull request #3352 from rommapp/claude/eager-wing-a67e39
fix(frontend): use static auth background on Firefox
2026-05-09 09:08:50 -04:00
Georges-Antoine Assi
fe4546c8c1 fix(frontend): use static auth background on firefox
The animated SVG background causes lag on Firefox. Swap in the static
variant via @-moz-document url-prefix() so other engines keep the
animation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 09:05:58 -04:00
Georges-Antoine Assi
a5d13b1707 Merge pull request #3341 from rommapp/copilot/fix-checkbox-toggle-on-click
Setup wizard: make platform row click toggle selection checkbox
2026-05-09 08:47:47 -04:00
Georges-Antoine Assi
e6fb56a548 Merge pull request #3350 from rommapp/dependabot/npm_and_yarn/frontend/babel/plugin-transform-modules-systemjs-7.29.4
chore(deps-dev): bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /frontend
2026-05-09 08:30:11 -04:00
Georges-Antoine Assi
a1acc89ad2 Merge pull request #3351 from rommapp/dependabot/uv/cryptography-46.0.7
chore(deps): bump cryptography from 46.0.5 to 46.0.7
2026-05-09 08:27:46 -04:00
dependabot[bot]
913021b5af chore(deps-dev): bump @babel/plugin-transform-modules-systemjs
Bumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.29.0 to 7.29.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-modules-systemjs"
  dependency-version: 7.29.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-09 12:26:25 +00:00
dependabot[bot]
7e5e46cc9d chore(deps): bump cryptography from 46.0.5 to 46.0.7
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.5 to 46.0.7.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.5...46.0.7)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 46.0.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-09 12:26:25 +00:00
Georges-Antoine Assi
7b2ea00d94 Merge pull request #3346 from rommapp/dependabot/npm_and_yarn/frontend/multi-a4987b4d91
chore(deps): bump serialize-javascript and workbox-build in /frontend
2026-05-09 08:26:00 -04:00
Georges-Antoine Assi
3f0b0510ab Merge pull request #3345 from rommapp/dependabot/npm_and_yarn/frontend/fast-uri-3.1.2
chore(deps-dev): bump fast-uri from 3.1.0 to 3.1.2 in /frontend
2026-05-09 08:25:07 -04:00
Allen Lew
8cac076122 Update config.batocera-retrobat.yml
Segacd became megacd with version 42 of batocera (see https://github.com/batocera-linux/batocera.linux/blob/master/batocera-Changelog.md#20251012---batoceralinux-42---papilio-ulysses).  Also don't scan txt files or xml (batocera leaves txt with initial directory and gamelist.xml after a scan)
2026-05-08 21:07:48 -07:00
Georges-Antoine Assi
513c40771c Merge pull request #3347 from rommapp/rm-log-level-rqscheduler
remove log-level from rqscheduler
4.9.0-alpha.2
2026-05-08 19:36:14 -04:00
Georges-Antoine Assi
faed12e407 remove log-level from rqscheduler 2026-05-08 19:30:43 -04:00
dependabot[bot]
d3a394db85 chore(deps): bump serialize-javascript and workbox-build in /frontend
Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) and [workbox-build](https://github.com/googlechrome/workbox). These dependencies needed to be updated together.

Updates `serialize-javascript` from 6.0.2 to 7.0.5
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.2...v7.0.5)

Updates `workbox-build` from 7.4.0 to 7.4.1
- [Release notes](https://github.com/googlechrome/workbox/releases)
- [Commits](https://github.com/googlechrome/workbox/compare/v7.4.0...v7.4.1)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 7.0.5
  dependency-type: indirect
- dependency-name: workbox-build
  dependency-version: 7.4.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 21:28:20 +00:00
dependabot[bot]
2cea8efe8a chore(deps-dev): bump fast-uri from 3.1.0 to 3.1.2 in /frontend
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 20:28:44 +00:00
Georges-Antoine Assi
5ea5aecd25 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-08 14:26:11 -04:00
Georges-Antoine Assi
145b86629e Merge pull request #3343 from rommapp/dependabot/uv/mako-1.3.12
chore(deps): bump mako from 1.3.11 to 1.3.12
4.9.0-alpha.1
2026-05-08 14:15:06 -04:00
Georges-Antoine Assi
d0852a2606 Merge pull request #3344 from rommapp/dependabot/uv/aiohttp-3.13.4
chore(deps): bump aiohttp from 3.13.3 to 3.13.4
2026-05-08 14:14:11 -04:00
dependabot[bot]
6ed4c3206c chore(deps): bump aiohttp from 3.13.3 to 3.13.4
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 15:43:35 +00:00
dependabot[bot]
99c99c88ec chore(deps): bump mako from 1.3.11 to 1.3.12
Bumps [mako](https://github.com/sqlalchemy/mako) from 1.3.11 to 1.3.12.
- [Release notes](https://github.com/sqlalchemy/mako/releases)
- [Changelog](https://github.com/sqlalchemy/mako/blob/main/CHANGES)
- [Commits](https://github.com/sqlalchemy/mako/commits)

---
updated-dependencies:
- dependency-name: mako
  dependency-version: 1.3.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 14:45:27 +00:00
copilot-swe-agent[bot]
c0910dde1f fix(config): initialize state when config creation fails
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/0c94e1c8-0f79-4f5f-a72b-e45832906d00

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-08 13:56:51 +00:00
copilot-swe-agent[bot]
eae577f74c refactor(config): use pathlib for missing config creation
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/0c94e1c8-0f79-4f5f-a72b-e45832906d00

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-08 13:55:38 +00:00
copilot-swe-agent[bot]
2bb86e4836 Make setup platform rows toggle checkbox selection on click
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/00a7f2a2-cabf-470b-a73e-a127ffcdccd5

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-08 13:55:00 +00:00
copilot-swe-agent[bot]
9ef217339f test(config): cover auto-created config directory
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/0c94e1c8-0f79-4f5f-a72b-e45832906d00

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-08 13:54:19 +00:00
copilot-swe-agent[bot]
fdd9047b37 feat(config): auto-create missing config.yml on startup
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/0c94e1c8-0f79-4f5f-a72b-e45832906d00

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-08 13:52:53 +00:00
copilot-swe-agent[bot]
79dc039748 Initial plan 2026-05-08 13:48:52 +00:00
copilot-swe-agent[bot]
6749728e6d Initial plan 2026-05-08 13:48:33 +00:00