Skip to content

History

Revisions

  • 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.

    @danielcopper danielcopper committed May 21, 2026
    53f185b
  • docs(saves): document resolve_sync_conflict server_save_id round-trip + stale_conflict path

    @danielcopper danielcopper committed May 16, 2026
    9b48fa8
  • docs(saves): remove conflict_mode/clock_skew references, document strip

    @danielcopper danielcopper committed May 6, 2026
    6429a2a
  • docs(saves): drop references to deleted save_conflicts module

    @danielcopper danielcopper committed May 5, 2026
    8a61a21
  • docs(saves): fix post-exit conflict modal claim

    @danielcopper danielcopper committed May 4, 2026
    cc8ef8a
  • docs(downloads): document RomM file-layout flags and local layout decision (#226)

    @danielcopper danielcopper committed May 4, 2026
    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.

    @danielcopper danielcopper committed May 2, 2026
    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.

    @danielcopper danielcopper committed May 1, 2026
    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.

    @danielcopper danielcopper committed May 1, 2026
    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

    @danielcopper danielcopper committed Apr 30, 2026
    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.

    @danielcopper danielcopper committed Apr 23, 2026
    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

    @danielcopper danielcopper committed Apr 16, 2026
    9a26ae8
  • docs(wiki): document savefiles_in_content_dir as unsupported

    @danielcopper danielcopper committed Apr 15, 2026
    45e664b
  • docs(wiki): document save-sort migration auto-detection and conflict resolution

    @danielcopper danielcopper committed Apr 15, 2026
    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.

    @danielcopper danielcopper committed Apr 14, 2026
    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

    @danielcopper danielcopper committed Apr 14, 2026
    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.

    @danielcopper danielcopper committed Apr 14, 2026
    1117354
  • Add Save File Extensions research page

    @danielcopper danielcopper committed Mar 27, 2026
    3e8271d
  • docs(wiki): update save sync architecture with v2 slots, device sync, and matching

    @danielcopper danielcopper committed Mar 25, 2026
    b1da4b9
  • docs(wiki): update architecture docs for #154 restructuring sprint

    @danielcopper danielcopper committed Mar 19, 2026
    77fe8f5
  • docs(wiki): add artwork, shortcut_removal, shortcut_data to project structure (#113)

    @danielcopper danielcopper committed Mar 19, 2026
    d43562f
  • docs(wiki): add rom_files and rom_removal to project structure (#112)

    @danielcopper danielcopper committed Mar 19, 2026
    4225e8c
  • docs: add save_conflicts.py to wiki project structure (#111)

    @danielcopper danielcopper committed Mar 18, 2026
    18edb0c
  • docs: update bios.py description in wiki (#114)

    @danielcopper danielcopper committed Mar 18, 2026
    4cce64c
  • docs: add game_detail.py and bios.py to wiki project structure (#110)

    @danielcopper danielcopper committed Mar 18, 2026
    d241fa5
  • docs: document file locking, schema versioning, and state_migrations (#120, #121)

    @danielcopper danielcopper committed Mar 18, 2026
    a4db3cb
  • docs: update wiki for domain layer introduction (#142)

    @danielcopper danielcopper committed Mar 18, 2026
    52bc383
  • docs: add Development History page (migrated from PLAN.md)

    @danielcopper danielcopper committed Mar 16, 2026
    ad56404
  • docs: rename ArtworkService to SteamGridService

    @danielcopper danielcopper committed Mar 16, 2026
    135c5f4
  • docs: finalize architecture docs — current service names and structure

    @danielcopper danielcopper committed Mar 16, 2026
    a9fd397