Record the completed protocol-8 implementation, its security and lifecycle decisions, and the final local acceptance evidence. Mark protocol-7 Call to Play relay reviews as historical so they cannot be mistaken for current design. Keep production acceptance honest by recording the unavailable canonical 186-game manifest corpus, real Windows/NTFS confinement and durability proof, and representative physical-LAN evidence as external release prerequisites. Test Plan: - `just fmt` (passed) - `just test` (passed; 708 workspace tests, including peer 480 and Tauri 56) - `just clippy` (passed) - `just frontend-test` (passed; 91/91) - `just build` (passed; fixture-backed no-bundle build) - `LANSPREAD_S37_MIN_MIB_PER_S=100 just peer-cli-tests` (passed; S1-S49) - `git diff --cached --check` (passed)
2.4 KiB
2.4 KiB
Implementation Decisions
- Added a
just testrecipe so unit tests can be run through the repository's requiredjust ...command surface instead of invokingcargo testdirectly. - Renamed the frontend success event to
game-install-finished; the old unpack name no longer matched the transactional install/update lifecycle. - Implemented watcher rescans by reusing the app-state
local_library/index.jsoncache and updating a single game entry in that index. This satisfies the per-ID optimized rescan requirement without adding a second cache format. - Split full startup recovery from ordinary settled refreshes. Startup and real
SetGameDirchanges run recovery plus a scan; install/update/uninstall completion only rescans the affected game after operation tracking has been cleared. - Rejected path-changing
SetGameDirwhile operations are active. Same-path refreshes are allowed and deliberately skip full recovery so they cannot sweep download transients for in-flight work. - Kept a separate
active_downloadscancellation-token map next to the singleactive_operationstable. The operation table is the authoritative state for gates; the token map is only cancellation plumbing for in-flight downloads. - Treated a downloaded-but-not-installed game as immediately installable from
Tauri by sending
PeerCommand::InstallGamedirectly. A not-downloaded game usesPeerCommand::DownloadGameFiles; the peer derives every path, size, and hash from its local catalog manifest and auto-installs after the sentinel commit. - Removed the dead internal
PeerCommand::UpdateGamepath. The UI update button now sends the same exact-content download command. The local catalog remains descriptor authority, and only authenticated peers advertising its exactContentIdare eligible sources before the normal update transaction runs. - Removed the unreachable
Availability::Downloadingprotocol value. Active operations are reported separately, and local summaries emit only settled availability. - Threaded availability through the UI-facing
Gamepayload soLocalOnlyrendering follows backend state instead of reverse-engineering it frominstalled && !downloaded. - Removed Tauri's parallel whole-library filesystem scan. The UI database keeps
bundled catalog metadata, while peer
LocalLibraryChangedsnapshots now owndownloaded,installed,local_version, andavailability.