Seed v3 Colophon design system for OpenClaw Windows Hub - #1395
Conversation
Carry over the v1 design.json tokens/brand/authority and principles.md verbatim, port all 9 components (Button, Field, Card, Badge, ComposerPicker, ChatBubble, ChatComposer, ChatThread, ExampleScreen) from raw-CSS attrs.style to v3 Auto Layout with token-bound layout/appearance, and add a v3 colophon.jsonc presentation profile. Adds the idempotent Colophon pointer block to AGENTS.md. 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. |
|
Codex review: needs changes before merge. Reviewed September 11, 2026, 2:08 PM ET / 18:08 UTC (Revision 8). ClawSweeper reviewWhat this changesAdds Fluent design tokens, nine Colophon component previews, design principles, a presentation profile, and agent guidance for translating designs into native Windows UI. Merge readiness⛔ Needs changes before merge - 5 items remain This seed is not on current main and remains a useful contribution. All four prior findings remain unresolved; the latest button-class changes do not address them. Priority: P3 Review scores
Verification
How this fits togetherThe design catalog supplies visual examples and guidance to Colophon and coding agents. Windows UI still ships through the native WinUI and Reactor implementations, with Fluent resources providing theme-aware colors. flowchart LR
A[Shipping Windows UI] --> B[Design tokens and patterns]
B --> C[Colophon preview]
B --> D[Agent design guidance]
E[Presentation profile] --> F[Missing profile consumer]
D --> G[Native UI implementation]
Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Keep the seed aligned with shipping Fluent behavior, use only supported Colophon inputs, and describe the existing build and launch workflow accurately. Do we have a high-confidence way to reproduce the issue? Yes, through source inspection: the profile has no consumer in the referenced dependency, and the build-tool and catalog descriptions contradict existing files. No runtime reproduction was executed. Is this the best way to solve the issue? Not yet. A native-derived catalog is a reasonable approach, but unsupported profile settings and inaccurate agent guidance should be corrected within this design-only scope. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against c71121cdcdc9. LabelsLabel justifications:
EvidenceAcceptance criteria:
What I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (7 earlier review cycles)
|
ComposerPicker now follows the Fluent ComboBox pattern (bordered control fill + hairline border, ink value, right-aligned muted chevron). ChatComposer and ChatThread are realigned to the actual ReactorChatComposer/ReactorChatTimeline implementation: - ChatComposer toolbar: adds session picker, speaker, and settings; notes the Send<->Stop toggle; binds ControlFill/ControlStroke (control/controlLine) instead of Card resources; 12px outer margin. - ChatThread/ChatBubble: user bubble uses the softer accentSubtle (AccentFillColorSecondaryBrush) with a hover Copy; assistant bubble uses subtleHover fill + controlLine border, adds Read aloud, and max-width 720. Adds 3 tokens the system did not cover: control (ControlFillColorDefaultBrush), controlLine (ControlStrokeColorDefaultBrush), accentSubtle (AccentFillColorSecondaryBrush). Preview hex only; code binds the resource keys. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ac8d03a2-7198-43dc-8506-709986d6e1d3
…AppCli Reactor port of the design system's ComposerPicker into the shipping composer: ReactorChatComposer.PickerButton now renders a bordered Fluent ComboBox (ControlFill fill, ControlStroke hairline border, primary-text value, right-aligned muted chevron pinned by a Star/Auto grid, radius 4, MinWidth 64, padding 12/8) instead of a borderless subtle button. Session/model/reasoning selection still opens the existing MenuFlyout of RadioMenuItems. design.json: add a winapp (WinAppCli, https://github.com/microsoft/WinAppCli) tooling reference to authority and a toolingSource on both the default WinUI 3 port and the Reactor chat override, since XAML and Reactor now build/package through winapp. Update the composer chevron contract test to assert the ComboBox styling. Remove em dashes from the Colophon pointer block in AGENTS.md so the repo doc validator (no em dashes in user-facing docs) passes. Validation: build.ps1 OK; OpenClaw.Shared.Tests 3989 passed; OpenClaw.Tray.Tests 2897 passed; design-system validators (componentsio/profileio/validateDesignDir) OK; rubber-duck review clean. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ac8d03a2-7198-43dc-8506-709986d6e1d3
The bordered Fluent ComboBox port regressed the composer's session/model/reasoning selectors. Restore the subtle inline dropdown the surface is meant to ship: ReactorChatComposer.PickerButton goes back to a borderless, transparent button (SubtleFillColorTransparent resting, subtle hover/press, muted value + trailing chevron with a small right/up offset). Update the design system's ComposerPicker to the same subtle pattern (transparent fill, no border, muted text/chevron, gap/padding tokens 1/2) and rename the contract test to ReactorComposer_StylesPickersAsSubtleDropdown. The WinAppCli port authority (design.json) is unchanged. Validation: build.ps1 OK; OpenClaw.Shared.Tests 3989 passed; OpenClaw.Tray.Tests 2897 passed; design-system validators OK. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ac8d03a2-7198-43dc-8506-709986d6e1d3
This PR is design-system seeding only. Restore src/OpenClaw.Tray.WinUI/Chat/ReactorChatComposer.cs and tests/OpenClaw.Tray.Tests/ChatTimelinePresentationTests.cs to their main state, removing the composer picker code port entirely. The design system (.agents/design/*) still describes the subtle inline dropdown that the app actually ships, and design.json keeps the WinAppCli port authority. No production code or tests are changed by this PR. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ac8d03a2-7198-43dc-8506-709986d6e1d3
Update the ChatComposer sample values and placeholder to mirror the real Reactor composer (Message Assistant placeholder; Main session / Claude Sonnet 5 / Default pickers), and note that a picker with a single option (the session picker with one session) renders disabled so its label reads lighter than its enabled neighbours. Design data only; no code or token changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ac8d03a2-7198-43dc-8506-709986d6e1d3
The ComposerPicker and the chat icon/send/copy buttons rendered with the browser default button bevel in the Colophon preview because they were the only authored el:button nodes without the canonical ds-btn reset class (border: 1px solid transparent). Adding it drops the retro OS chrome so the subtle borderless pickers render as intended; inline appearance still drives radius, color, and the Send accent fill. Design-only, no production changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ac8d03a2-7198-43dc-8506-709986d6e1d3
Summary
Seeds a fresh v3-schema Colophon design system into
.agents/design/for the OpenClaw Windows Hub app, carrying over the design decisions from the earlier v1 seed (PR #962, closed/unmerged) and re-expressing the component patterns in the updated v3 schema. Branches offmain.This PR is design-system seeding only. It adds
.agents/design/*and the idempotent Colophon pointer block in repo-rootAGENTS.md. No application code, tests, or build files are modified.What's here
design.json— carried over from the v1 seed (tokens format is unchanged in v3): Fluent color tokens (each with itsresourceThemeResource key + light/dark/highContrast themes),authorityport targets, brand, typography, spacing, radii, shadows, principles. Preview hex is preview-only; shipping code binds the Fluentresourcekeys. Now carries 15 color tokens (12 from the v1 seed +control/controlLine/accentSubtlefor inputs/chat) and a WinAppCli entry in the portauthority(see below).principles.md— carried over verbatim from the v1 seed.components.jsonc— all 9 components rewritten to v3 (meta.version: 3): Button, Field, Card, Badge, ComposerPicker, ChatBubble, ChatComposer, ChatThread, ExampleScreen. Every raw-CSSattrs.stylestring is replaced with semantic, token-boundlayout/position/appearance. Every object node has a stable uniqueid. WinUI-provenance and Reactor-port notes are preserved; ExampleScreen uses a v3 freeform status board to exercise absolute positioning alongside Auto Layout.colophon.jsonc— new v3 presentation profile (schemaVersion: 1,extends: "colophon/default") mapping OpenClaw tokens to theme roles for light + dark, brand, navigation, and component template config.AGENTS.md— idempotent Colophon pointer block; em dashes removed so the repo doc validator (no em dashes in user-facing docs) passes.Chat components reconciled to the shipping Reactor UI (design data only)
The chat entries in
components.jsoncdescribe what the app actually ships today, so the design stays in sync with the implementation:SubtleFillColorTransparent), hoversubtleHover/ presssubtlePressed,mutedvalue text with a trailingmutedchevron,smradius, gap/padding tokens1/2. Opens a flyout of single-select options in-app (Reactor port note).control/controlLinewith a 12px margin; note documents the Send↔Stop toggle.accentSubtlewith a hover Copy; assistant bubble usessubtleHoverfill +controlLineborder with a Read-aloud footer andmax-width720.resourcekeys):control→ControlFillColorDefaultBrush,controlLine→ControlStrokeColorDefaultBrush,accentSubtle→AccentFillColorSecondaryBrush.WinAppCli in the port authority (design data)
Per the maintainer, XAML and Reactor now build/package through winapp (WinAppCli, https://github.com/microsoft/WinAppCli).
design.json'sauthoritygains atoolingdescriptor and atoolingSourceon the default WinUI 3 port and the Reactor chat override. This is design-system metadata about how the design ports to code; it changes no code. The design→codesyncSourcereferences (win-dev-skills / microsoft-ui-reactor) are unchanged.px → token approximations (worth a human eye)
Raw WinUI pixel padding snapped to the nearest 4px token, each recorded in the component
note: ButtonButtonPadding11,5,11,6 →3/1(MinWidth 100= port note); FieldTextControlThemePadding10,5,6,6 →2/1(MinHeight 32= port note); Card 16,12 →4/3(exact). Chat bubble/composermax-width/min-heightgrowth values have no token equivalent and remain Reactor port notes. The 3 input/chat tokens' preview hex are approximations of the real Fluent brushes; shipping code binds theresourcekeys, so the hex is preview-only.Required proof pools
none— this PR only adds framework-agnostic design-system data files under.agents/design/plus theAGENTS.mdpointer. No shipping UI, MCP, node, setup, pairing, or gateway code changes, so the app-behavior proof pools indocs/PROOF_POOLS.mddon't apply.Validation
Validated against the Colophon extension's own read-only validators (
componentsio.mjs,profileio.mjs,validate.mjs):components.jsoncparses atmeta.version: 3;validateComponentsDoc(doc, { tokens })passes (allappearancetoken refs, including the 3 new tokens, resolve againstdesign.json); all 9 componentsexpandInstancesuccessfully; guard confirms no raw"style"attrs remain.colophon.jsonc$schemamatchesPROFILE_SCHEMA_URL;validatePresentationProfilepasses.validateDesignDir('.agents/design')→ ok: true, 0 errors, 0 warnings.mainmerge-base, this branch changes only.agents/design/*andAGENTS.md(verified viagit diff --stat). No C#, test, or build files are touched, so repo build/test suites are not applicable to this change.Real behavior proof
The design system renders in the Colophon canvas from these files; the extension validators above exercise the same parse/validate/expand path the canvas uses. No runtime app behavior changes in this PR.
Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com