Commit Graph

9385 Commits

Author SHA1 Message Date
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
Georges-Antoine Assi
2696dd4b98 Merge pull request #3339 from rommapp/dependabot/npm_and_yarn/frontend/axios-1.16.0
chore(deps): bump axios from 1.15.0 to 1.16.0 in /frontend
2026-05-08 09:48:17 -04:00
dependabot[bot]
d0b2c89e60 chore(deps): bump axios from 1.15.0 to 1.16.0 in /frontend
Bumps [axios](https://github.com/axios/axios) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.16.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 09:10:01 +00:00
Georges-Antoine Assi
c10539d9b9 Merge pull request #3333 from sabuswai/patch-1
Add credentialless attribute to YouTube iframe
2026-05-07 11:54:53 -04:00
sabuswai
228c640f18 Add credentialless attribute to YouTube iframe
add credentialless attribute to YouTube iframe for COEP compatibility
2026-05-07 01:13:07 -05:00
Georges-Antoine Assi
ccdd27b009 Merge pull request #3326 from rommapp/copilot/fix-exclusion-of-multiple-dots-files
Fix extension exclusion not matching multi-dot filenames
2026-05-04 08:55:35 -04:00
Georges-Antoine Assi
5e3a2707b0 cleanup 2026-05-03 19:39:19 -04:00
copilot-swe-agent[bot]
da005cf81a Optimize fnmatch check and use consistent n64 filename in test
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/8cbbc2ca-a3e3-4c61-9e47-f8544d59231a

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-03 23:36:23 +00:00
copilot-swe-agent[bot]
78c0b5b894 Fix broken test_rename_fs_rom_same_name function definition after new test insertion
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/8cbbc2ca-a3e3-4c61-9e47-f8544d59231a

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-03 23:35:19 +00:00
copilot-swe-agent[bot]
9593c30292 Address PR review: normalize exclusion sets, avoid duplicates, add multi-dot test for get_rom_files
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/8cbbc2ca-a3e3-4c61-9e47-f8544d59231a

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-05-03 23:34:30 +00:00