fix(ui): derive operation status from snapshots
The launcher was mixing lifecycle event handlers with the games-list snapshot when deciding the card status. That left multiple writers for the same install_status field and made event ordering visible in React. Make games-list-updated active_operations the authoritative source for busy status. Lifecycle events no longer mutate the card status; they only keep their non-status side effects such as rescans and error messages. The only remaining optimistic status is CheckingPeers before the backend emits its next snapshot. Add a frontend reducer test that proves an install stays in Installing while an active install snapshot exists, then settles to Installed only after the active operation clears with installed local state. Test Plan: - git diff --check - just fmt - just frontend-test - just build Refs: local install/download status snapshot cleanup
This commit is contained in:
@@ -26,11 +26,12 @@ Never use normal cargo ... commands, use the just ... commands instead.
|
||||
- `just fmt` — format the workspace.
|
||||
- `just clippy` — lint the workspace.
|
||||
- `just test` — run the workspace unit tests.
|
||||
- `just frontend-test` — run frontend reducer/unit tests.
|
||||
- `just fix` — auto-apply cargo/clippy fixes, then format.
|
||||
- `just clean` — wipe the build cache.
|
||||
- `just peer-cli-build` — build the scripted peer harness.
|
||||
- `just peer-cli-image` — build the peer harness Docker image.
|
||||
- `just peer-cli-run NAME` — run one named harness container with persistent state under `target/peer-cli/NAME/`.
|
||||
- `just peer-cli-run NAME` — run one named harness container with persistent state under `.lanspread-peer-cli/NAME/`.
|
||||
|
||||
## Protocol policy
|
||||
|
||||
|
||||
Reference in New Issue
Block a user