Files
kandev/docs/specs/canvases/system-design/canvas-host-chrome.md
T
2026-09-20 11:33:30 +01:00

59 lines
2.6 KiB
Markdown

---
status: draft
system: canvases
requirements:
- REQ-CANVASES-AGENT-WEB-APPS-006
- REQ-CANVASES-AGENT-WEB-APPS-007
---
# Canvas host chrome design
## Purpose and boundaries
Canvases owns its host presentation and recovery. UI owns reusable toolbar
geometry. The runtime lifecycle and authentication remain unchanged.
## Requirement mapping
| Criteria | Design section |
| --- | --- |
| 006.10, 006.11 | Single canvas host header |
| 006.1-.6, 007.1-.3, 007.5-.6 | Responsive composition and state preservation below |
## Single canvas host header
For AC-CANVASES-AGENT-WEB-APPS-006.10/.11, give `CanvasHostRoute` an explicit
embedded presentation prop from `CanvasContent` in `dockview-panel-content.tsx`.
The direct caller in `apps/web/src/canvas-route.tsx` retains standalone behavior.
Embedded mode uses the existing shared panel header; standalone mode retains
`PageShell` navigation. Do not shrink PageTopbar globally to fix a panel.
Remove the separate `CanvasHostHeader` status row from `CanvasHostBody`. Move
its phone action trigger into the one remaining header, keeping the existing
`MobileCanvasActions` drawer and picker reachable. Preserve the title, release,
share, promotion and edit callbacks. Use compact/overflow presentation for narrow
embedded panels, with the shared [toolbar design](../../ui/system-design/panel-toolbars.md).
Keep loading and blocking-state text in the body exactly once. Ready renders
application content and a visually hidden polite announcement. A nonblocking
connection warning can use an inline header status without adding another row.
Do not remove runtime state transitions, the startup handshake, timeout, Retry,
or release actions. Update tests that locate the removed `canvas-host-state`
row to assert the surviving state presentation and accessible announcement.
The full-height phone route keeps a single content scroll owner and the inset
actions drawer. Derive remaining viewport space from the actual page header;
remove assumptions that subtract a second header. Preserve safe-area handling
and at least 44px action targets. Header restructuring must not remount the
runtime when actions, status, or viewport width change.
Delivery and browser coverage are in
[work order 03](../../../plans/canvas-same-origin-auth/task-03-panel-toolbars.md).
## Verification
Work order 03 defines component and browser evidence for desktop Dockview,
standalone navigation, phone actions, state announcements, and Retry. Runtime
startup and authentication checks remain in work orders 01 and 02.
No backend, persistence, permission, or observability changes are introduced.