Commit Graph

10031 Commits

Author SHA1 Message Date
Georges-Antoine Assi
e7d46ee8c4 fix types 2026-06-18 09:32:38 -04:00
Georges-Antoine Assi
ee7a581067 fix migration names 2026-06-18 09:28:56 -04:00
Georges-Antoine Assi
222f767b2a run fmt 2026-06-18 09:05:55 -04:00
Georges-Antoine Assi
0d8a0a2ab2 Merge branch 'master' into copilot/support-sortname-tag-es-de 2026-06-18 09:04:17 -04:00
Georges-Antoine Assi
aef2a1f579 Merge pull request #3540 from bonofiglio/fix/search-performance-improvements
fix(search): full-text indexes+caching
2026-06-18 08:17:30 -04:00
Georges-Antoine Assi
4feb71a697 fix type errors 2026-06-18 08:07:07 -04:00
Georges-Antoine Assi
aea09911ad cleanup 2026-06-18 07:57:09 -04:00
Georges-Antoine Assi
cef5ed0699 set cache_key 2026-06-18 06:56:38 -04:00
Georges-Antoine Assi
fc688f5c16 fix(search): address Copilot review on relevance ordering & char-index cache
- Include order_by / order_dir / group_by_meta_id in the char-index cache
  key. The computed AlphaStrip positions depend on ordering and grouping,
  so keying only by user reused a stale index when those changed.
- Gate the relevance-ranking test assertions to MySQL/MariaDB. Relevance
  ordering uses MATCH ... AGAINST; PostgreSQL (also in the CI matrix) falls
  back to name ordering, where those assertions don't hold.
- Clarify the order_by API docstring: relevance ordering applies on
  MySQL/MariaDB; other databases fall back to name.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 21:21:53 -04:00
Georges-Antoine Assi
987e351113 refactor: derive file-name columns via @validates
Centralize the *_no_tags / *_no_ext / *_extension columns (derived from a
file name) behind @validates hooks instead of computing them by hand at
every write site:

- Add pure helpers (compute_file_name_parts and friends) to models.base;
  the filesystem base handler now delegates to them.
- Add @validates on Rom (fs_name), BaseAsset (file_name, inherited by all
  asset subclasses), and Firmware (file_name).
- update_rom keeps the fs_name-derived columns in sync on bulk update(),
  which also fixes the rename path never updating fs_extension.
- Drop the now-redundant computations at the scan/rename call sites.

Also fix the migration backfill loop and a pre-existing list[str | None]
type mismatch surfaced in scan_handler. Add tests for the helpers, the
validators, and the update_rom bulk-sync path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 21:14:16 -04:00
Georges-Antoine Assi
1d63c9c89d refactor: derive name_sort_key via @validates instead of ORM event
Replace the before_insert/before_update event listener with a
@validates("name") method on Rom. The sort key is now recomputed exactly
when name is assigned (ORM construction or mutation) rather than on every
flush of any field. Bulk update() still sets it explicitly in update_rom.

Also linearize the merged 0084 migration onto 0083_rom_category_soundtrack
so there is a single alembic head.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 20:06:45 -04:00
Georges-Antoine Assi
3ccae1d560 chore: merge roms search/sort migrations into single 0084
Combine 0083_add_roms_search_indexes, 0084_add_roms_name_index, and
0085_add_roms_name_sort_key into one migration (revision 0084) off
0082_save_origin_device.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 18:01:49 -04:00
Georges-Antoine Assi
fd4964909f fix lint issues 2026-06-17 17:44:43 -04:00
Georges-Antoine Assi
4bacdc5f09 Merge branch 'master' into fix/search-performance-improvements 2026-06-17 17:39:47 -04:00
Georges-Antoine Assi
fa97fd76de set atari st to gen4 2026-06-17 15:51:44 -04:00
zurdi
cdf561aed7 fix: removed bcrypt duplicated dependency 2026-06-17 16:29:24 +02:00
Zurdi
8d036e8226 Merge pull request #3436 from rommapp/chore/frontend-v2
Frontend migration to the new visual language
2026-06-17 16:14:01 +02:00
Zurdi
b52c5f1ae7 Merge branch 'master' into chore/frontend-v2 2026-06-17 15:43:08 +02:00
Zurdi
3e629ba699 Merge pull request #3544 from rommapp/fix/crash-on-startup-no-library
fix: Crash on startup when no library
4.9.2
2026-06-17 15:41:20 +02:00
zurdi
a0f54849ab fix(deps): bump vcrpy to 8.2.1 for aiohttp 3.14 compatibility
The pytest CI was failing on every vcr-marked test with:
  AttributeError: module 'aiohttp.streams' has no attribute
  'AsyncStreamReaderMixin'

