Skip to content

fix: replace optimistic workspace removal with destroying state indicator (Refs: beans-9s9h)#155

Merged
hmans merged 1 commit into
mainfrom
beans/abundant-pinniped-6h3f
Mar 18, 2026
Merged

fix: replace optimistic workspace removal with destroying state indicator (Refs: beans-9s9h)#155
hmans merged 1 commit into
mainfrom
beans/abundant-pinniped-6h3f

Conversation

@hmans
Copy link
Copy Markdown
Owner

@hmans hmans commented Mar 18, 2026

Summary

  • When destroying a workspace, the optimistic removal caused a visual flash: the item disappeared from the sidebar, reappeared when the subscription delivered the still-existing worktree, then disappeared again once the backend finished cleanup.
  • Instead of eagerly removing, workspaces being destroyed now render at 30% opacity with interactions disabled, giving clear visual feedback while the backend processes the removal.
  • The subscription handler automatically cleans up the destroying state once the worktree is gone from the backend's list.

Test plan

  • Create a workspace, then destroy it — verify it fades to low opacity and stays visible until fully removed (no flash/reappear)
  • Verify the destroy button in WorkspaceView is disabled and shows "Destroying..." tooltip during destruction
  • Verify that if the mutation fails, the workspace returns to normal opacity

…ator (Refs: beans-9s9h)

- Replace eager list filtering with a `destroying` Set in WorktreeStore
- Render destroying workspaces at 30% opacity with pointer-events disabled
- Let the subscription handle actual removal when backend finishes cleanup
- Disable destroy button in WorkspaceView during destruction
@hmans hmans merged commit 475370a into main Mar 18, 2026
1 check passed
@hmans hmans deleted the beans/abundant-pinniped-6h3f branch March 18, 2026 10:30
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