Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
21bc4ae
feat(dashboards): add native Dashboards page with board widgets
bkudiess Oct 27, 2026
5c9e960
Merge main into native Dashboards for validation
bkudiess Oct 27, 2026
ee9a20f
test(dashboards): verify native rendering and isolated website state
bkudiess Oct 27, 2026
99a89e4
fix(testing): attempt every owned fixture process cleanup
bkudiess Oct 27, 2026
a45f4e2
test(dashboards): scan the visible disconnected recovery action
bkudiess Oct 27, 2026
2a7d3ac
test(dashboards): keep fixture plot ink visible in contrast themes
bkudiess Oct 28, 2026
5f91c1d
test(dashboards): capture a working website widget in the board
bkudiess Oct 28, 2026
acbfc30
fix(dashboards): harden widget recovery and fixture cleanup
bkudiess Oct 28, 2026
a10a2db
Merge main into native Dashboards
bkudiess Nov 5, 2026
66e1315
feat(dashboards): simplify native reader and pin by default
bkudiess Nov 6, 2026
d9c1e19
fix(dashboards): refine native reader and integrate adaptive page shell
bkudiess Nov 7, 2026
d66b061
Refine native dashboard reader hero and capture diagnostics
bkudiess Nov 8, 2026
9c4ee0e
Merge pinned main into native Dashboards
bkudiess Nov 8, 2026
810f5e8
fix(dashboards): use stock controls and simplify reader proof
bkudiess Nov 9, 2026
4851f73
Merge pinned main into native Dashboards
bkudiess Nov 9, 2026
66e556a
fix(dashboards): resolve reader review findings
bkudiess Nov 9, 2026
686260d
Merge pinned main into native Dashboards
roboclaw-bot Nov 9, 2026
e14d1ae
test(settings): retain default pin in delayed snapshot expectations
roboclaw-bot Nov 9, 2026
b4426a2
fix(dashboards): bound rendering after late widget fetch recovery
roboclaw-bot Nov 9, 2026
72a255e
fix(dashboards): restore gallery return focus and current native proo…
roboclaw-bot Nov 9, 2026
4abd9ae
test(dashboards): qualify owned native input and widget viewport proof
roboclaw-bot Nov 10, 2026
6f7b3bd
fix(dashboards): expose native widget groups to automation
roboclaw-bot Nov 10, 2026
4c973eb
test(dashboards): await native lifecycle before proof
roboclaw-bot Nov 10, 2026
658a3aa
Merge observed main into Dashboards readiness branch
roboclaw-bot Nov 10, 2026
ea6760c
test(dashboards): restore fixture sizing and measure monitor bounds
roboclaw-bot Nov 10, 2026
ceda270
Merge selected Systems main into native Dashboards
roboclaw-bot Nov 10, 2026
475eb33
test(dashboards): qualify native report peer viewport
roboclaw-bot Nov 10, 2026
f24163e
Merge pinned main account-menu and chat fixes into Dashboards
bkudiess Nov 10, 2026
2ae9e3e
refactor(dashboards): trim unrelated proposal changes
bkudiess Nov 10, 2026
12edbce
Merge pinned chat parity main and preserve Dashboard fixture proof
bkudiess Nov 10, 2026
5ee3164
test(dashboards): stabilize native report geometry and widget discovery
bkudiess Nov 10, 2026
50da27c
fix(dashboards): settle overflow focus and native viewport proof
bkudiess Nov 10, 2026
3427fe2
test(ci): restore borrowed setup lifetime and bound fixture budget
bkudiess Nov 10, 2026
50ee6e2
test(dashboards): query native pane chrome outside embedded content
bkudiess Nov 10, 2026
660a2eb
test(ci): qualify Systems scroll reset and observe reader timeouts
bkudiess Nov 10, 2026
43fe809
Merge pinned Usage main into native Dashboards
bkudiess Nov 10, 2026
b1e1e6f
fix(dashboards): fence unfinished HTML across connection changes
bkudiess Nov 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .agents/skills/openclaw-testing/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,18 +193,21 @@ Windows desktop, and emits inventory-bound evidence. CI runs the same
accessibility category through its own prebuilt test-lane command.

