fix(launcher): keep active installations visible in game filters

Operation admission withdraws local availability before changing game files.
The UI previously received that withdrawal before the busy state, then
filtered out installations because only downloads counted as local activity.

Publish the active operation first while preserving atomic network withdrawal.
Keep active operations in All Games and Local, retain prior Installed filter
membership until settlement, and show operation-specific status labels. Local
availability and playability remain derived from the backend. Document the
installation presentation and cover withdrawal, settlement, and filter counts.

Test Plan:
- just fmt and just clippy: passed.
- just test: passed all workspace suites.
- just frontend-test: 98 passed, including installation lifecycle regressions.
- deno task build: TypeScript and Vite production build passed.
- Native GUI interaction was not manually exercised.
This commit is contained in:
ddidderr committed 2026-09-12 20:01:40 +02:00
1 parent 6b65a66465
commit 1a394d2825
6 files changed
+227 -39

No files matched your search

+4 -1
View File
@@ -199,7 +199,10 @@ pull.
except that accepted game-directory changes can force a UI snapshot for the
new path without changing peer availability.
- Active operation mutations emit `ActiveOperationsChanged` from the mutation
path instead of riding on local library scans.
path instead of riding on local library scans. Admission withdraws network
availability under the operation and library locks, then emits the active
operation before the withdrawn `LocalLibraryChanged` UI snapshot. This keeps
the game visible as busy while peers can no longer request its changing files.
- The remote UI projection is a wholesale replacement derived from all current
authenticated per-peer slices; two peers offering the same game remain
distinct exact-content sources.