Seed design system for OpenClaw Windows Hub - #962
Conversation
Add .agents/design/ (design.json, components.jsx, principles.md) with tokens derived from the WinUI 3/XAML surfaces. The app themes off Windows Fluent system resources, so color/type/radius tokens map to Fluent (SystemAccentColor, Segoe UI Variable, Cascadia Mono) rather than a bespoke palette. No application code changed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Refine control padding to WinUI defaults (Button 11,5,11,6 with 100px min-width; Field TextControlThemePadding 10,5,6,6, min-height 32; Card Gallery padding 16,12) and add reusable chat components grounded in the native timeline and composer: ChatBubble, ChatComposer, ChatThread. Add a 'bubble' (16px) radius token mirroring OpenClawChatTimeline CornerRadius and point ChatBubble at var(--radius-bubble). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Distinguish user vs assistant bubbles and enrich the assistant footer to match the native timeline (OpenClawChatTimeline): - Add a 36x36 circular assistant avatar (subtle fill + 1px line border, top-aligned, 8px gap) left of the agent bubble; user bubbles show none, mirroring showUserAvatar=false. Sparkle glyph stands in for the app logo. - Give every bubble a muted timestamp footer; assistant footer also shows the context-usage readout (ChatUsageFormatter's used/context (pct%)) with a subtle inline Copy affordance right of the usage text. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Mirror the GitHub Copilot composer layout: left cluster = Add, model picker, reasoning-effort picker; right cluster = mic + Send. Only Send carries the accent; every other control is subtle chrome. Give the icon buttons and inline pickers WinUI SubtleButtonStyle interaction states — SubtleFillColorSecondary on hover, the lighter SubtleFillColorTertiary on press, glyph/label darkening to primary text, 120ms ease-out. Add subtleHover / subtlePressed tokens (Fluent subtle fills) so no hex is hard-coded in the component. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Codex review: found issues before merge. Reviewed August 23, 2026, 4:06 PM ET / 20:06 UTC. ClawSweeper reviewWhat this changesThe PR adds 474 lines of non-shipping design tokens, JSONC component examples, and design guidance under Merge readiness⛔ Blocked by patch quality or review findings - 10 items remain Keep open for maintainer direction: this collaborator-authored draft adds a new agent-facing design authority, but its catalog and proof no longer match the current Reactor chat implementation. Priority: P2 Review scores
Verification
Live VerificationCommand: Result: FAIL (failed) — execution before step 1 Assertions:
How this fits togetherThe design catalog is intended to guide agents and a design canvas before UI work is ported into the Windows tray application. The shipping chat surface is now a native WinUI application using Microsoft.UI.Reactor, which consumes connection, session, attachment, and send-state data. flowchart LR
A[Design intent] --> B[Design catalog files]
B --> C[Agents and design canvas]
C --> D[Porting guidance]
D --> E[WinUI and Reactor chat]
E --> F[Windows Hub users]
Decision needed
Why: This choice creates a new repository-wide authority and maintenance obligation; source inspection cannot determine whether maintainers want to support that product workflow. Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Either keep native WinUI/Reactor source as the sole canonical contract and defer this catalog, or explicitly adopt a derived-only catalog that links to current owners, declares incomplete examples, and has repository-owned validation. Do we have a high-confidence way to reproduce the issue? Yes for the documentation defect: the current head contains JSONC while its guidance and PR proof still reference the retired JSX/Babel path; source inspection also shows current main uses Reactor chat owners absent from the examples. Is this the best way to solve the issue? No: a standalone source-of-truth catalog is not yet the safest approach because it conflicts with the current native implementation's ownership and lacks a maintained synchronization contract. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against ccd64bbb7d68. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (44 earlier review cycles; latest 8 shown)
|
Rename the design system's brand from the product name (OpenClaw Windows Hub) to Windows Fluent UI for OpenClaw, reflecting its basis in Windows Fluent design conventions. Clarify that it is the design system for the OpenClaw Windows Hub app in design.json and principles.md. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The CSS/JSX scanner finds no files in this XAML repo; every token was derived by manual inspection of the WinUI 3 XAML and C# surfaces. Update meta.updatedBy and meta.note to reflect that accurately. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🤖 Copilot assistant note, posted on Scott's behalf — this is not Scott writing personally. I was initially confused about the intended authority boundary here. I inferred that the JSX was a non-shipping visual reference derived from the native WinUI app, but the current wording sends mixed signals:
Because this is a native WinUI application, I suggest making the boundary explicit for future agents and contributors:
It would also help to qualify or remove “source of truth,” and name who is responsible for synchronizing these derived examples after native UI changes. That clarity would have prevented my initial misreading and should keep future bots from treating the JSX as a parallel product authority. |
Design files are the source of truth for design (framework-agnostic); components.jsx is design intent for the canvas preview, not shipping code. Record how the design ships via authority.port targets: - default: Native WinUI 3 / C# (Windows Fluent), ported via win-dev-skills - chat surface (ChatBubble, ChatComposer, ChatThread): Reactor (microsoft-ui-reactor); no dedicated porting agent yet (WIP) Updates meta.note, components.jsx header, and principles.md to match. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Pushed an update that reworks the authority framing in response to @scott's note about The seed now uses Colophon's new port-target model instead of a flat source-of-truth claim:
So the boundary Scott asked for is now explicit: native XAML/C# (and Reactor for chat) is what ships; the JSX/design files are the upstream design intent that gets ported into it, and the |
This should remain draft. The design-system idea is useful, but the current artifacts are not yet safe as authoritative guidance for a native WinUI app. The main issues from the paired review:
Recommended framing: keep native XAML/C# behavior canonical; use this catalog to explain visual intent and reusable patterns, with semantic resource mappings and explicit coverage limits. That would preserve the value of the design artifacts without teaching future agents to hard-code colors or omit native functionality. |
The seed adopted the port-target authority model, but the latest colophon validator now requires more once a port is set. Add the missing pieces so design.json passes cleanly (0 errors / 0 warnings): - authority.owner + authority.syncProcess (required when a port exists) - per-color `resource` (WinUI Fluent ThemeResource brush keys) so agents bind system brushes instead of the preview-only hex - per-color `themes` (dark + highContrast) for dark/high-contrast previews, matching the brand's stated "never hard-code hex that breaks in dark or high-contrast" principle Keeps the existing port authoritySource (Native WinUI 3 / Windows Fluent), win-dev-skills syncSource/helperAgent, and the chat -> Reactor portOverride. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Colophon replaced the pseudocode-React components.jsx format with a structured, framework-agnostic components.jsonc element tree (rendered by a pure JSON->DOM interpreter, no React/Babel). Port the seed's components over faithfully: - Button, Field, Card, Badge, ChatBubble, ChatComposer, ChatThread, ExampleScreen translated to the element-tree schema at their rest state, keeping the ds-* classes, CSS-variable styling, WinUI-derived metrics, and SVG glyphs (send/mic/add/copy/chevron/ sparkle) intact. ComposerPicker factored out as a reusable component. - Interactive hover/press JS (not expressible in the static scene graph) is dropped; the preview shows the documented rest state. Validates clean (0 errors / 0 warnings); all prototypes.jsonc component references resolve. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Closing stale parallel design-authority work. The catalog guidance is obsolete relative to the current native UI and should not remain an alternate source of truth. |
Seeds a design system under
.agents/design/for the OpenClaw Windows Hub (WinUI 3 tray app), named Windows Fluent UI for OpenClaw. No application code is changed — this only adds files under.agents/design/.Built with Colophon
Authored and previewed with the Colophon Copilot plugin — an experimental design-system canvas that treats
.agents/design/as the source of truth and rendersdesign.json+components.jsxlive (and feeds them back to Copilot when it builds UI). The tokens here were seeded from the app's own WinUI/Fluent surfaces and refined in the canvas.What's included
Chat components
OpenClawChatTimelinemetrics.Tokens of note
bubble(16px) matching the native chat bubble corner radius.subtleHover/subtlePressedfor subtle/transparent controls (Fluent SubtleFillColorSecondary/Tertiary).Validation
new Functionpipeline.Stacked work
A follow-up branch applies the
ChatComposerpattern to the real app chat UI (stacked on this branch): karkarl#1.Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com