Commit Graph

373 Commits

Author SHA1 Message Date
nendo
ea5b7546aa refactor: address PR #3114 review feedback
- Use atomic getdel for pairing code exchange
- Add cascade="all, delete-orphan" to User.client_tokens
- Move generate/hash_client_token into AuthHandler as static methods
- Extract endpoint helpers to utils/client_tokens.py
2026-03-11 10:56:35 +09:00
nendo
d97791f1d4 fix: address PR review feedback
- Add back_populates="client_tokens" to ClientToken.user relationship
- Fix rate limit race condition: increment-first pattern instead of
  read-then-write
- Remove unused User import from tests
- Add i18n keys to all non-en_US locales
2026-03-11 10:56:35 +09:00
nendo
e0b25fbc6c feat(client-tokens): add client API tokens with QR pairing flow
Long-lived, revocable, scope-restricted tokens for external clients
(mobile apps, retro handhelds, third-party tools). Includes:

- Backend: model, migration, DB handler, auth integration (rmm_ prefix
  routing in HybridAuthBackend), CRUD + pairing + exchange endpoints,
  rate limiting, scope intersection enforcement, admin oversight
- Frontend: settings page with token management table, stepped
  create/deliver dialog (config -> copy/pair), QR code with RomM logo,
  admin token table, standalone /pair page for QR scan landing
- /pair page supports custom-scheme callbacks for app deep linking,
  falls back to displaying code for manual entry
- 33 backend tests across 5 classes (CRUD, auth, isolation, pairing,
  admin)
