Commit Graph

177 Commits

Author SHA1 Message Date
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
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
Georges-Antoine Assi
cd101758fd cleanup for simplicity 2026-06-08 11:13:15 -04:00
Georges-Antoine Assi
3ca45fafc1 [ROMM-3457] Add tgcd and supergrafx to emulatorjs platform list 2026-05-31 09:23:53 -04:00
Georges-Antoine Assi
9e5f49a6fc update jsdoc 2026-05-30 21:53:44 -04:00
Georges-Antoine Assi
96ac7ac5e8 only add new cores in nightly 2026-05-30 20:53:52 -04:00
Georges-Antoine Assi
be15ab4513 feat(player): add genesis_plus_gx_wide, bsnes, freeintv, azahar EJS cores
- genesis_plus_gx_wide added alongside genesis_plus_gx for all Sega
  MD/MS/GG/CD platforms
- bsnes added alongside snes9x for SNES platforms
- freeintv added for Intellivision
- azahar added for Nintendo 3DS (3ds, new-nintendo-3ds) and marked as
  requiring threads

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 04:30:47 -04:00
zurdi
4409570d2a feat: enhance smart collection and metadata dialogs with improved filtering and context handling
- Updated CreateSmartCollectionDialog to include current collection and virtual collection IDs for better context.
- Enhanced RefreshMetadataDialog with new hash matcher options and improved UI for metadata sources selection.
- Improved SearchCoverDialog to conditionally display provider covers based on selected cover type.
- Added collection and virtual collection lookups in CollectionSettingsDrawer for better filter summaries.
- Updated MatchRom components to handle cases where matches may not have covers, improving user feedback.
- Enhanced smart collection criteria handling in utils to support additional context and summary lookups.
2026-05-26 11:01:29 +00:00
Georges-Antoine Assi
fb13f54f48 cleanup 2026-05-24 17:43:01 -04:00
Claude
5adffeca71 perf(roms): skip rom_files load on gallery list endpoint
The gallery list endpoint was eager-loading every rom_file row for each
paginated ROM via selectinload, then re-joining each row back to its
parent rom for the is_top_level computation. For platforms with extracted
multi-file ROMs (Xbox 360 ~1394 files/ROM, Switch ~199 files/ROM), this
made /api/roms time out at 120s even with a rom_id index.

Cards never displayed individual files — only the has_simple_single_file
/ has_nested_single_file / has_multiple_files booleans that derive from
the file list. Denormalize the underlying state onto roms as multi_file
(folder-based vs single-file) and top_level_file_count, recompute the
booleans from those columns, drop the selectinload from filter_roms, and
move the files field from SimpleRomSchema to DetailedRomSchema so the
gallery payload no longer ships file rows.

Also drop the redundant joinedload(RomFile.rom) and switch the relation
to lazy="select" so subsequent file.rom accesses resolve from the
session identity map instead of re-JOINing the parent rom per file row.

ShowQRCode.vue's folder-based DS/3DS fallback now fetches the detailed
rom on demand, since SimpleRom no longer carries files.
2026-05-24 15:02:02 +00:00
Georges-Antoine Assi
22e273f0f5 add sync to task type item 2026-03-16 08:54:40 -04:00
Georges-Antoine Assi
4bfd050a57 Merge branch 'master' into api-form-fields 2026-03-06 17:12:18 -05:00
Georges-Antoine Assi
b2cfb953b8 add desmune to core selection for 3ds 2026-02-28 23:30:45 -05:00
Georges-Antoine Assi
f4d9961460 really go all out with typing stuff 2026-02-18 17:41:50 -05:00
Georges-Antoine Assi
dc685911f0 fix trunk check 2026-02-07 22:07:15 -05:00
Georges-Antoine Assi
a29cb75767 fix mapped value 2026-02-07 21:38:31 -05:00
Georges-Antoine Assi
2d678ef19f [ROMM-2976] Fix no games displayed for status filter 2026-02-07 21:27:24 -05:00
Georges-Antoine Assi
5c15fe2137 [HOTFIX] Only add ? to qs on download path 2026-01-16 17:22:00 -05:00
zurdi
cbe368e388 Add formatRelativeDate utility and update components to use it for improved date display 2025-12-17 12:45:56 +00:00
zurdi
d0101a4220 Refactor save and state selection logic; improve empty cover image aspect ratio handling 2025-12-17 10:41:12 +00:00
Georges-Antoine Assi
ba4ed763a8 run fmt 2025-12-01 20:19:59 -05:00
Tanguy Mazé
040dc9fa56 refactor(i18n): add getBrowserCompatibleLocale utility and fix missing locale in notes
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 01:20:44 +01:00
Tanguy Mazé
12b34bfada feat(i18n): fix French translations and add locale-aware date formatting
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 00:58:58 +01:00
Georges-Antoine Assi
2f5df3cd24 changes from bot review 2025-10-25 19:34:00 -04:00
Georges-Antoine Assi
66d985fa02 changes from bot review 2025-10-25 12:22:50 -04:00
Georges-Antoine Assi
2dc4cacd98 animate on play btn 2025-10-25 11:41:35 -04:00
Georges-Antoine Assi
90e579e2ce Spin disks on hover 2025-10-25 10:03:34 -04:00
Georges-Antoine Assi
f919951a22 self code cleanup 2025-10-23 10:36:08 -04:00
Georges-Antoine Assi
e4b7692fcd display paltform category and family 2025-10-19 09:35:50 -04:00
Georges-Antoine Assi
9a3e073083 add trnaslations 2025-10-16 17:14:45 -04:00
Georges-Antoine Assi
09854ddd87 more cleanup of client 2025-10-15 20:49:59 -04:00
Georges-Antoine Assi
2d6858694c [ROMM-2519] Add QR code for all ds platform 2025-10-05 09:40:12 -04:00
Georges-Antoine Assi
d0a8f6fa4f [ROMM-2416] Use python timezone aware datetime as defaults for create_at/updated_at 2025-09-17 10:49:05 -04:00
Georges-Antoine Assi
c5758bceeb use v-img with webp and fallback in console mode 2025-09-12 15:36:59 -04:00
Michael Manganiello
a6bdd84148 misc: Add missing language codes
This list was created based on latest DAT files from No-Intro and
Redump.org.

