Commit Graph

1604 Commits

Author SHA1 Message Date
Georges-Antoine Assi
ccf5f656b7 Add if_not_exists/if_exists guards to all alembic add_column/drop_column ops 2026-04-09 22:50:07 -04:00
Georges-Antoine Assi
6c88e098ba [ROMM-3232] Fix content_hash not updated 2026-04-07 21:48:51 -04:00
Georges-Antoine Assi
f2619ac0d1 Merge branch 'master' into pegasus-metadata-export 2026-04-06 11:06:08 -04:00
Georges-Antoine Assi
21eee327b0 Merge branch 'master' into save-sync 2026-04-06 09:09:53 -04:00
Georges-Antoine Assi
1501f45220 more changes from review 2026-04-05 23:15:42 -04:00
Georges-Antoine Assi
fafb804bc6 mega cleanup 2026-04-05 22:35:37 -04:00
Georges-Antoine Assi
a61ff81e22 Merge branch 'master' into gamelist-customize 2026-04-05 22:11:02 -04:00
Georges-Antoine Assi
f2e8e337b2 Merge branch 'master' into save-sync 2026-04-05 21:47:53 -04:00
Georges-Antoine Assi
ea63639317 Merge pull request #3223 from rommapp/copilot/fix-age-ratings-parsing-issue
Fix age_ratings Pydantic validation error on MySQL/MariaDB for single-element arrays
2026-04-05 20:21:43 -04:00
Georges-Antoine Assi
e0214f100d more bot cleanup 2026-04-05 19:15:33 -04:00
Georges-Antoine Assi
c20544f40a cleanup 2026-04-05 18:22:38 -04:00
Georges-Antoine Assi
1275b79f71 simplify 2026-04-05 17:59:53 -04:00
copilot-swe-agent[bot]
d317b841b3 Fix age_ratings validation error for MySQL/MariaDB single-element arrays
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/27b57bfb-107a-4c4a-9d4e-89da20b98926

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-05 20:05:10 +00:00
Georges-Antoine Assi
cb96c861a6 display default entries separate 2026-04-04 14:49:37 -04:00
Georges-Antoine Assi
ef35ecaea9 props rom updte endpoint 2026-04-04 14:16:00 -04:00
Georges-Antoine Assi
494af9e4c8 Merge pull request #3217 from rommapp/copilot/fix-get-api-tasks-status-error
Fix GET /api/tasks/status 500 on expired job TTL (NoSuchJobError)
2026-04-03 14:37:21 -04:00
Georges-Antoine Assi
25362cf80b Merge pull request #3216 from rommapp/copilot/fix-delete-roms-in-subdirectories
fix: correctly delete nested (subdirectory) ROMs from filesystem
2026-04-03 14:37:07 -04:00
Georges-Antoine Assi
6cd213fc2b changes from bot review 2026-04-03 14:26:00 -04:00
copilot-swe-agent[bot]
ddb0ee7699 Fix 500 error on /api/tasks/status after cleanup_missing_roms task completes
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/f7f2aeec-91a7-482f-a4f6-a921d4bdab66

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-03 17:34:25 +00:00
copilot-swe-agent[bot]
ce42957162 style: use consistent positional args for remove_file call
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/303f2c27-6b65-41a9-b201-c055142b1edb

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-03 17:33:06 +00:00
copilot-swe-agent[bot]
674061c1d3 fix: narrow OSError catch and clean up test mock
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/303f2c27-6b65-41a9-b201-c055142b1edb

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-03 17:31:14 +00:00
copilot-swe-agent[bot]
394799d7c3 fix: wrap empty parent dir cleanup in try-except and add test coverage for it
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/303f2c27-6b65-41a9-b201-c055142b1edb

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-03 17:28:50 +00:00
copilot-swe-agent[bot]
e540d7c1a2 fix: handle nested ROM directories in delete endpoint and reorder FS/DB operations
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/303f2c27-6b65-41a9-b201-c055142b1edb

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-03 17:26:22 +00:00
copilot-swe-agent[bot]
789f8d4e31 fix: handle NoSuchJobError in get_tasks_status when job TTL expires
Agent-Logs-Url: https://github.com/rommapp/romm/sessions/bc0915c3-2d5f-4ac1-ab89-24942eeac825

Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-04-03 17:22:58 +00:00
Georges-Antoine Assi
ceddf2f9e9 changes from bot review 2026-04-03 11:24:02 -04:00
Georges-Antoine Assi
ec8583016b mega ton of fixes for 4.8 2026-04-03 10:54:31 -04:00
Georges-Antoine Assi
0ab433b6f0 run trunk fmt 2026-04-01 19:27:34 -04:00
Vargash
2b17da0c6c fix: manage the new export.gamelist.media configs via _update_config_file 2026-03-31 15:29:23 +02:00
cc
ce85a26185 fix: skip expensive platform stats on homepage
The /stats endpoint is called on both the homepage and the server stats
page, but only the stats page displays metadata coverage and region
breakdown. Add an `include_platform_stats` query param (default false)
so the homepage avoids the expensive per-platform queries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:59:07 -04:00
Georges-Antoine Assi
f107dc2752 changes from bot rview 2026-03-22 17:17:14 -04:00
Georges-Antoine Assi
770b8f94ac feat: add Pegasus Frontend metadata export support
Add metadata.pegasus.txt export alongside the existing gamelist.xml
export. Restructure the export system: rename the gamelist endpoint to
a general-purpose export endpoint (`/api/export/`) with sub-routes for
each format (`/gamelist-xml`, `/pegasus`). Move config from flat
`scan.export_gamelist` to nested `scan.export.gamelist_xml` and
`scan.export.pegasus` for auto-export on scan.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:09:20 -04:00
nendo
4edb1710a5 fix: address review feedback on session handler and counter
- Restore NoResultFound behavior on update_session, complete_session,
  fail_session when row is missing (scalar returns None, old .one()
  raised -- silent None is a semantic regression)
