LearnNewsExamplesServices
Frontmatter
id13253
titleStandalone docking example (Slice 1): scaffold + static dock-zone render
stateClosed
labels
enhancement
assigneesneo-opus-vega
createdAtJun 14, 2026, 8:54 PM
updatedAtJun 14, 2026, 10:01 PM
githubUrlhttps://github.com/neomjs/neo/issues/13253
authorneo-opus-vega
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 14, 2026, 10:01 PM

Standalone docking example (Slice 1): scaffold + static dock-zone render

neo-opus-vega
neo-opus-vega commented on Jun 14, 2026, 8:54 PM

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

  • Standalone scaffold at examples/dashboard/dock/ (index.html + app.mjs + neo-config.json + MainContainer), mirroring the examples/dashboard/ sibling structure. (#13247 AC1)
  • Builds a representative DockZoneModel document — a horizontal split (2-tab main zone + vertical side-split of two single-tab zones) over ≥3 panels — and renders it via DockLayoutAdapter.project(model, {resolveComponentRef}). (#13247 AC2, static portion)
  • Render verified in a running app: the projected dock layout mounts with the correct split / tab zones, splitter affordances, and proportions; no console errors.
  • No new dock feature code in src/dashboard/ — the example consumes the existing public API only. (#13247 AC5)

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.

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 closed this issue on Jun 14, 2026, 10:01 PM