aiohttp 3.14 (bumped in #3530) removed AsyncStreamReaderMixin, which
vcrpy's aiohttp stub referenced until 8.2.0. The lockfile still pinned
vcrpy 7.0.0 because the aiohttp bump only re-resolved aiohttp, and the
fixed vcrpy 8.2.x releases fall inside the global `exclude-newer = "7 days"`
window. Add a per-package exclude-newer override (mirroring starlette) so
the fixed release is allowed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 15:33:39 +02:00
zurdi
34e2ead5f7 fix: update starlette version to prevent compatibility issues 2026-06-17 14:27:13 +02:00
zurdi
2a53669459 fix: prevent crash on startup by bootstrapping library structure A when none is detected 2026-06-17 14:20:58 +02:00
zurdi
a692a7e8f8 fix: replace default avatar handling with userAvatarUrl utility across components 2026-06-17 13:13:37 +02:00
zurdi
0450ab7887 chore: remove lint job from frontend workflow 2026-06-17 10:04:47 +02:00
zurdi
f29e6e0ba6 chore: update token consumption guidelines and clarify Vuetify theme usage in CLAUDE.md 2026-06-17 10:01:26 +02:00
zurdi
85952d850f chore: remove unused lint scripts from package.json and update bcrypt dependency in pyproject.toml 2026-06-17 09:59:32 +02:00
zurdi
0897c69927 feat: implement All-mode selection handling in RSelect and Scan views 2026-06-17 01:46:30 +02:00
Daniel Bonofiglio
d5ffeeeddb fix(search): full-text indexes+caching
Adds a few new indexes to handle full-text searches instead of doing
`ILIKE` matching, improving performance substantially.
Alongside that, a few other things were done in order to improve search
performance, such as caching filter values so they're not computed on
each request to /api/roms. Overall, this should have a very noticeable
impact on large collections when using the search feature.
2026-06-16 20:39:15 -03:00
zurdi
0780c3820b chore: update package dependencies and configurations
- Added "esbuild" version "^0.28.1" to frontend package overrides.
- Updated "exclude-newer-package" in pyproject.toml to include "vcrpy" with a date of "2026-06-17".
- Modified uv.lock to reflect the new "vcrpy" version "8.2.1" and removed platform-specific markers for dependencies.
2026-06-17 01:27:08 +02:00
zurdi
89030ecc1f chore: update package-lock.json and optimize Vite config
- Added new dependencies including @one-ini/wasm and @oxc-parser bindings for various platforms in package-lock.json.
- Updated vitest to version 4.1.8 with its dependencies.
- Removed exclusion of vue-i18n from Vite's optimizeDeps configuration to improve dependency optimization.
2026-06-16 18:24:34 +02:00
zurdi
f01eda9227 Merge remote-tracking branch 'origin/master' into chore/frontend-v2 2026-06-16 18:21:14 +02:00
zurdi
1e00538db3 feat: enhance selection bar and game action button for status toggling 2026-06-16 17:33:25 +02:00
zurdi
84a4c80ba6 feat: enhance game actions and menu interactions
- Updated `useGameActions` to improve navigation handling during game play.
- Modified `RMenu` to allow modifier-clicks on links to open in new tabs without closing the menu.
- Added new stories and tests for `RMenuItem` to ensure correct behavior for new-tab gestures.
- Introduced `colorCoverArt` for procedural cover-art generation, ensuring consistent styling across missing and unmatched cover images.
- Implemented SVG generation for cover art in `covers.ts`, providing unique visuals for identified and unidentified ROMs.
- Enhanced `EmulatorJS` and `Ruffle` views to support dynamic cover art based on selected styles, improving user experience during gameplay.
- Refactored cover image handling to support animations and maintain aspect ratios.
2026-06-16 17:20:47 +02:00
Georges-Antoine Assi
00af28821c Merge pull request #3532 from rommapp/dependabot/npm_and_yarn/frontend/multi-ba6cf36f62
build(deps): bump ws and engine.io-client in /frontend
2026-06-16 07:24:50 -04:00
Georges-Antoine Assi
81d733967c Merge pull request #3533 from rommapp/dependabot/npm_and_yarn/frontend/markdown-it-14.2.0
build(deps): bump markdown-it from 14.1.1 to 14.2.0 in /frontend
2026-06-16 07:24:24 -04:00
dependabot[bot]
d462e794d2 build(deps): bump markdown-it from 14.1.1 to 14.2.0 in /frontend
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 14.1.1 to 14.2.0.
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/14.1.1...14.2.0)

---
updated-dependencies:
- dependency-name: markdown-it
  dependency-version: 14.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-16 11:22:15 +00:00
dependabot[bot]
2054403dd7 build(deps): bump ws and engine.io-client in /frontend
Bumps [ws](https://github.com/websockets/ws) and [engine.io-client](https://github.com/socketio/socket.io). These dependencies needed to be updated together.

Updates `ws` from 8.18.3 to 8.21.0
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.18.3...8.21.0)