- Remove redundant get_session call from _increment_session_counter;
  the atomic SQL increment is already a no-op on missing rows
- Log warning when passed session_id is not found in _sync_device
  instead of silently creating an orphan session
2026-03-16 10:59:49 +09:00
nendo
55638d15dc fix: address bugs, security issues, and convention violations in save-sync
- Fix broken path construction in FSSyncHandler: build_* methods now
  return relative paths; sync_watcher uses paths relative to sync base
  instead of CWD (was completely non-functional in production)
- Fix SSH connection leak in push-pull task: conn.close() now in finally
- Add log.warning for disabled SSH host key verification
- Fix race condition in session operation counter: use atomic SQL
  increment instead of read-then-write
- Extract _increment_session_counter helper, add exc_info to warnings
- Replace legacy session.query() with select() in sync_sessions_handler
- Fix orphaned session: trigger_push_pull now passes session_id to job
- Fix wasteful SSH download when no matched_save exists
- Fix BaseModel import collision in sync.py (pydantic -> project base)
- Fix ORM mutation in UserSchema.from_orm_with_request: set field on
  schema instance instead of mutating live ORM object
- Mask ssh_password and ssh_key_path in DeviceSchema API response
- Fix migration PostgreSQL compatibility: condition ON UPDATE clause
  on MySQL, drop enum in downgrade
- Rename copy-paste artifact rom_user_status_enum
2026-03-16 10:56:43 +09:00
Georges-Antoine Assi
29112b4ddc create device on login web 2026-03-15 11:25:39 -04:00
Georges-Antoine Assi
3f7953b020 update responses 2026-03-15 09:48:31 -04:00
Georges-Antoine Assi
55ca39cacb fix deprecations in pydantic 2026-03-15 09:34:48 -04:00
Georges-Antoine Assi
f13f929d7d tweaks based on self review 2026-03-14 22:26:53 -04:00
Georges-Antoine Assi
e6ddc5da11 bot attempt at save sync 2026-03-14 22:13:38 -04:00
Georges-Antoine Assi
3e65534d6e remove unnceserray upload checks 2026-03-13 17:40:45 -04:00
Georges-Antoine Assi
997e2c44aa start pre-4.8 cleanup 2026-03-12 23:02:12 -04:00
HydroSulphide
fe4d42e192 removed unused import "Final" 2026-03-12 06:55:45 +01:00
HydroSulphide
8293c7ba9b Make OAuth token expiry configurable via env vars 2026-03-12 06:48:48 +01:00
Georges-Antoine Assi
b1cd003625 run fmt 2026-03-11 22:27:33 -04:00
Georges-Antoine Assi
6900f91f54 run fmt 2026-03-11 22:03:16 -04:00
copilot-swe-agent[bot]
d45530cd8b Add typed RomUserData model for documented partial ROM user props update
Co-authored-by: gantoine <3247106+gantoine@users.noreply.github.com>
2026-03-12 01:41:10 +00:00
Georges-Antoine Assi
6f02a4beff Merge pull request #3114 from tmgast/feature/client-api-tokens
Add client API tokens with QR pairing flow
2026-03-10 22:17:05 -04:00
Georges-Antoine Assi
9b95e85dee Merge pull request #3110 from cciollaro/feat/stats-metadata-coverage-regions
Per-platform metadata coverage and region breakdown to server stats
2026-03-10 21:58:32 -04:00
nendo
6de2a478f3 fix: remove dead code and add missing validation
- Consolidate PAIR_CODE_TTL_SECONDS to single source in utils
- Add min_length=1 validation on scopes field
- Remove unused pairExpiresIn ref, rawToken ref, dead emitter listener
- Fix formattedCode fallback to return normalized value
2026-03-11 10:56:35 +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
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