Commit Graph

304 Commits

Author SHA1 Message Date
Georges-Antoine Assi
0c18c2588c run fmt 2026-03-10 21:47:27 -04:00
cc
a4e8d9df49 fix: sort without mutating store, move constants to module scope
- Spread allPlatforms before sorting to avoid mutating Pinia store
- Move _METADATA_SOURCE_COLUMNS to module level
- Add optional chain on sourceInfo v-img src

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:09:19 -04:00
cc
52c53505a1 refactor: address review feedback
- Derive metadata source columns from Rom model instead of hardcoded list
- Replace getOrderedCoverage() function calls with a computed map to avoid
  redundant sorting on each render

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:27:50 -04:00
cc
778097f4a0 feat: add per-platform metadata coverage and region breakdown to server stats
Enhances the server stats page with two new per-platform statistics:
- Metadata coverage: shows which sources matched ROMs (ordered by user's scan priority config)
- Region breakdown: shows ROM counts per region with flag emojis

Backend adds two new efficient queries (single GROUP BY for metadata, Python-side aggregation for regions).
Frontend redesigns platform cards with a tabular detail layout, size bar visualization, and expandable region chips.

> This PR was developed with AI assistance (Claude Code) per CONTRIBUTING.md disclosure requirements.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:15:08 -04:00
Georges-Antoine Assi
e3d9bfe9fa fix migration 2026-03-08 20:14:14 -04:00
copilot-swe-agent[bot]
ae73da7c27 Fix 500 error from empty fs_name_no_tags causing mass sibling matching and incorrect ROM grouping
- Add migration 0071 to fix sibling_roms view: add guard against empty string matching for fs_name_no_tags
- Fix group_by_meta_id in filter_roms: use func.nullif to treat empty fs_name_no_tags as NULL in grouping key
- Add group_by_meta_id support to get_roms_scalar
- Add tests for sibling matching behavior with empty/non-empty fs_name_no_tags

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-08 23:17:51 +00:00
Georges-Antoine Assi
2905328c9e update comments 2026-03-08 11:39:41 -04:00
Georges-Antoine Assi
29a5b8edf2 fix on mariadb 2026-03-08 10:15:08 -04:00
Georges-Antoine Assi
72d04b1ec7 fixes 2026-03-08 10:08:50 -04:00
Georges-Antoine Assi
708105aabd Hack for natural sorting of roms 2026-03-08 09:51:51 -04:00
Georges-Antoine Assi
2706927cbc fix bug with exclusion criteria 2026-02-19 10:32:55 -05:00
Georges-Antoine Assi
d3aa1b7c44 prefer exact stem matches first 2026-02-19 10:27:17 -05:00
Georges-Antoine Assi
6461078721 loosen rules around fetch matching screenshots 2026-02-19 10:18:56 -05:00
Georges-Antoine Assi
fe5b831afc Add Rom.ra_hash and RomFile.ra_hash fields to API 2026-02-13 11:11:02 -05:00
Georges-Antoine Assi
66ee72431e fix bot comment 2026-02-08 21:23:42 -05:00
Georges-Antoine Assi
16cac7cf64 [ROMM-2972] Fix /props returning stale data 2026-02-08 21:10:12 -05:00
Georges-Antoine Assi
5596999a3b one last regression 2026-02-07 22:46:09 -05:00
Georges-Antoine Assi
cb85d70b83 extract filter into own block 2026-02-07 22:27:44 -05:00
Georges-Antoine Assi
3e86e55994 changes from bot review 2026-02-07 22:02:15 -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
4733a86302 [ROMM-2983] Fix negative filter by verified 2026-02-07 15:44:03 -05:00
Georges-Antoine Assi
37436fddb7 changes from self review 2026-02-06 10:31:08 -05:00
Georges-Antoine Assi
e36d7650e7 [ROMM-2989] Split search term by | 2026-02-06 10:20:14 -05:00
Georges-Antoine Assi
0da88e4727 Merge pull request #2984 from zeroSteiner/fix/issue/2451
Fix #2451: Group games with same name but different tags as versionsr
2026-02-03 23:27:41 -05:00
Spencer McIntyre
624f4ce14d Update the romm view to group by fs no tag 2026-02-03 20:22:59 -05:00
nendo
220d7531e7 refactor(saves): replace order_by_updated_at_desc with flexible order_by
Add order_by and order_dir parameters to get_saves() for flexible
sorting. Supports "updated_at" and "created_at" fields with "asc" or
"desc" direction (default: desc). Enables ascending order for pruning
scenarios.
2026-02-03 20:06:09 +09:00
nendo
a6ecfb738c feat(devices): add duplicate device registration handling
Add fingerprint-based detection for duplicate device registration with
configurable behavior via new body params:
- allow_existing: return existing device if fingerprint matches
- allow_duplicate: skip fingerprint check, always create new device
- reset_syncs: clear tracked saves when reclaiming existing device

Fingerprint matching uses mac_address (primary) or hostname+platform
(fallback). Returns 409 Conflict with device_id when duplicate detected
without flags, 200 OK for existing device, 201 Created for new.
2026-02-03 20:03:50 +09:00
nendo
a236123e4f feat(saves): add slot-based save sync with content hash deduplication
- Add device registration and save synchronization
- Implement slot-based save organization with datetime tagging
- Add conflict detection for multi-device sync scenarios
- Add content hash computation for save deduplication
- Support ZIP inner-file hashing for consistent deduplication
- Add confirm_download endpoint for sync state management
- Add overwrite parameter to bypass conflict checks
2026-01-31 21:57:22 +09:00
Georges-Antoine Assi
24fef1139b Merge branch 'master' into feature/device-registration-save-sync 2026-01-28 19:42:57 -05:00
Georges-Antoine Assi
67efe62935 Merge branch 'master' into only-ids-param 2026-01-28 14:47:10 -05:00
Georges-Antoine Assi
b49522e3e8 changes from bot review 2026-01-22 15:27:18 -05:00
Georges-Antoine Assi
7f5130c9b8 Add NONE support for filter logic operators 2026-01-22 13:47:55 -05:00
Georges-Antoine Assi
e9b6fa202b tweak some db code 2026-01-19 09:47:55 -05:00
Georges-Antoine Assi
6eb888416f final manual clenaup 2026-01-18 22:51:43 -05:00
Georges-Antoine Assi
bddb7bd9f5 manual cleanup 2026-01-18 22:27:46 -05:00
Georges-Antoine Assi
3ccc14d4a2 add endpoints for identifiers 2026-01-18 22:17:37 -05:00
Georges-Antoine Assi
54bfb3fec5 DB functions accept list of params 2026-01-18 21:26:48 -05:00
nendo
36eec298d1 Add device-based save synchronization
Implement device registration and save sync tracking to enable
multi-device save management with conflict detection.

- Device CRUD endpoints (POST/GET/PUT/DELETE /api/devices)
- Save sync state tracking per device
- Conflict detection on upload (409 when device has stale sync)
- Download sync tracking (optimistic and confirmed modes)
- Track/untrack saves per device
- DEVICES_READ/WRITE scopes for authorization
2026-01-18 16:50:44 +09:00
Brandon T. Kowalski
5cb71c920f Added updated_after query parameter for normal and smart collections and migration to add corresponding indexes to each table. 2026-01-17 23:25:02 -05:00
Georges-Antoine Assi
b34117591a Merge pull request #2904 from rommapp/roms-filter-endpoint
ROMs filter endpoint + refactor
2026-01-16 19:14:37 -05:00
Georges-Antoine Assi
bc564fd1c1 Merge pull request #2898 from BrandonKowalski/feature/updated-after-query-param
[ROMM-2874] Feature/updated-after-query-param
2026-01-16 17:24:11 -05:00
Georges-Antoine Assi
c1bd666641 add comments to backend code 2026-01-16 13:28:46 -05:00
Georges-Antoine Assi
5240bb2f71 more changes from bot review 2026-01-15 13:15:29 -05:00
Georges-Antoine Assi
2c0325cae1 changes form bot review 2026-01-15 12:53:01 -05:00
Georges-Antoine Assi
354922cf41 correct set platforms in roms fetch 2026-01-15 12:43:35 -05:00
Georges-Antoine Assi
b0cf2e9338 set filter platforms on platforms fetch 2026-01-15 12:10:13 -05:00
Georges-Antoine Assi
81b9eff8c7 Add filter values to roms query 2026-01-15 11:51:59 -05:00
Georges-Antoine Assi
96240a86e9 Add endpoint to fetch rom filters independent of query 2026-01-15 11:18:51 -05:00
Georges-Antoine Assi
3965a89860 convert legacy selected_status 2026-01-14 11:05:43 -05:00
Georges-Antoine Assi
2d8444d60b [HOTFIX] Rename selected_statuses to statuses 2026-01-14 10:07:57 -05:00