docs: retire wiki, redirect to the MkDocs site
All pages moved to https://danielcopper.github.io/decky-romm-sync/.
Home now points there; the rest are removed.
53f185b
docs(saves): document resolve_sync_conflict server_save_id round-trip + stale_conflict path
9b48fa8
docs(saves): remove conflict_mode/clock_skew references, document strip
6429a2a
docs(saves): drop references to deleted save_conflicts module
8a61a21
docs(saves): fix post-exit conflict modal claim
cc8ef8a
docs(downloads): document RomM file-layout flags and local layout decision (#226)
a18fa85
docs(saves): replace rollback gates with matrix pre-flight, drop server-derived filename fallback
Reflects the backend rewrite:
- The rollback flow is renamed to 'Version Switch Flow' with a Matrix
Pre-flight section that documents the new conflict_blocked and
preflight_failed statuses replacing the deleted Gate D / Gate F
warnings.
- The Local Save File Naming section now states explicitly that there
is no fallback to server-derived names. _local_save_target requires
rom_name; ROMs without an installed_roms entry get no save tab card.
- tracked_save_id field reference loses the 'Gate F' note.
b737f5e
docs(saves): document canonical local save filename rule
Every server-content download writes to <saves_dir>/<rom_basename>.<server.file_extension>.
The server's stored file_name is not used as a local write target. Matches
Argosy/Grout convention and is required for RetroArch to discover the file
(SRAM lookup is by ROM-basename + extension, content is opaque bytes).
Companion to backend changes that drop the file_name_no_tags filter on
list_file_versions and route all download paths through _local_save_target.
6264e05
docs(saves): correct is_current formula to strict >, document GET upsert side effect
Hardware testing on RomM 4.8.1 surfaced two facts:
- is_current is computed as strict greater-than, not >=. When
last_synced_at == save.updated_at, is_current evaluates false.
- GET /api/saves?rom_id=X&device_id=Y upserts a device_save_sync row
for the queried device on every returned save, regardless of the
optimistic flag. Effect: matrix branch 6 of compute_sync_action
(no device_syncs entry for our device) is unreachable in real plugin
operation; covered by unit tests only.
ee5d310
docs(saves): rewrite sync architecture pages for newest-wins model
- Replace match+three-way-comparison sections with the compute_sync_action
algorithm and a 13-row decision matrix
- Drop the Block 3 newer-in-slot conflict resolution section entirely
- Replace four-mode conflict resolution with single-mode behaviour and the
Keep Local / Use Server / Cancel modal
- Add Rollback Flow section covering Download + PUT + confirm_download
- Add RomM Save Sync API Behaviour section: is_current is computed,
PUT does not auto-upsert sync rows, GET /content?optimistic=true
auto-upserts
- Update State Schema: drop pending_conflicts and dismissed_saves_state,
document the legacy-field migration on init_state
- Note conflict_mode and clock_skew_tolerance_sec are no longer consulted
by the sync flow
- User-facing Save-Sync.md aligned with single-mode behaviour and the
new conflict modal
89276d0
docs(wiki): block 3 newer-in-slot picker + v4.8.1 transition cleanup
Save-File-Sync-Architecture:
- New section "Newer-in-Slot Conflict Resolution (Block 3)" covering
the user-decides-on-ambiguity invariant, Strategy A match-layer
demotion, dismissed_saves_state lifecycle, first-setup hash compare,
resolve_newer_in_slot contract, per-rom asyncio.Lock, and recovery
scenarios S8/S9/S9b.
- Save Matching Logic updated: Priority 2 filename match removed,
post-match filtering (device-syncs recovery + Strategy A demotion)
documented.
Plus v4.8.1 transition cleanup across Backend-Architecture, Development,
Development-History, Save-Sync, and the API section in
Save-File-Sync-Architecture — drops the v4.6 compatibility references
now that the plugin hard-requires v4.8.1.
6ff407a
docs: update save sync wiki for #238 race fix, #197 slot deletion, capabilities system
- Rewrote post-game ordering section: detect-first invariant, Rules 1/2/3
- Added mtime-naive limitation note with structural prevention explanation
- New section: Slot Deletion (safety invariants, frontend, confirmation modal)
- New section: Server Capabilities (architecture, frontend flow, deprecation)
- Added GET/DELETE /api/devices and POST /api/saves/delete to v4.7 API table
- Updated Known Limitations: removed 'version selection not implemented' (done via #225),
reworded slot migration, added cross-device browsing limitation
9a26ae8
docs(wiki): document savefiles_in_content_dir as unsupported
45e664b
docs(wiki): document save-sort migration auto-detection and conflict resolution
6d9824c
docs(wiki): add "Known consumer gaps" section to Config-Source-Parsers
One-parser-per-source compliance has two sides — parser inventory and
consumer compliance — and the page historically documented only the
parser side. #232 closed a gap where SaveService was still passing
core_name=None to resolve_save_dir despite #208 having already built
the .info parser and the principle being documented. That gap would
have been caught earlier if the wiki had called out the consumer audit
as a reviewer responsibility.
Adds a case study of the #208 → #232 sequence, a five-item consumer
checklist for future PR reviewers (is the right parser being called,
are all inputs resolved from their own parsers, does the None case
fail loudly, does the same pattern appear elsewhere, are regression
tests in place), and a historical-examples table linking both issues.
365be9e
docs(wiki): document core-switch warning with compatibility notes
Add Core Switch Warning section to Save Sync page covering:
- What the warning dialog shows and its Continue/Cancel actions
- Temporary second warning about RetroDECK's per-game override bug
with special-character filenames (tracked in #210)
- Compatibility matrix for common cores per system, with honest
"generally yes" qualifiers for PSX and N64 rather than unqualified
claims
- Concrete backup-first workflow instead of vague "test with a new
game" advice
341cc76
docs(wiki): add config source parsers page, align architecture and save-sync pages
Add new Config-Source-Parsers page covering the one-parser-per-source
principle, the catalog of local config/metadata sources, the question-to-
source mapping, the domain+adapter parser layout template, planned future
unlocks, and a decisions log.
- Backend-Architecture: move retrodeck_config.py to the adapters table
(reflects the #196 refactor), split into three sibling adapters
(retrodeck_paths, retroarch_config, retroarch_core_info) planned for
#208, add retroarch_core_info.py to the domain table, add a reference
to Config Source Parsers, note es_de_config.py as grandfathered
pending #205.
- Save-File-Sync-Architecture: add a pointer from the sort-by-core
section to the new page explaining how corename resolution works.
- Home: add Config Source Parsers to the Technical Reference index.
1117354
Add Save File Extensions research page
3e8271d
docs(wiki): update save sync architecture with v2 slots, device sync, and matching
b1da4b9
docs(wiki): update architecture docs for #154 restructuring sprint
77fe8f5
docs(wiki): add artwork, shortcut_removal, shortcut_data to project structure (#113)
d43562f
docs(wiki): add rom_files and rom_removal to project structure (#112)
4225e8c
docs: add save_conflicts.py to wiki project structure (#111)
18edb0c
docs: update bios.py description in wiki (#114)
4cce64c
docs: add game_detail.py and bios.py to wiki project structure (#110)
d241fa5
docs: document file locking, schema versioning, and state_migrations (#120, #121)
a4db3cb
docs: update wiki for domain layer introduction (#142)
52bc383
docs: add Development History page (migrated from PLAN.md)
ad56404
docs: rename ArtworkService to SteamGridService
135c5f4
docs: finalize architecture docs — current service names and structure
a9fd397