With all those extracted files in a folder, this command retrieved
language codes from filenames (only considering games with at least two
languages, to avoid false positives):

```shell
rg -N "^.*game name=\"(.*?)\".*" -r '$1' | \
    rg -N "^.* \(([A-Z][a-z](,[A-Z][a-z])+)\).*" -r '$1' | \
    rg -N -o "[A-Z][a-z]" | \
    sort | \
    uniq -c
```
2025-09-11 17:38:36 -03:00
Georges-Antoine Assi
72abfadd56 [ROMM-2148] Add metadata icons to table view 2025-09-08 20:59:06 -04:00
Michael Manganiello
1e14d75333 feat: Make EmulatorJS threads always available
Reload page before and after using EmulatorJS to ensure proper COEP/COOP
headers are applied. This is needed to enable multi-threading in
EmulatorJS, by allowing it to use `SharedArrayBuffer`.
2025-09-04 16:21:30 -03:00
Georges-Antoine Assi
5cc5227f8e define expost isEmulationSupported from playbtn 2025-09-03 18:18:59 -04:00
Georges-Antoine Assi
fe3fff89da Merge branch 'master' into misc/play-btn-component 2025-09-03 18:00:12 -04:00
Georges-Antoine Assi
dfd6bd2bc9 Run formatter on all vue imports 2025-09-03 10:18:08 -04:00
Michael Manganiello
c02e9fdb88 misc: Apply import sorting 2025-09-02 00:22:51 -03:00
Michael Manganiello
c0b6cd15c4 misc: Add PlayBtn component to unify button logic
The Play button logic was duplicated in three different places,
including when to run either EmulatorJS or Ruffle.

This change centralizes that logic in a new `PlayBtn` component, which
internally decides which player to use, and binds to any arguments
passed to it.

Now all three places also consider platform versions when checking
for emulation support.
2025-09-01 11:29:59 -03:00
Georges-Antoine Assi
90f10e8946 Fixed platform slugs that were missed 2025-08-06 17:28:10 -04:00
Georges-Antoine Assi
4e2bde2aef Merge branch 'master' into universal-slugs 2025-08-01 21:51:40 -04:00
Georges-Antoine Assi
a1921307db add cd-i support for emujs 2025-07-30 23:43:09 -04:00
Georges-Antoine Assi
595c52bcab Unify singular slugs 2025-07-23 21:52:52 -04:00
zurdi
98448dd167 adjust layout width calculation for improved responsiveness 2025-07-20 18:33:52 +00:00
Michael Manganiello
7f2ab9ed63 fix: Require threads for dosbox_pure core
As implemented in EmulatorJS.org:
f679b265e9/data/src/emulator.js (L47)
2025-07-05 14:12:36 -03:00
zurdi
117ad30df0 Merge branch 'master' into romm-1984 2025-06-16 09:19:59 +00:00
zurdi
e1db580f11 fix: remove preserveAspectRatio attribute from SVG strings in cover image functions 2025-06-16 09:01:52 +00:00