212 Commits

Author SHA1 Message Date
Georges-Antoine Assi
77823c168d [AIKIDO-13126604] Stream file when building file hash 2026-02-16 13:51:20 -05: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
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
ff9b29d90e [HOTFIX] Remove files from model_dump in scan 2026-01-17 22:31:48 -05:00
Georges-Antoine Assi
76d445ccd9 [ROMM-2722] Fix matching special chars in ssfr 2025-12-07 21:21:57 -05:00
Georges-Antoine Assi
8fe435e0b4 Cache parsed gamelist.xml files on each scan 2025-11-19 18:00:12 -05:00
Georges-Antoine Assi
f8b0ae63a1 fix scanning multi file games with ssfr 2025-10-31 10:50:51 -04:00
Georges-Antoine Assi
0424e4450f implement hash lookup for ssfr 2025-10-30 16:00:47 -04:00
Georges-Antoine Assi
c1ac9a2133 fix screenshots dissapearing on scan 2025-10-28 11:00:45 -04:00
Georges-Antoine Assi
b1b982eaae reorder scan functions a bit 2025-10-28 10:21:56 -04:00
Georges-Antoine Assi
417aaf4e29 fuix props reset 2025-10-28 09:30:44 -04:00
Georges-Antoine Assi
a2cfd571c5 fix filesize reset on partial scan 2025-10-28 08:56:45 -04:00
Georges-Antoine Assi
f30f0bfd75 Smarter detection of whether to scan roms 2025-10-26 13:21:56 -04:00
Georges-Antoine Assi
d928c9705f fix media storage for gamelistxml 2025-10-24 19:06:45 -04:00
Georges-Antoine Assi
463bb27ea9 Add config to store media on disk 2025-10-24 16:04:54 -04:00
Georges-Antoine Assi
a7c4cd75f5 update scans should fetch by ID 2025-10-23 21:51:09 -04:00
Georges-Antoine Assi
9fa15d20f0 totally refactor scan types 2025-10-23 16:57:40 -04:00
Georges-Antoine Assi
3575783769 Merge branch 'master' into romm-821 2025-10-21 21:46:23 -04:00
Georges-Antoine Assi
b689e3bde1 [ROMM-2531] Allow scanning without metadata providers 2025-10-19 12:37:18 -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
896b9edd17 Show indicator if platform not identified 2025-09-30 21:22:07 -04:00
Georges-Antoine Assi
b5776be475 Split rom.multi into more specific fields 2025-09-25 18:48:27 -04:00
Georges-Antoine Assi
e473cbe698 Move url_cover checks to scan_handler 2025-09-24 09:52:49 -04:00
Georges-Antoine Assi
1bd7b69b2c set url_cover to fake tld 2025-09-23 22:29:21 -04:00
Georges-Antoine Assi
c0716c05af fix type for test 2025-09-23 18:38:28 -04:00
Georges-Antoine Assi
3a3bffe699 progressive scan steps for each game 2025-09-23 10:23:57 -04:00
Georges-Antoine Assi
6eed0b6c7f Set platform metadata slugs on models in DB 2025-09-22 21:48:45 -04:00
Georges-Antoine Assi
082024d704 only apply fields with values 2025-09-21 21:40:42 -04:00
Georges-Antoine Assi
e349ce6104 changes from bot review 2025-09-21 20:51:30 -04:00
Georges-Antoine Assi
b3a1b6a361 add to example config 2025-09-21 19:23:20 -04:00
Georges-Antoine Assi
fa221726bb Add scan metadata priority to config 2025-09-20 23:25:43 -04:00
Georges-Antoine Assi
bdd80a8527 reduce priority of hltb and ra 2025-09-17 10:53:21 -04:00
Georges-Antoine Assi
bfa7901efe fix tests 2025-09-16 18:00:07 -04:00
Georges-Antoine Assi
4ed1d82a46 add platform checks 2025-09-15 10:28:32 -04:00
Georges-Antoine Assi
123b3f6b8b create makeshift howlongtobeet handler 2025-09-14 19:39:38 -04:00
Georges-Antoine Assi
3c4113f8a8 Merge branch 'master' into flashpoint-metadata-handler 2025-09-11 21:27:48 -04:00
Georges-Antoine Assi
b1126b9bf4 [ROMM-2039] ADd special case for screenshots during scan 2025-09-06 08:37:52 -04:00
Georges-Antoine Assi
bf0d864d84 Add flashpoint as a metadata handler 2025-08-27 11:04:13 -04:00
Michael Manganiello
097818d560 misc: Replace emoji dependency with constants
The `emoji` library has been removed, in favor of using constants for
the few emojis used in the codebase. This reduces memory usage, and
avoids calling `emojize` for Python to discover where to replace emojis
in pre-defined strings.
2025-08-07 09:50:14 -03:00
Michael Manganiello
3906cf3991 fix: Correctly evaluate enabled metadata sources in scheduled library scan
The existing code incorrectly maps boolean flags to metadata sources,
leading to colliding `True` keys in the dictionary. This caused only one
metadata source to be recognized during scheduled scans, even when
multiple sources were enabled.
2025-08-05 13:30:11 -03:00
Georges-Antoine Assi
c5b8a5d0a7 config file is now required 2025-07-24 23:34:13 -04:00
Georges-Antoine Assi
c2c80fbfc3 fix tests 2025-07-24 17:33:14 -04:00
Georges-Antoine Assi
1cc01922d9 comlpete migration and transition 2025-07-24 10:25:41 -04:00
Georges-Antoine Assi
d53f2c71d5 fix platform family names 2025-07-18 21:30:58 -04:00
Georges-Antoine Assi
51652d5084 make all path stuff async 2025-07-18 10:53:55 -04:00
Georges-Antoine Assi
aaf6741e93 Create safe filesystem handler 2025-07-17 12:30:57 -04:00
Georges-Antoine Assi
546c797409 limit file extensions hasheous for some platforms 2025-07-15 10:16:39 -04:00
Georges-Antoine Assi
5d34a9f8c6 fallback platform name vale 2025-07-14 14:13:02 -04:00
Georges-Antoine Assi
ba7c1e1977 set extraw fields on default scan obj 2025-07-14 11:20:59 -04:00