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:
1 parent
6b65a66465
commit
1a394d2825
6 files changed
+227
-39
No files matched your search
@@ -599,6 +599,24 @@ Hover: `filter: brightness(1.12)`. Active: `transform: scale(0.98)`.
|
||||
**Uninstall / Delete-from-disk** are NOT on the card — only in the detail
|
||||
overlay (as ghost-danger buttons).
|
||||
|
||||
### Installation and other local operations
|
||||
|
||||
Starting an install keeps the game card in the grid. While the backend reports
|
||||
an active installation (including an update or Stream Install), show
|
||||
**Installing** in the cover's state chip and **Installing…** in the disabled
|
||||
primary-action slot, with an accent spinner. The detail overlay uses the same
|
||||
action and **Installing…** status. Installation has no percentage or ETA until
|
||||
the backend supplies measured progress. Uninstall and downloaded-file removal
|
||||
use **Uninstalling** / **Uninstalling…** and **Removing** / **Removing…** with
|
||||
the same busy styling.
|
||||
|
||||
All active operations count as local activity and remain in **All Games** and
|
||||
**Local**, even while their files are temporarily unavailable for sharing or
|
||||
their last source leaves. A game already in **Installed** stays there while its
|
||||
operation runs; a first installation enters **Installed** when it completes.
|
||||
Filter counts follow the same rules, and search still applies. On settlement,
|
||||
use the resulting local state to determine membership and the next action.
|
||||
|
||||
---
|
||||
|
||||
## Download progress (state === 'downloading')
|
||||
|
||||
Reference in new issue
Block a user