Commit Graph

173 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
02336974a6 Implemented greptile suggestions 2026-03-10 08:04:07 +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
copilot-swe-agent[bot]
2a7c86e304 Fix OIDC login downgrading existing user roles when no claims provided
Co-authored-by: pacnpal <183241239+pacnpal@users.noreply.github.com>
2026-03-09 18:26:49 +00:00
Georges-Antoine Assi
1f64e8437b Switch ACCESS_TOKEN_EXPIRE_MINUTES to SECONDS 2026-03-08 22:46:54 -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
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
14f59d8963 Merge pull request #3086 from rommapp/natural-sorting-hack
Hack for natural sorting of ROMs
2026-03-08 11:00:05 -04:00
Georges-Antoine Assi
29a09d3787 fix tests 2026-03-08 10:52:56 -04:00
Georges-Antoine Assi
75d38cc937 add tests 2026-03-08 10:27:01 -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
aa4abe6b7c end me 2026-03-07 23:43:58 -05:00
Georges-Antoine Assi
2feb43571b my brain is bumb 2026-03-07 23:32:04 -05:00
Georges-Antoine Assi
a14babc0da my brain is numb 2026-03-07 23:08:54 -05:00
Georges-Antoine Assi
b4f3df57b3 get tests to finish 2026-03-07 22:37:06 -05:00
Georges-Antoine Assi
606799e19c my own cleanup 2026-03-07 21:34:45 -05:00
Georges-Antoine Assi
61aface9ae cleanup 2026-03-07 19:04:14 -05:00
Georges-Antoine Assi
92ef2cf676 some fixes 2026-03-07 18:37:29 -05:00
Georges-Antoine Assi
5f2c1a6b3b fix tests 2026-03-07 18:24:31 -05:00
Georges-Antoine Assi
b21aa662b5 add test file 2026-03-07 16:24:22 -05: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
b030b98062 attempt to fix vuln reported in PR 2026-03-06 19:42:56 -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
661a5504d7 find a couple more uses 2026-02-09 17:26:21 -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