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)
39 lines
2.4 KiB
Markdown
39 lines
2.4 KiB
Markdown
# Implementation Decisions
|
|
|
|
- Added a `just test` recipe so unit tests can be run through the repository's
|
|
required `just ...` command surface instead of invoking `cargo test` directly.
|
|
- 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.json` cache 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
|
|
`SetGameDir` changes run recovery plus a scan; install/update/uninstall
|
|
completion only rescans the affected game after operation tracking has been
|
|
cleared.
|
|
- Rejected path-changing `SetGameDir` while 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_downloads` cancellation-token map next to the single
|
|
`active_operations` table. 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::InstallGame` directly. A not-downloaded game
|
|
uses `PeerCommand::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::UpdateGame` path. The UI update button
|
|
now sends the same exact-content download command. The local catalog remains
|
|
descriptor authority, and only authenticated peers advertising its exact
|
|
`ContentId` are eligible sources before the normal update transaction runs.
|
|
- Removed the unreachable `Availability::Downloading` protocol value. Active
|
|
operations are reported separately, and local summaries emit only settled
|
|
availability.
|
|
- Threaded availability through the UI-facing `Game` payload so `LocalOnly`
|
|
rendering follows backend state instead of reverse-engineering it from
|
|
`installed && !downloaded`.
|
|
- Removed Tauri's parallel whole-library filesystem scan. The UI database keeps
|
|
bundled catalog metadata, while peer `LocalLibraryChanged` snapshots now own
|
|
`downloaded`, `installed`, `local_version`, and `availability`.
|