Skip to content

Fix: [Activity View] Clear Finished no longer removes failed items that still have retry/dismiss actions - #1699

Open
NeuralFault wants to merge 1 commit into
LykosAI:mainfrom
NeuralFault:fix/clear-finished-includes-failed
Open

Fix: [Activity View] Clear Finished no longer removes failed items that still have retry/dismiss actions#1699
NeuralFault wants to merge 1 commit into
LykosAI:mainfrom
NeuralFault:fix/clear-finished-includes-failed

Conversation

@NeuralFault

@NeuralFault NeuralFault commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Clicking "Clear Finished" in the Progress Manager would remove all items in a terminal state, including failed downloads. Failed downloads have a visible retry button (and a dismiss button), but the bulk clear wiped them out before the user could act on them.

The root cause was that ClearDownloads() filtered on IsCompleted, which — correctly for UI purposes — treats Failed as a terminal state alongside Success and Cancelled. But that same property was also used as the sole gate for the bulk-clear operation, conflating "this item is done rendering progress UI" with "this item is safe to discard."

Fix

Introduced a new IsClearable virtual property, parallel to IsCompleted, that separates the two concerns:

Property Purpose Failed included?
IsCompleted Hide progress spinners, pause/cancel controls ✅ Yes
IsClearable Bulk "Clear Finished" removal ❌ No
  • ProgressItemViewModelBase.IsClearableProgress.Value >= 100 && !Failed
  • PausableProgressItemViewModelBase.IsClearableState is Success or Cancelled (failed downloads with retry/dismiss are preserved)
  • ClearDownloads() → now filters on IsClearable instead of IsCompleted

Cancelled downloads are still cleared (they have no retry path). IsCompleted behavior is completely unchanged.

Passed functional test via forced 'Failed' download which remained after bulk clear invoked.

…ivity view

- Add `IsClearable` virtual property to `ProgressItemViewModelBase` that
  excludes `Failed` items (only `Progress.Value >= 100 && !Failed`)
- Override `IsClearable` in `PausableProgressItemViewModelBase` to match
  only `Success` and `Cancelled` states, keeping `Failed` items visible
- Update `ClearDownloads()` to filter on `IsClearable` instead of
  `IsCompleted` so failed downloads with retry/dismiss buttons are preserved
- `IsCompleted` retains its existing behavior (all terminal states) for
  UI gating of progress spinners, pause/cancel controls, etc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant