LearnNewsExamplesServices
Frontmatter
id13247
titleAdd a standalone docking example for the dashboard dock-zone layout system
stateClosed
labels
enhancement
assigneesneo-opus-vega
createdAtJun 14, 2026, 7:25 PM
updatedAt12:59 AM
githubUrlhttps://github.com/neomjs/neo/issues/13247
authorneo-opus-vega
commentsCount5
parentIssue13158
subIssues
13278 Standalone docking example (Slice 2): interactive splitter resize
subIssuesCompleted1
subIssuesTotal1
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt12:59 AM

Add a standalone docking example for the dashboard dock-zone layout system

Closed Backlog/active-chunk-2 enhancement
neo-opus-vega
neo-opus-vega commented on Jun 14, 2026, 7:25 PM

Context

The dashboard dock-zone layout system has shipped substantial machinery across ~15+ PRs — Neo.dashboard.DockZoneModel (the dock-zone document schema), Neo.dashboard.DockLayoutAdapter (projects a model → a container of hbox/vbox/tabs + splitter affordances + edge-zones), Neo.dashboard.DockSplitter (interactive resize), plus split-tab layouts (#13107), preview state (#13087), drag-preview affordances (#13109), the resizeSplit operation (#13160), splitter drag-wiring (#13225), named-layout helpers (#13175), pin state (#13168), persistence (#13152), and the src/-relocation of the model (#13142).

But there is no standalone example. The only consumer is apps/agentos/view/DockPreview.mjs — inside the early-PoC AgentOS app (slated for replacement by the Agent Harness, #13012). So the dock system has no isolated surface to demo, exercise, or visually verify independent of that app.

The Problem

A maturing, ~15-PR subsystem with no standalone example means:

  • No showcase — nothing to point a human or agent at to see the dock / split / tab / resize behavior working.
  • No isolated exercise surface — the only way to drive it is through the whole AgentOS app (heavy, and being replaced).
  • No canonical reference — the model → DockLayoutAdapter.project → rendered container flow lives only in DockLayoutAdapter.spec.mjs (unit assertions) + the AgentOS view; a runnable example is the missing didactic + visual-verification surface.

The Architectural Reality

  • examples/dashboard/ already exists — the standalone example belongs at examples/dashboard/dock/, mirroring the sibling example structure (index.html + app.mjs + a view/viewport).
  • The example drives the public API directly: build a representative DockZoneModel document (the documented edge-zone root shape — center/right zones, split orientation + sizes, tab containers; see DockLayoutAdapter.spec.mjs), render it via DockLayoutAdapter.project(model, {resolveComponentRef}), and mount the resulting container.
  • The interactive layer (DockSplitter resize, the resizeSplit operation, named-layout switching, pin, persist) is exercised by user interaction in the running example.

The Fix

A new standalone examples/dashboard/dock/ example app that:

  1. Composes a representative dock-zone model (split + tabs + edge-zones over a few panels).
  2. Renders it through DockLayoutAdapter into a live, mounted dashboard.
  3. Demonstrates the shipped interactive features: splitter drag-resize, tab/split zones, and (where wired) named-layout switching + layout persistence + pin.

Acceptance Criteria

  • A standalone example exists at examples/dashboard/dock/ (index.html + app.mjs + view), mirroring the existing examples/dashboard/ sibling structure + registered wherever Neo examples are indexed.
  • It builds a representative DockZoneModel document (split + tab + edge-zone nodes over ≥3 panels) and renders it via DockLayoutAdapter.project.
  • The interactive splitter drag-resize works in the running example (the resizeSplit path).
  • At least one polish feature is demonstrated / toggleable: named-layout switching, layout persistence, or pin state (whichever are wired + demoable).
  • No new dock feature code in src/dashboard/ — the example consumes the existing public API only (any defect surfaced is filed separately).

Out of Scope

  • New docking features / behavior changes in src/dashboard/* — this is an example of the existing logic (any gap found is a separate ticket).
  • The Agent Harness app itself (apps/#13012); this is a focused examples/ demo.
  • Auto-hide / perspectives / grouped-drag if not yet shipped — those are #13158 polish leaves; the example demonstrates what exists.

Related

  • Docking epic: #13158 (QT-parity docking polish). Strategies anchor: #13030 (dock/split/tab layouts).
  • Dock machinery: src/dashboard/{DockZoneModel,DockLayoutAdapter,DockSplitter,Container,Panel}.mjs; API reference: test/playwright/unit/dashboard/DockLayoutAdapter.spec.mjs + DockSplitter.spec.mjs.
  • Existing (non-standalone) consumer: apps/agentos/view/DockPreview.mjs.
  • Surfaced by @tobiu (2026-06-14): many dock PRs landed, no standalone example.

Authored by @neo-opus-vega (Claude Opus 4.8, Claude Code). Origin Session ID: 4cc428e3-cf36-4324-8646-1b96cb23fa4a.

tobiu referenced in commit b2595c7 - "feat(examples): standalone dock-zone layout example (Slice 1: static render) (#13253) (#13255) on Jun 14, 2026, 10:01 PM
tobiu referenced in commit f253d49 - "feat(examples): wire interactive dock-splitter resize + enable NL (#13278) (#13279) on Jun 15, 2026, 2:48 AM