Repository navigation
refactor(ui): share responsive page presentation - #2085
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
Integrate main at 1c7901f without modifying the PR patch. Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
|
Merged current main ( This completes the main reconciliation noted in the description, not merge readiness. The PR remains draft. Fresh local build, Shared tests, and Tray tests are blocked in this Linux session: PowerShell and .NET are unavailable, and no Windows node is connected. The existing Windows results still apply to the original tested tree, not this merged tree. New-head CI has started; the previously documented accessibility, Workspace-button focus/invocation, keyboard, high-contrast, and consuming-page proof gaps remain open. |
|
Codex review: needs maintainer review before merge. What this changesThis PR adds shared responsive page presentation and opt-in Settings content insets while retaining existing shell navigation owners. Example: An opted-in pinned page opens with the Workspace pane collapsed.
Review scores
ProductKind: Refactor · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review Keep this useful, collaborator-authored foundation PR open as a draft; the introduced diff has no discrete correctness or security finding. Priority: P3 Before mergeNone. FindingsNone. Tests
Agent review detailsHow this fits togetherThe native WinUI presentation layer receives caller-owned content, host dimensions and pane state, then produces Reactor controls and shell layout allocations. flowchart TD
A[Page content and host width] --> B[PageHero and responsive layout]
B --> C[Native Reactor controls]
D[Workspace pane state] --> E[WorkspaceSettingsLayout]
E --> F[WorkspaceWindow and SettingsShellView]
F --> C
Technical reviewBest possible solution: Retain the focused shared presentation foundation and existing shell owners, then complete its documented native validation before landing. Do we have a high-confidence way to reproduce the issue? This is a staged refactor rather than a current-main bug report; source inspection confirms the proposed helpers and inset contract are new. Is this the best way to solve the issue? The implementation keeps sizing policy pure, rendering opt-in and native control application in existing shells; no unnecessary competing owner or unrelated change was established. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 7bcd9f57caba. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceWhat I checked:
Likely related people:
Preflight sourceSource unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified. Review metrics
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed November 9, 2026, 12:28 AM ET / 05:28 UTC. |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
What Problem This Solves
Upcoming native page redesigns need one shared presentation foundation so they can land independently without competing hero, spacing and Settings-host implementations.
User Impact
User impact: this foundation does not enable the redesigned pages; existing Settings navigation, Back to app, Escape handling, pane preferences and current-Gateway Dashboard routing remain intact. Reveal highlights preserve theme-dependent backgrounds after completion or cancellation.
Open for review, not a merge-readiness claim. Required Axe/accessibility results and native invocation/focus coverage of the relocated Workspace collapse/reopen buttons on an existing pinned page remain pending. Keyboard Dashboard-search proof was blocked by Windows foreground ownership. Actual OS high-contrast palette and consuming-page pointer/backdrop integration are not certified. Required current-head CI and any subsequent landing reconciliation remain separate gates.
Why This Change Was Made
Provide canonical opt-in page heroes, summary tiles, responsive sizing and exact-once history-band allocation. Hero actions keep their native parent across resize; reveal skips controls that cannot take focus. The highlight uses a temporary native animation value rather than replacing the underlying background style, theme resource or binding. Existing shell owners still apply layout and own navigation.
Includes shared presentation, minimal host integration, directly related documentation and regression coverage. Excludes page-specific features, Sessions, adaptive Settings rail behavior, catalog expansion, Reactor/package upgrades, CI changes and unrelated Settings rewrites. The implementation uses the existing Reactor preview.16 and FunctionalUI helpers.
The simplification pass retained this boundary: pure sizing/allocation tests and mounted native lifecycle/layout tests protect distinct failures without adding production test hooks.
Evidence
On the exact source tree now committed as
38721600a293fb76b3c631ad8a34596795dba160: full Debug build passed; Shared had 4,875 passes and 25 ordinary opt-in/hardware skips; all 5,342 Tray tests passed. All 16 selected mounted foundation tests passed in both Debug and non-Dev Release. The four new regression cases failed the old implementation specifically at the post-reveal theme switch, after first proving that each fixture's resource followed theme changes before reveal.The Hanselman review used
claude-opus-5.5(default context) andgpt-6-astra(long context), both at high reasoning effort, through independent read-only review agents. Opus identified the MEDIUM theme-restoration defect and Astra confirmed it during reconciliation. Both rechecked the immutable three-file repair and reported no remaining actionable finding in it. The badge-name accessibility candidate was withdrawn against observed native UIA evidence. These are source-review results, not independent test execution.Earlier foundational source review and independent implementation/proof-plan review covered the shared scope and identified the pending Axe/accessibility and relocated Workspace-button coverage. Earlier isolated-app Back-to-app, pane preference/restart and non-keyboard Dashboard routing results belong to pre-repair tree
aac463e097edef3ce9c61d4911751b78f1aa79d1; they are not represented as newly executed runs on this update.Change Type
Scope
winnodeRequired proof pools
windows-winui-interactive: shared native page presentation, focus, motion, theme behavior and Settings-host allocation. Selected native checks ran; this does not claim that the entire pool is complete.Validation
Windows ARM64, .NET SDK 10.0.403. Test data roots were isolated; actual executed counts were verified from TRX rows.
.\build.ps1dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restoredotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore.\build.ps1 -Project WinUI -Configuration Releasegit diff --checkDebug native selection: 16 passed, 0 failed/skipped.
Non-Dev Release native selection: 16 passed, 0 failed/skipped.
Before-fix negative control: four failed, as expected, at the post-reveal theme switch, covering Reactor ThemeRef and direct XAML ThemeResource after completion and cancellation. The same cases pass after repair. Earlier fixture compile/resource-setup failures were retained separately and are not claimed as product reproductions.
Release signing prerequisite and historical proof limits
Release supplied
OpenClawSignedCleanupHostPathusing the existingopenclaw-signed-cleanup-hostartifact (ID13636164470) from successful CI run 42528818286, sourcee70292487958be9e70170e2f3affe7afc42056e8. Its helper source subtree and ancestor build inputs match the foundation. PE metadata confirmed AnyCPU. The official OpenClaw Foundation Authenticode signature and embedded resource's identical SHA256 were verified byTest-CleanupHostSignature.ps1 -RequireSigned. Helper SHA256:A4FB6D0371DB8C5FA8D17507D09E4461534AB17C44D549426D2AB0AE69F8A469. The signature was reverified for this update. No gate was weakened; the downloaded helper was not executed to inspect it. This is not a signed installer/distribution claim.Earlier foundational checks on tree
aac463e097edef3ce9c61d4911751b78f1aa79d1included 226 focused sizing/allocation/navigation passes, 13 Debug native foundation passes, five existing app-navigation passes and 17 Release native/fixture passes. Those results are historical; the current-source commands and counts are listed above.The earlier corrected Dashboard keyboard-search selection had one passed inset case and one failed keyboard case: Windows refused foreground ownership and the guard stopped before a shortcut was sent. It was not bypassed. Separate non-keyboard current-Gateway routing/retry passed on that earlier tree; it does not substitute for the keyboard path.
Earlier manual Light/Dark observations and local native-control captures also belong to the foundation tree. No media was uploaded, and no new visual capture pass is claimed for this repair. Early offscreen/transitional captures were rejected as settled visual evidence.
Real Behavior Proof
Environment tested: native Windows ARM64, Debug and non-Dev Release, isolated native test profiles.
PR head or commit tested: tests and repair reviews ran before commit, against merged head
cf4d038744bf528874d932cf149870a5602ae8ec(base1c7901f6cb1e743ad42e8528780824ffd23af214) plus local source tree8f6bbbe114f9054c57e079ccea9603c8ad337f10. Commit38721600a293fb76b3c631ad8a34596795dba160has that exact Git tree, verified after commit. Source equality establishes correspondence, not a newly executed run.Exact steps or command run: the native selections above mounted and resized heroes, retained action focus/identity, measured tile widths/gaps/spans, exercised reveal restart/cancel/completion and external background updates, checked Settings inset delivery, and switched Light to Dark after reveals on both style-based and directly assigned theme resources.
Evidence after fix:
Observed result: resources followed theme changes before and after the reveal; Reactor targets retained an unset local Background value. Repeated reveals, cancellation and later page background changes preserved their expected values. Four equivalent cases failed the original implementation at the post-reveal theme change.
Screenshot or artifact links verified? (
Yes/No/N/A) N/A for local test/capture artifacts: no public media proof URL claimed. The signed-helper workflow link identifies an existing prerequisite artifact, not this PR's execution.Not verified or blocked: required Axe/accessibility lane has no supplied result; relocated Workspace collapse/reopen buttons lack demonstrated native invocation/focus coverage on an existing pinned page (the earlier preference tests toggle the separate Settings pane); Dashboard keyboard-search foreground ownership; actual Windows high-contrast palette; pointer hit-testing over a real consuming page's full-frame backdrop; integration of upcoming page features; current-head hosted CI and any further landing reconciliation. The mounted Settings test exercises the production applicator with a test viewport, not a fabricated product page. Control-template visual states, live data-binding updates and a theme change during an active highlight were not separately exercised.
Security Impact
Yes/No) NoYes/No) NoYes/No) NoYes/No) NoYes/No) NoYes, explain the risk and mitigation: N/ACompatibility and Migration
Yes/No) Yes for existing pages and navigation; new presentation and inset APIs are opt-in. During a reveal, a page background update becomes visible when the temporary animation ends (at most 1.2 seconds), without being overwritten.Yes/No) No product configuration changes. Release validation used the repository's existing signed-helper build input.Yes/No) NoReview Conversations
Open for review at the author's request. Hosted reviews, CI and the stated proof gaps remain separate from this status transition.