2026-03-11 10:56:35 +09:00
Georges-Antoine Assi
478b7b970a run fmt 2026-03-10 16:53:36 -04:00
Jamie Bond
1e6f0d6000 Add property for path_video and refactor places which use similar logic to access video paths 2026-03-10 20:32:54 +01:00
Georges-Antoine Assi
6461078721 loosen rules around fetch matching screenshots 2026-02-19 10:18:56 -05:00
Georges-Antoine Assi
bbb1ba3ec0 cahanges from bot review 2026-02-19 09:36:12 -05:00
Georges-Antoine Assi
5b1dfe2ba1 [ROMM-3031] Fix screenshot property on save/state 2026-02-18 23:23:35 -05:00
Georges-Antoine Assi
c6e9ce5bbd filter out non-owned collections when adding 2026-02-08 09:52:55 -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
d95899333f Add the migration for the new view 2026-02-03 20:12:54 -05: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
e50016b26b Add CHEAT to RomFile category types 2026-01-25 19:18:43 -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
DevOldSchool
331ed76187 Applied feedback from gemini code assist review. 2026-01-05 12:38:07 +10:00
DevOldSchool
86a6804447 Added player count metadata from SS. Displays on game detail screen and added a filter under search for player counts. 2026-01-05 11:57:30 +10:00
SaraVieira
fe14067667 feature: Add addtional editable metadata 2026-01-02 17:30:05 +00:00
zurdi
8eb9668275 Merge branch 'master' into 816-uiux-make-user-settings-cross-browserdevice 2025-12-31 11:48:25 +00:00
zurdi
649597b494 fix RA badgeds download 2025-12-31 01:34:37 +00:00
Georges-Antoine Assi
734645aa07 cache top level files 2025-12-30 16:45:32 -05:00
Georges-Antoine Assi
a45bde142e [HOTFIX] Multi roms should only consider top-level files 2025-12-30 16:37:55 -05:00
Georges-Antoine Assi
0971026f95 Add support for version tag 2025-12-30 11:37:06 -05:00
zurdi
ec4d157905 Add user UI settings management and update related components
- Introduced `ui_settings` column in the users table via Alembic migration.
- Updated UserForm and UserSchema models to include `ui_settings`.
- Enhanced user update endpoint to handle `ui_settings`.
- Created a new composable `useUISettings` for managing UI settings with local storage.
- Refactored UI components to utilize the new `useUISettings` for theme and language settings.
2025-12-16 23:16:36 +00:00
Georges-Antoine Assi
324932184a Move merged_screenshots and merged_ra_metadata to simple RomSchema 2025-12-02 10:32:17 -05:00
Georges-Antoine Assi
d69271dd33 remove Rom.multi 2025-12-02 10:25:40 -05:00
zurdi
4699358e9e feat: clean up RomNote class by removing redundant user__username property 2025-11-20 16:16:28 +00:00
zurdi
03083d4b69 feat: implement multi-note management with CRUD operations and database migration 2025-11-20 15:38:11 +00:00
zurdi
09cb5af74e Merge remote-tracking branch 'origin/master' into feature/fucking-multi-notes 2025-11-14 19:57:45 +00:00
zurdi
33fa0beeaf feat: Implement multi-note management for ROM users
- Updated .gitignore to exclude copilot-instructions.md
- Added migration script 0055_multi_notes.py to convert single note fields to a multi-note JSON structure in the database.
- Refactored RomUserSchema to replace note_raw_markdown and note_is_public with a notes dictionary.
- Introduced UserNoteSchema for representing individual notes.
- Created MultiNoteManager.vue component for managing user notes in the frontend.
- Integrated MultiNoteManager into Personal.vue for displaying and editing notes.
- Updated API service to include multi-note management functions.
- Enhanced NoteDialog.vue to display multiple notes.
- Updated localization files to include new strings related to notes.
- Adjusted Vite configuration to allow additional host for development.
2025-11-14 19:57:13 +00:00
Georges-Antoine Assi
cc309983ff fix scrolling and test 2025-10-31 11:50:51 -04:00
Georges-Antoine Assi
f8b0ae63a1 fix scanning multi file games with ssfr 2025-10-31 10:50:51 -04:00
Georges-Antoine Assi
1eabcfb9f4 Add PSP Pkgi support 2025-10-27 20:36:53 -04:00
Georges-Antoine Assi
38f42aa352 Merge branch 'master' into romm-2536 2025-10-23 18:24:36 -04:00
Georges-Antoine Assi
64c2689862 changes from self review 2025-10-23 17:15:19 -04:00
Georges-Antoine Assi
f919951a22 self code cleanup 2025-10-23 10:36:08 -04:00
Georges-Antoine Assi
3575783769 Merge branch 'master' into romm-821 2025-10-21 21:46:23 -04:00
Georges-Antoine Assi
6bde10fe97 massive refactor of data loading in console mode 2025-10-21 10:42:59 -04:00
Georges-Antoine Assi
95e109cbd1 output csv 2025-10-19 11:45:41 -04:00
Georges-Antoine Assi
81702a4bbd Add endpoint for ps3 pkgi 2025-10-19 11:16:32 -04:00
Georges-Antoine Assi
97ed8072dd add is_favorite migration 2025-10-18 13:27:19 -04:00
Georges-Antoine Assi
6ccae17eb3 stoer favorites on collection 2025-10-17 18:19:40 -04:00
Georges-Antoine Assi
9269e36608 populate scan results with edge 2025-10-17 15:32:38 -04:00
Georges-Antoine Assi
3cfc52234a start work on gamelist.xml extraction 2025-10-16 23:16:39 -04:00
Georges-Antoine Assi
ae9b01e38d update rules 2025-10-05 14:42:57 -04:00
Georges-Antoine Assi
06984998ab Merge pull request #2445 from rommapp/romm-2416
[ROMM-2416] Use python timezone aware datetime as defaults for created_at/updated_at
2025-09-26 16:57:16 -04:00
Georges-Antoine Assi
b5776be475 Split rom.multi into more specific fields 2025-09-25 18:48:27 -04:00
Georges-Antoine Assi
91fb6f6f23 initialize field 2025-09-23 18:23:08 -04:00
Georges-Antoine Assi
968e0c3560 add comment 2025-09-23 18:19:40 -04:00
Georges-Antoine Assi
3a3bffe699 progressive scan steps for each game 2025-09-23 10:23:57 -04:00