- MainViewModel becomes WorkspaceViewModel: optionally seeded from an
Account (org/folder/options + token pulled from the vault, firing the
org lookup naturally); AccountId/DisplayName/HasFailedRepos exposed;
account syncs record their summary back to the store (failures
logged, never crash a completed run)
- The workspace UI moves verbatim into WorkspacePage (UserControl) with
its handlers, dialogs, and accessibility wiring; folder picker takes
an injected window-handle provider
- MainWindow is now the shell: MenuBar + NavigationView with pinned
Quick Sync, one item per saved account (last-sync tooltip), and an
Add-account footer stub (wizard lands in Phase 4); workspaces are
created on first visit and cached so switching never interrupts a
running sync; pane badges show running/failed for offscreen
workspaces; all cached VMs disposed on close
- 6 new tests (152 total)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>