Commit Graph

71 Commits

Author SHA1 Message Date
Georges-Antoine Assi
122cdf072d fix tests 2026-03-11 20:52:23 -04:00
Georges-Antoine Assi
7961af6525 run fmt 2026-03-11 19:13:19 -04:00
copilot-swe-agent[bot]
24fe5b941f refactor: move get_pico8_cover_url to FSRomsHandler, use validate_path for safe path construction
Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-11 22:17:22 +00:00
copilot-swe-agent[bot]
2958e6f12b feat: use PICO-8 built-in cover art from .p8.png cartridge files
Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-11 02:35:18 +00:00
nendo
fb37c5cafe fix fork to match upstream changes and verify tests 2026-03-11 11:01:23 +09:00
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
bd5b3375f0 fix: remove unused User import and add i18n keys to all locales
Fixes trunk_check (unused import) and check-translations (missing
keys in non-en_US locales) CI failures.
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
f0e5abadc9 fix tests again 2026-03-10 09:23:12 -04:00
HydroSulphide
b9ea937373 Merge branch 'master' into fix-oauth-token-expiry-and-refresh-rotation 2026-03-10 08:51:44 +01:00
HydroSulphide
8758cb31b7 Tried to fix everything the bot complained about and the failed pytests.
Three tests were also implemented to check initial implementation that now invalidates expired access and refresh tokens and also rotating refresh tokens.

Since I introduced wrapper functions for create_oauth_token to distinguish between access and refresh token there is no need to set the token type in the data dict, since the type is now enforced in the wrapper functions create_access_token and create_refresh_token.

By convention I renamed create_oauth_token to _create_oauth_token as it is considered a private helper function now.
2026-03-10 07:22:02 +01:00
Georges-Antoine Assi
11c16e92bd run fmt 2026-03-09 22:53:30 -04:00
copilot-swe-agent[bot]
980360805b Fix test: use async_cache instead of sync_cache to inject OIDC session data
Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-10 02:39:36 +00:00
copilot-swe-agent[bot]
4992731265 Address code review feedback: log OIDC metadata errors, remove redundant import
Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-10 02:01:59 +00:00
Georges-Antoine Assi
1f64e8437b Switch ACCESS_TOKEN_EXPIRE_MINUTES to SECONDS 2026-03-08 22:46:54 -04:00
Georges-Antoine Assi
e81659ab0f cleanup and add tests 2026-03-08 15:32:49 -04:00
Georges-Antoine Assi
9ebfe2df50 always use chunk upload endpoint 2026-03-08 14:56:56 -04:00
Georges-Antoine Assi
27fb339243 run fmt 2026-03-08 09:52:19 -04:00
copilot-swe-agent[bot]
aac4614f5c Fix ID persistence for all metadata sources when handler is disabled or game not found
Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-08 13:40:54 +00:00
copilot-swe-agent[bot]
e0c05e804f Fix LaunchBox game ID not persisting in DB when handler is disabled or game not found
Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-08 13:31:35 +00:00
Georges-Antoine Assi
eda88b70d1 get claude to refactor launchbox_handler 2026-03-07 16:02:39 -05:00
Georges-Antoine Assi
b72b6a410e fix heartbeat tests 2026-03-07 10:03:41 -05:00
Georges-Antoine Assi
4bfd050a57 Merge branch 'master' into api-form-fields 2026-03-06 17:12:18 -05:00
Georges-Antoine Assi
d80ac3ea77 1 more bot change 2026-02-19 09:36:38 -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
cef0ab0422 Update endpoints that use form data 2026-02-18 16:10:45 -05:00
Georges-Antoine Assi
98bced02c7 fix tests 2026-02-16 16:50:18 -05:00
Georges-Antoine Assi
7ed25d4e63 fix tests 2026-02-16 16:34:13 -05:00
Georges-Antoine Assi
c1a8a059a9 Merge pull request #2986 from rommapp/romm-2899
[ROMM-2899] PKGJ feed endpoints
2026-02-10 10:43:30 -05:00
Georges-Antoine Assi
527f144c1f trunk check fix 2026-02-09 23:52:45 -05:00
Georges-Antoine Assi
df4a4e3645 move imports up 2026-02-09 15:08:21 -05:00
Georges-Antoine Assi
acfc189798 [ROMM-2927] Add default folders to config manager 2026-02-09 14:55:29 -05:00
Georges-Antoine Assi
7cc2097203 Merge branch 'master' into romm-2899 2026-02-04 09:52:45 -05:00
nendo
34f48e58a1 feat(devices): default to returning existing device on duplicate registration
Change allow_existing default to True so duplicate fingerprint matches
return the existing device (200) instead of 409 Conflict. Add model
validator to force allow_existing=False when allow_duplicate is set.
2026-02-04 11:10:40 +09:00
Georges-Antoine Assi
959c9ac0bf refactor feeds file 2026-02-03 17:09:21 -05:00
Georges-Antoine Assi
4b4a34631d bot created test file 2026-02-03 16:48:58 -05:00
nendo
8ae07d77f3 test: add device duplicate handling tests and fix saves hash import
Add tests for duplicate device registration scenarios (409 conflict,
allow_existing, allow_duplicate, reset_syncs). Fix compute_file_hash
function references after relocation to assets_handler.
2026-02-03 20:48:35 +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
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
bdc6fc5235 Trunk format fixes. 2026-01-05 13:05:13 +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
zurdi
cc816822d8 Refactor library structure detection to use enum values and update related tests and frontend logic 2026-01-02 11:54:29 +00:00
zurdi
06a1598bcc Merge remote-tracking branch 'origin/master' into romm-1371 2026-01-02 11:12:36 +00:00
zurdi
810b4d19fb fix: remove unnecessary 'self' parameter from test function definitions in test_heartbeat.py 2025-12-23 16:36:14 +00:00
zurdi
cbe64ce29c test: add tests for library structure detection in FSPlatformsHandler 2025-12-23 16:24:33 +00:00
zurdi
a147b61a76 test: add comprehensive tests for user UI settings updates 2025-12-17 00:23:54 +00:00
Georges-Antoine Assi
ec6bb24662 Add new redis-backed session middleware 2025-11-22 10:47:59 -05:00
zurdi
c7b5eea91e Add skip_hash_calculation configuration and update related tests 2025-11-20 17:29:37 +00:00
Georges-Antoine Assi
eaf414435c fix tests 2025-10-27 14:51:01 -04:00