Skip to content

Stage J7: move the Mod workspace interface out of the window - #120

Merged
uyujkk merged 4 commits into
mainfrom
claude/ui-j7-workspace
Nov 10, 2026
Merged

uyujkk merged 4 commits into
mainfrom
claude/ui-j7-workspace

Conversation

@uyujkk

@uyujkk uyujkk commented Nov 10, 2026

Copy link
Copy Markdown
Owner

Summary

Stage J7: the Mod workspace interface moves out of MainWindow (docs/development/UI-Structure-Plan.md, J7). The inventory found 20 files and 6,455 lines; about half of the ~90 outside references come from the Shortcuts page and overlay and use state slot, preset preview and combination preset code whose results must not change. So this PR moves the interface only (option 1, chosen by the maintainer). The appearance work (J7-b) comes in its own PR after this one.

  • e3a83c3: the inventory, in UI-Structure-Plan.md ("J7 牵连清单").
  • f3c7986: the shortcut binding rules are split from the binding editor. This is a pure move inside the window; the online install uses the rules too.
  • 7244916: pure move into Pages/WorkspacePage.xaml and Pages/Workspace/.
  • fb013fa: a follow-up in UI-Structure-Plan.md ("J7 后续") to split IWorkspaceHost into slot, preset preview, combination preset and install services plus shared workspace state, with the member count.

MainWindow: code 14,428 → 10,417 lines; MainWindow.xaml 705 → 145 lines. The page is 4,908 lines.

Timings, as the baseline for J7-b (median of 6, two runs each; part of each figure is the UI-automation check, about 45 ms for a character and 14 ms for a Mod):

Action Before the move After the move
Select character 70 / 71 ms 74 / 73 ms
Select Mod 31 / 32 ms 35 / 34 ms

Test plan

  • scripts\test-all.ps1: 1,779 Core tests, Release build 0 warnings, Core coverage 94.0% line / 88.2% branch
  • UI tests 62/62 on the same build, including the navigation round-trip tests
  • Code-style check
  • 54 screenshots (zh/en/ru × 1400×900, 1000×800 and 670×530 × light/dark; preview, shortcut, slot and preset views) match the pre-move baseline. The only differences are the temporary test folder path in the status bar and the desktop at the window edge. Two bad baseline shots were retaken on both builds.
  • Full package with the real mouse:
    • 24 character switches and 24 Mod selections.
    • Remove and redeploy of a Mod: the target folder disappeared, then came back with its mod.ini.
    • The combination preset restore preview, opened and cancelled, left everything as it was.
    • A character rename moved the folder and updated the list.
    • No errors were logged.

🤖 Generated with Claude Code

uyujkk and others added 4 commits November 10, 2026 00:42
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The rules (reading bindings from a Mod's files, the automatic binding and its
description, upgrading old automatic bindings, link normalising) are shared
with the online install and stay with the window; the row editor moves with
the Mod workspace page next. Pure move inside MainWindow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The workspace XAML (with the styles only it uses and the combination preset
holder CombinationProfileControlsHost) moves to Pages/WorkspacePage.xaml, and
its interface files to Pages/Workspace/WorkspacePage.*.cs: RepositoryWorkspace,
RefinedWorkspace, LocalLibrary, LocalTags, BatchModActions, CharacterSelection,
ExistingModImport, CharacterAvatars and the ShortcutBindings editor.

The logic stays with the window (decided 2026-11-10): state slots, variants,
default slots, preset previews, combination presets and bundles, preset
share, archives, copy ownership (#107), character rename migration (#108),
INI conflicts and the shortcut binding rules. The page reaches the window only
through IWorkspaceHost (77 members in 18 commented groups) and never references
the MainWindow type; the 12 page controls whose handlers are that logic are
subscribed by the window. CharacterFollowProfile becomes a top-level type;
WrapperPage, now unused, is removed.

No behaviour change. The 54 workspace screenshots (zh/en/ru, 1400x900,
1000x800 and 670x530, light/dark, the preview, shortcut, slot and preset
views) match the baseline apart from the temporary test folder path in the
status bar and the window edge; test-all, all UI tests and the style check
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@uyujkk
uyujkk merged commit c71fb81 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