For deterministic real-app chat and navigation behavior, build the exact app and
use the fixture. Runtime regressions require both Debug and production-shaped,
use the fixture on an authorized exclusive interactive desktop. The complete
fixture UI selection includes owned foreground wheel input, explicitly enabled
with `-NativeInputProof`; its exact opt-in, foreground and injected-event guards
remain mandatory. Runtime regressions require both Debug and production-shaped,
non-Dev Release runs:

```powershell
.\build.ps1
$debugApp = '.\src\OpenClaw.Tray.WinUI\bin\Debug\net10.0-windows10.0.22621.0\win-x64\OpenClaw.Tray.WinUI.exe'
.\scripts\test-gateway-fixture.ps1 -AppPath $debugApp
.\scripts\test-gateway-fixture.ps1 -AppPath $debugApp -NativeInputProof

.\build.ps1 -Project WinUI -Configuration Release
$releaseApp = '.\src\OpenClaw.Tray.WinUI\bin\Release\net10.0-windows10.0.22621.0\win-x64\OpenClaw.Tray.WinUI.exe'
.\scripts\test-gateway-fixture.ps1 `
-AppPath $releaseApp -Configuration Release -Screenshots
-AppPath $releaseApp -Configuration Release -Screenshots -NativeInputProof
```

Use `win-arm64` on a native ARM64 host. The fixture proves the real app,
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -985,7 +985,9 @@ jobs:
./scripts/test-gateway-fixture.ps1
-AppPath .\src\OpenClaw.Tray.WinUI\bin\Debug\net10.0-windows10.0.22621.0\win-x64\OpenClaw.Tray.WinUI.exe
-ArtifactsDirectory .\TestResults\GatewayFixture
-TestTimeoutSeconds 1200
-Screenshots
-NativeInputProof
-NoBuild

- name: Run latest stable profile compatibility
Expand Down
15 changes: 15 additions & 0 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -1093,6 +1093,21 @@ The [120-DPI comparison](.agents/design/reference/chat-comparison.png) preserves

The Colophon catalog now uses the actual geometry, semantic alpha brushes and Fluent glyphs. It is **not a verified pixel-identical native renderer**: Mica is wallpaper/activation-dependent; this host's native UI Automation reports Segoe UI Variable while Chromium resolves the requested family to Segoe UI; and text rasterization/layout rounding differ. The installed schema also lacks responsive breakpoints, row-hover opacity, gradient elevation borders and native input/flyout behavior. Fixed-size references must not become production layout code. High-contrast preview swatches are resource simulations, not evidence of Windows HC mode.

## Dashboards expressive extension

The standalone Dashboards page (`src/OpenClaw.Tray.WinUI/Dashboards/`) is the one place this system spends color on identity, at the product owner's direction: dashboards are visual workspaces, and a gallery of identical gray cards reads as a file list. The extension adds color without weakening the core rules.

- **Placement.** Dashboards lives beside Chat as a pinnable page, not in the Settings section list. Scopes without saved pin choices show it after Home by default; custom lists and stored explicit empty lists remain unchanged. Older versions erased empty choices, so those missing entries receive the default on upgrade; see [Native Dashboards](docs/DASHBOARDS.md#scope). The page retains the Workspace sidebar and single Back/Forward history, including session deep links.
- **Palette.** Six categorical hues (blue, teal, purple, pumpkin, berry, green) are theme resources in `Themes/DashboardResources.xaml`: `DashboardHue{n}Brush` (strong, at least 4.5:1 on cards in light and dark), `DashboardHue{n}SubtleBrush` (tinted tiles) and `DashboardHue{n}WashBrush` (card heading and metric backdrops), plus `DashboardOnHueBrush` for text on a strong fill. Light uses Fluent-style shades, dark uses tints. High contrast maps every hue to `SystemColorHighlightColor` and every wash to `SystemColorWindowColor`, so identity never carries meaning on its own.
- **What hues mean.** A gallery card's hue is stable for its owning agent id (identity band); an author's hue is stable for the author id (board-header avatar). Widget kinds have fixed hues: HTML blue, report purple, website teal, MCP app pumpkin, other plugins green. Hues never encode state: live, approval, error and disconnected keep `positive`, `warning` and `critical`, and actions keep the system `accent`.
- **Hero.** Gallery and board use the shared `Presentation/Adapters/PageHero.cs` card, with a system-accent wash contained within its border, not a full-page backdrop. The gallery title is Dashboards. Its answer line combines the agent picker and latest reported board update; its caption names the agent to ask for changes. Board view names the board and shows author/update metadata plus the reported Live tag. No summary tiles, decorative agent chip or Needs you section belongs here. The hero, tabs and content scroll together. Narrow actions reflow below the copy. Shared geometry and motion remain owned by `PageHero`, not a Dashboard-specific clone.
- **Gallery.** Static cards show a 48-DIP, radius-8 identity tile with initials from up to two title words on an agent-tinted band (80 DIP, or 64 in dense inventories). Titles and summaries lead the Fresh today feature, without a cover. Summaries wrap within 440 DIP and use "No summary available" when absent. Author/update metadata and the optional Live tag share a footer with a right-aligned "Open board" label. Chat is a bordered, labeled sibling action on its own trailing row, never nested inside the card button. A Fresh today shelf requires at least five boards and at least two updates in the current local day; filters appear above five. Returning from a board restores its exact opening card, preserving search/sort and loaded card count, or focuses the named gallery heading if the board disappeared. The board header uses chat, refresh, and More options icons. Back belongs to the title bar.
- **Results.** Dashboards and Usage share the neutral flyout toast surface: `FlyoutPresenterBackground`, `FlyoutBorderThemeBrush`, a 1px stroke, `ThemeShadow`, radius 8, padding 16x12, maximum width 480, bottom-center with margin 20. Only the icon carries severity color. Passive/error results dismiss after four seconds; errors use assertive announcements.
- **Responsive geometry.** `Presentation/PageResponsiveLayout.cs` is the canonical host-width contract: Wide 1000+, Medium 720+, Narrow below 720 (minimum supported host 480), inner content maximum 1200, padding 32/20, gaps 8/12/16. Dashboards uses explicit rows/columns, 240-DIP-minimum board tiles, and layout cells outside motion decorators. Mast actions move below text in Narrow and secondary browser actions collapse to More options; filters and Fresh today stack deterministically. Do not infer the tier from window width or lower the shell minimum to manufacture a Narrow capture.
- **Motion.** Cards rise 4px on hover (160ms decelerate), cards and widgets fade and rise on entry with a 45ms stagger, and the Live dot breathes over 1.8s. Loading tiles are static. Every loop and entrance is skipped when Windows animations are off (`UseReducedMotion`).
- **Charts and tables.** Native report charts use the system accent with the peak at full strength and other bars at 55%, rounded tops and soft gridlines. Supplied numeric values appear above bars, without six-digit rounding; full values remain available in tooltips and automation names. Metrics get a hue rail on a matching wash, cycling from purple. The current strict report contract has no column types, date-axis metadata or illustrative-trend flag: table strings stay left-aligned, and Windows neither guesses numeric/currency columns nor invents chart metadata. HTML widget colors remain owned by widget content. Widget kind is in the accessible name, not a visible chip; granted access remains a visible badge.

Do not reuse this palette outside Dashboards without updating this section, and keep it out of chat, setup and settings surfaces.
## Systems page

Machine, worker and connected-app card lists use spacing token `2`
Expand Down
Loading
Loading