A workspace has one activity state, and a run keeps the inputs it started with #179

Open
opened 2026-11-11 05:31:40 +00:00 by james.maes · 0 comments
Owner

From the full review of 2026-11-10. Moved out of 1.1.1 by the owner's decision; planned for 1.2.0.

What happens

A workspace decides what may run from several independent busy flags, and some commands start work without asking them. Seen by reading the code at 1.1.0 (re-verify each against current main):

  • Retry failed checks only the busy flags and then runs the sync without the sync command's own guards. After the Organization box was edited, the first organization's repositories are cloned into the second one's folder; with an empty target folder the user sees a raw argument error.
  • The lockout for Resolve paths starts after two awaits and does not know about a load in flight. Sync all can start a second git operation in a folder while the Resolve dialog is open; a reload during the dialog ends the command with an unhandled lookup failure.
  • Recovery uses the inputs as they are now, not those of the run that failed: an edited target folder points Resolve at another directory.
  • A successful organization lookup closes the error bar that a failed repository load opened, and overwrites the status text in the middle of a run.
  • After a run-level fault, rows stay "Queued" under an error result; Retry failed permanently narrows the selection.
  • To confirm: a cancellation caused by an HTTP timeout is treated as "superseded" and not shown; the short-token path may clear a typed Organization.

Expected

One activity state per workspace (Idle, Loading, Running, RecoveryPending, Resolving) from which every command's CanExecute derives, and a run that keeps the inputs it started with.

Notes

  • This is also the structural item of the 1.2.0 plan for WorkspaceViewModel; do them together.
  • Every fix needs a regression test that fails without it.
From the full review of 2026-11-10. Moved out of 1.1.1 by the owner's decision; planned for 1.2.0. ## What happens A workspace decides what may run from several independent busy flags, and some commands start work without asking them. Seen by reading the code at 1.1.0 (re-verify each against current `main`): - **Retry failed** checks only the busy flags and then runs the sync without the sync command's own guards. After the Organization box was edited, the first organization's repositories are cloned into the second one's folder; with an empty target folder the user sees a raw argument error. - The lockout for **Resolve paths** starts after two awaits and does not know about a load in flight. Sync all can start a second git operation in a folder while the Resolve dialog is open; a reload during the dialog ends the command with an unhandled lookup failure. - Recovery uses the inputs as they are now, not those of the run that failed: an edited target folder points Resolve at another directory. - A successful organization lookup closes the error bar that a failed repository load opened, and overwrites the status text in the middle of a run. - After a run-level fault, rows stay "Queued" under an error result; Retry failed permanently narrows the selection. - To confirm: a cancellation caused by an HTTP timeout is treated as "superseded" and not shown; the short-token path may clear a typed Organization. ## Expected One activity state per workspace (Idle, Loading, Running, RecoveryPending, Resolving) from which every command's `CanExecute` derives, and a run that keeps the inputs it started with. ## Notes - This is also the structural item of the 1.2.0 plan for `WorkspaceViewModel`; do them together. - Every fix needs a regression test that fails without it.
james.maes added the bugdeferred labels 2026-11-11 05:31:40 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/gclo#179