Skip to content

Stage J finish, step 2: pages use AppServices instead of window forwards - #124

Merged
uyujkk merged 1 commit into
mainfrom
claude/ui-j-finish-2
Nov 10, 2026
Merged

uyujkk merged 1 commit into
mainfrom
claude/ui-j-finish-2

Conversation

@uyujkk

@uyujkk uyujkk commented Nov 10, 2026

Copy link
Copy Markdown
Owner

Summary

Step 2 of finishing stage J (docs/development/UI-Structure-Plan.md): the Online and workspace pages call AppServices directly instead of going through window forwards. Behaviour is unchanged.

  • Selected repository: RepositoryService.Selected instead of the window's forward.
  • Theme brushes: a small page helper with the same ThemeTokens lookup the window used.
  • Reduced animations: AppearanceService.ReduceAnimations. The window's setting now reaches the service right after its XAML loads, so it's set before any page could ask.
  • Pickers and opening things: the folder and file pickers, and opening folders, file locations and links, moved unchanged into DialogService. The window passes its handle to the service and keeps one-line forwards for its own callers. The only edit is argument order: the message helper now takes the title first.

Members removed

  • IOnlineHost 47 → 42: GetAppThemeBrush, ShouldReduceAnimations, PickFolderAsync, OpenExternalUrlAsync, GetSelectedRepository.
  • IWorkspaceHost 77 → 70: GetAppThemeBrush, ShouldReduceAnimations, GetSelectedRepository, PickFolderAsync, PickFileAsync, OpenDirectory, OpenFileLocation.
  • IShortcutOverlayActions stays at 22: none of its members is a pure forward to an existing service.
  • Kept on purpose:
    • Density is a window field that reaches the service in a separate step, so removing it could change the value briefly.
    • Error reporting, saving and logging have no matching service yet.

Test plan

  • scripts\test-all.ps1 on the final commit: 1,788 Core tests, Release build 0 warnings, Core coverage 94.0% line / 88.2% branch
  • UI tests 64/64
  • Code-style check (two unused using lines it found were removed)
  • 114 Online and workspace screenshots, before and after (all languages, themes and sizes), match apart from the temporary path in the status bar
  • Full package with the real mouse, no errors logged:
    • Online: 24 character switches and 24 opens and closes of details; details in a narrow window; Download reached the "choose download location" dialog and was cancelled with Esc, so nothing was downloaded; 48 page switches.
    • Workspace: 24 character and Mod selections; remove and redeploy; the preset restore preview, opened and cancelled; a rename; a column drag; the drawer 6 times; 48 page switches.

🤖 Generated with Claude Code

The Online and workspace pages now call the services directly where the
window only passed a call through:
- the selected repository: RepositoryService.Selected;
- theme brushes: ThemeTokens with AppearanceService.ThemeKey (a page helper);
- reduced animations: AppearanceService.ReduceAnimations (now set right
  after the window's XAML, before any page could ask);
- the folder and file pickers and opening folders, file locations and links:
  moved unchanged from the window into DialogService (the window attaches its
  handle and keeps one-line forwards for its own callers).

Removed from IOnlineHost (47 -> 42): GetAppThemeBrush, ShouldReduceAnimations,
PickFolderAsync, OpenExternalUrlAsync, GetSelectedRepository.
Removed from IWorkspaceHost (77 -> 70): GetAppThemeBrush,
ShouldReduceAnimations, GetSelectedRepository, PickFolderAsync,
PickFileAsync, OpenDirectory, OpenFileLocation.
IShortcutOverlayActions (22) has no pure forwards to an existing service.

No behaviour change; the Online and workspace screenshots match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@uyujkk
uyujkk merged commit 5271c65 into main Nov 10, 2026
4 checks passed
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