Context
Slice 1 of #13247 ("Add a standalone docking example for the dashboard dock-zone layout system", surfaced by @tobiu 2026-06-14). #13247 has five ACs spanning a static render foundation and an interactive layer (splitter drag-resize, edge-zone drop-targets, named-layout / persistence / pin polish). This slice delivers the render foundation; #13247 stays open for the interactive completion (its own next slice).
The Problem
The dashboard dock-zone layout system shipped across ~15+ PRs, but Neo.dashboard.DockLayoutAdapter.project — the model → projected container flow — has no standalone runtime consumer. Its only consumer is apps/agentos/view/DockPreview.mjs (a preview view inside the early-PoC AgentOS app, slated for replacement), and even that does not drive the full project() path. So project() has, until now, only ever run under unit assertions (DockLayoutAdapter.spec.mjs) — never in a live, mounted app.
The Fix
A standalone examples/dashboard/dock/ example that composes a representative DockZoneModel document and renders it through DockLayoutAdapter.project into a live, mounted Viewport — the first runtime exercise of the projection path.
Acceptance Criteria
Out of Scope (→ the interactive slice, tracked under #13247)
- Interactive splitter drag-resize / the
resizeSplit commit loop (onDockZoneDocumentChange re-projection wiring). (#13247 AC3)
- Edge-zone drop-targets (drag-to-dock). (part of #13247 AC2 / the interactive layer)
- Named-layout switching, layout persistence, pin state. (#13247 AC4)
Related
- Parent: #13247. Docking epic: #13158 (QT-parity docking polish). Strategies anchor: #13030.
- Dock machinery:
src/dashboard/{DockZoneModel,DockLayoutAdapter,DockSplitter,Container,Panel}.mjs. API reference: test/playwright/unit/dashboard/DockLayoutAdapter.spec.mjs.
Authored by @neo-opus-vega (Claude Opus 4.8, Claude Code). Origin Session ID: a0bc6b23-78c5-4bd7-b944-9db5e236f42d.
Context
Slice 1 of #13247 ("Add a standalone docking example for the dashboard dock-zone layout system", surfaced by @tobiu 2026-06-14). #13247 has five ACs spanning a static render foundation and an interactive layer (splitter drag-resize, edge-zone drop-targets, named-layout / persistence / pin polish). This slice delivers the render foundation; #13247 stays open for the interactive completion (its own next slice).
The Problem
The dashboard dock-zone layout system shipped across ~15+ PRs, but
Neo.dashboard.DockLayoutAdapter.project— themodel → projected containerflow — has no standalone runtime consumer. Its only consumer isapps/agentos/view/DockPreview.mjs(a preview view inside the early-PoC AgentOS app, slated for replacement), and even that does not drive the fullproject()path. Soproject()has, until now, only ever run under unit assertions (DockLayoutAdapter.spec.mjs) — never in a live, mounted app.The Fix
A standalone
examples/dashboard/dock/example that composes a representativeDockZoneModeldocument and renders it throughDockLayoutAdapter.projectinto a live, mounted Viewport — the first runtime exercise of the projection path.Acceptance Criteria
examples/dashboard/dock/(index.html+app.mjs+neo-config.json+MainContainer), mirroring theexamples/dashboard/sibling structure. (#13247 AC1)DockZoneModeldocument — a horizontal split (2-tab main zone + vertical side-split of two single-tab zones) over ≥3 panels — and renders it viaDockLayoutAdapter.project(model, {resolveComponentRef}). (#13247 AC2, static portion)src/dashboard/— the example consumes the existing public API only. (#13247 AC5)Out of Scope (→ the interactive slice, tracked under #13247)
resizeSplitcommit loop (onDockZoneDocumentChangere-projection wiring). (#13247 AC3)Related
src/dashboard/{DockZoneModel,DockLayoutAdapter,DockSplitter,Container,Panel}.mjs. API reference:test/playwright/unit/dashboard/DockLayoutAdapter.spec.mjs.Authored by @neo-opus-vega (Claude Opus 4.8, Claude Code). Origin Session ID: a0bc6b23-78c5-4bd7-b944-9db5e236f42d.