Domain logic already lives in gclo.Engine (published to NuGet by the release pipeline); this closes the remaining gap.
Owner rule: all business logic lives in shared libraries; the WinUI project keeps only XAML, dialogs, pickers, brushes, and update plumbing.
- New `gclo.ViewModels` classlib (net10.0; refs gclo.Engine + CommunityToolkit.Mvvm — UI-framework-free).
- Move `MainViewModel`, `RepoItemViewModel`, `AppSettings` persistence (the one WinUI theme-mapping method stays in the app).
- Add a progress-factory seam so view models are unit-testable (Progress<T> capture makes tests racy otherwise).
- Add view-model unit tests: command gating, progress aggregation, debounced org lookup + cancellation, error surfacing.
- Update slnx, README project layout.
Domain logic already lives in `gclo.Engine` (published to NuGet by the release pipeline); this closes the remaining gap.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Owner rule: all business logic lives in shared libraries; the WinUI project keeps only XAML, dialogs, pickers, brushes, and update plumbing.
gclo.ViewModelsclasslib (net10.0; refs gclo.Engine + CommunityToolkit.Mvvm — UI-framework-free).MainViewModel,RepoItemViewModel,AppSettingspersistence (the one WinUI theme-mapping method stays in the app).Domain logic already lives in
gclo.Engine(published to NuGet by the release pipeline); this closes the remaining gap.Shipped: gclo.ViewModels library extracted (view models + settings persistence, UI-framework-free, injectable seams) with view-model test coverage. UI project contains only XAML/dialogs/pickers/update plumbing.