Updates `engine.io-client` from 6.6.4 to 6.6.6
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/engine.io-client@6.6.4...engine.io-client@6.6.6)

---
updated-dependencies:
- dependency-name: ws
  dependency-version: 8.21.0
  dependency-type: indirect
- dependency-name: engine.io-client
  dependency-version: 6.6.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-16 11:22:05 +00:00
Georges-Antoine Assi
3cb6d8c699 Merge pull request #3530 from rommapp/dependabot/uv/aiohttp-3.14.1
build(deps): bump aiohttp from 3.13.4 to 3.14.1
2026-06-16 07:19:59 -04:00
zurdi
ec70273998 refactor: remove V2_PLAN.md and update vite.config.js for vue-i18n optimization
- Deleted the V2_PLAN.md file which contained the full UI overhaul plan for the RomM frontend.
- Updated vite.config.js to exclude vue-i18n from pre-bundling to fix issues with Vite 8's Rolldown dependency optimizer.
2026-06-16 10:24:56 +02:00
dependabot[bot]
23316bc8bd build(deps): bump aiohttp from 3.13.4 to 3.14.1
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-16 00:36:11 +00:00
Georges-Antoine Assi
586eddaf83 Merge pull request #3527 from rommapp/dependabot/uv/python-multipart-0.0.31
build(deps): bump python-multipart from 0.0.22 to 0.0.31
2026-06-15 20:34:02 -04:00
Georges-Antoine Assi
d171366bc3 Merge pull request #3528 from rommapp/dependabot/uv/tornado-6.5.7
build(deps): bump tornado from 6.5.6 to 6.5.7
2026-06-15 20:33:48 -04:00
zurdi
9f6138d010 Merge branch 'master' into chore/frontend-v2
Adopt master's ROM schema design (sibling_roms + files, batched
get_files_for_roms / get_siblings_for_roms) while preserving the v2-branch
features master lacks: per-user is_main_sibling on siblings and audio_meta
on rom files.

Conflict resolution:
- responses/rom.py: keep master's sibling_roms/files fields; re-graft
  is_main_sibling via SiblingRomSchema.from_rom(rom, is_main_sibling=...);
  restore the eager-relationship fallback in
  SimpleRomSchema.from_orm_with_request (None sentinel) so the v2
  /{id}/simple endpoint still returns siblings/files.
- roms_handler.py: get_siblings_for_roms now left-joins RomUser and returns
  (Rom, is_main_sibling) tuples; keep both branch and master file helpers.
- drop the redundant branch-only sibling_ids field and
  get_sibling_data_for_roms.
- generated types resolved to match (sibling_roms + files; RomFileSchema
  keeps audio_meta and gains archive_members).
- update v2 components and the RelatedGameCard mock to read sibling_roms.
- fix stale exclude={"siblings"} -> "sibling_roms" in scan emit payloads.
- re-chain the audio_meta migration as 0083 (after master's 0082) to keep a
  single Alembic head.
- package.json: union of branch tooling + master dependency bumps; lock
  regenerated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 01:19:55 +02:00
dependabot[bot]
83025a9768 build(deps): bump tornado from 6.5.6 to 6.5.7
Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.6 to 6.5.7.
- [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst)
- [Commits](https://github.com/tornadoweb/tornado/compare/v6.5.6...v6.5.7)

---
updated-dependencies:
- dependency-name: tornado
  dependency-version: 6.5.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-15 22:33:53 +00:00
dependabot[bot]
be823ff50a build(deps): bump python-multipart from 0.0.22 to 0.0.31
Bumps [python-multipart](https://github.com/Kludex/python-multipart) from 0.0.22 to 0.0.31.
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Kludex/python-multipart/compare/0.0.22...0.0.31)

---
updated-dependencies:
- dependency-name: python-multipart
  dependency-version: 0.0.31
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-15 22:33:52 +00:00
Georges-Antoine Assi
797d33abfb Merge pull request #3525 from rommapp/dependabot/npm_and_yarn/frontend/js-yaml-4.2.0
build(deps-dev): bump js-yaml from 4.1.1 to 4.2.0 in /frontend
2026-06-15 18:32:37 -04:00
Georges-Antoine Assi
e55ce4d139 Merge pull request #3523 from rommapp/copilot/bugfix-bypass-autologin-feature
Fix bypass_autologin overwritten by 403 interceptor during app initialization
4.9.1
2026-06-15 13:51:21 -04:00
dependabot[bot]
d124747eaa build(deps-dev): bump js-yaml from 4.1.1 to 4.2.0 in /frontend
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.1 to 4.2.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/commits)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-15 17:47:57 +00:00
Georges-Antoine Assi
ccb8d400e9 run fmt 2026-06-15 13:47:32 -04:00
Georges-Antoine Assi
05c1f88869 Merge pull request #3524 from rommapp/override-rolldown
Override rolldown version
2026-06-15 13:43:25 -04:00