Commit Graph

8622 Commits

Author SHA1 Message Date
Georges-Antoine Assi
acda4bb6ce move get_rap_data out of loop 2026-02-10 09:59:29 -05:00
Georges-Antoine Assi
dc857d9649 use csv writer to build feed response 2026-02-10 09:44:59 -05:00
Georges-Antoine Assi
7231414c67 use pkgj last_modified 2026-02-10 08:56:30 -05:00
Georges-Antoine Assi
527f144c1f trunk check fix 2026-02-09 23:52:45 -05:00
Georges-Antoine Assi
393375be7f tweaks to returned feed data 2026-02-09 23:20:04 -05:00
Georges-Antoine Assi
7cc2097203 Merge branch 'master' into romm-2899 2026-02-04 09:52:45 -05:00
Georges-Antoine Assi
0b0756fa38 update migration file again 2026-02-03 23:39:23 -05:00
Georges-Antoine Assi
7b926ec7b6 update migration file 2026-02-03 23:28:16 -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
Georges-Antoine Assi
14c0676f1a Merge pull request #2917 from tmgast/feature/device-registration-save-sync
Add device-based save synchronization
2026-02-03 23:25:23 -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
Spencer McIntyre
624f4ce14d Update the romm view to group by fs no tag 2026-02-03 20:22:59 -05:00
Spencer McIntyre
d95899333f Add the migration for the new view 2026-02-03 20:12:54 -05:00
Georges-Antoine Assi
8e551a66a4 Merge pull request #2982 from camhorn/plural-filter-keys
filter keys now plural
2026-02-03 17:55:08 -05: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
Georges-Antoine Assi
d0a71ae5fe add new endpoints for pkgj 2026-02-03 16:22:39 -05:00
Cameron Horn
bfc5a423a1 also plural forms of the types 2026-02-03 15:13:10 -05:00
Cameron Horn
61a2d00b2e also plural form of ageRatings 2026-02-03 14:17:25 -05:00
Cameron Horn
0e44870824 filter keys now plural 2026-02-03 11:55:33 -05:00
Georges-Antoine Assi
abec1d002a Merge pull request #2981 from rommapp/dependabot/uv/protobuf-6.33.5
Bump protobuf from 6.31.1 to 6.33.5
2026-02-03 09:28:48 -05:00
Georges-Antoine Assi
5fc0d4fc64 Merge pull request #2979 from LoneAngelFayt/invalid-category-values
Invalid category values fix
2026-02-03 09:26:48 -05:00
dependabot[bot]
55b524d1ea Bump protobuf from 6.31.1 to 6.33.5
Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 6.31.1 to 6.33.5.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)

---
updated-dependencies:
- dependency-name: protobuf
  dependency-version: 6.33.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 14:23:27 +00:00
Georges-Antoine Assi
e79204ee4a continue-on-error: true in pytest publish report step 2026-02-03 09:22:09 -05:00
nendo
e3642523f9 refactor(saves): simplify SaveSchema construction with model_validate
Add model_validator to SaveSchema that safely handles SQLAlchemy lazy
relationships by checking inspect(obj).unloaded before attribute access.
This allows direct use of model_validate(orm_obj) instead of manually
building a dict and excluding device_syncs.
2026-02-03 21:05:03 +09: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
132e0ad256 refactor(utils): extract to_utc function to utils/datetime.py
Move UTC datetime normalization to a dedicated utils module for
reusability across the codebase.
2026-02-03 20:07:47 +09:00
nendo
bf8cb92e93 refactor(assets): move content hash functions to assets_handler
Move compute_file_hash, compute_zip_hash, and compute_content_hash from
scan_handler.py to filesystem/assets_handler.py as standalone module-level
functions. This follows the existing pattern for utility functions in
filesystem handlers.
2026-02-03 20:07:18 +09: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
8f44027293 refactor(devices): use Pydantic models for request payloads
Replace individual Body() parameters with DeviceCreatePayload and
DeviceUpdatePayload Pydantic models. This simplifies the function
signatures and leverages model_dump(exclude_unset=True) for cleaner
update handling.
2026-02-03 20:04:58 +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
Zach Clendenen
0430b53ee1 signing with gpg and trunk check 2026-02-02 23:17:04 -06:00
Zach Clendenen
3416d0f465 move batch_op to else block so postgres bypasses 2026-02-02 22:28:18 -06:00
Zach Clendenen
6d81f93cec added explicit statements for postgres including USING clause 2026-02-02 22:27:42 -06:00
Georges-Antoine Assi
db3e3e4cf6 Merge pull request #2969 from pR0Ps/feature/oidc-auto-login
Add option to automatically login using OIDC
2026-01-31 23:01:29 -05:00
Georges-Antoine Assi
54925354cd run trunk fmt 2026-01-31 21:26:36 -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
Carey Metcalfe
becaa60bbf Add option to automatically login using OIDC 2026-01-31 02:41:11 -05:00
Georges-Antoine Assi
4639aa7f74 fix rom-patcher loading 2026-01-30 21:21:19 -05:00
Georges-Antoine Assi
73d8c64562 Merge pull request #2968 from Wadenschwinger/fix/watcher-otel-disabled-env-passthrough
Fix: skip opentelemetry-instrument when OTEL is disabled
2026-01-30 19:04:48 -05:00
Christian Rehm
91ee163585 fix(watcher): skip opentelemetry-instrument when OTEL is disabled
When OTEL_SDK_DISABLED=true (set automatically when no OTEL_ env vars
are present), the opentelemetry-instrument wrapper does not properly
pass through the WATCHFILES_CHANGES environment variable to watcher.py.

This causes the filesystem watcher to silently fail - watchfiles detects
changes but watcher.py receives an empty WATCHFILES_CHANGES and exits
immediately without scheduling any rescans.

The fix skips the opentelemetry-instrument wrapper when OTEL is disabled,
allowing watchfiles to pass WATCHFILES_CHANGES directly to watcher.py.

Fixes automatic rescan on filesystem change for users who don't configure
OpenTelemetry (the majority of self-hosted deployments).
2026-01-30 23:18:49 +00:00
Georges-Antoine Assi
983da2c77d Merge pull request #2964 from rommapp/romm-2946
Use vite copy plugin to load rom-patcher
2026-01-29 23:45:41 -05:00
Georges-Antoine Assi
d932c19de2 fix bot review 2026-01-29 23:43:39 -05:00
Georges-Antoine Assi
b51009aafb use copy plugin to load rom-patcher 2026-01-29 23:00:14 -05:00
Georges-Antoine Assi
fd2c80061c update batocera platform map 2026-01-29 17:35:32 -05:00
Georges-Antoine Assi
02221370a5 Merge pull request #2963 from ricardovdheijden/es-de-example-fix
Example config ES-DE update/fix
2026-01-29 17:32:32 -05:00
Georges-Antoine Assi
e1118a0645 Merge pull request #2962 from rommapp/romm-2956
[ROMM-2956] Fix refresh on card edit
2026-01-29 17:20:04 -05:00
Ricardo van der Heijden
faaf419ef7 Places media section directly under the scan section 2026-01-29 23:14:33 +01:00
Georges-Antoine Assi
ff44a2eaf3 [ROMM-2956] Fix refresh on card edit 2026-01-29 17:03:18 -05:00
Georges-Antoine Assi
a34c065480 Merge pull request #2957 from rommapp/romm-2949
[ROMM-2949] Add support for shortfile scummvm names
2026-01-29 13:25:35 -05:00