Context
The standalone Workstation document already contains two split nodes (split-main and split-right). Source and live inspection prove that dock layouts do bake real splitters into projection:
DockLayoutAdapter.createSplitterAffordance() emits one Neo.dashboard.DockSplitter per split boundary, wired to resizeSplit;
- the live Workstation contains exactly two splitter components, matching the two one-boundary split nodes;
- horizontal splitter: 6px wide, full-height,
cursor: ew-resize;
- vertical splitter: 6px high, full-width,
cursor: ns-resize.
They are functionally present but visually absent. Neural Link get_computed_styles reports both splitters as transparent with border: 0, border-radius: 0, box-shadow: none, and opacity 1. A user only discovers them after accidentally hovering the six-pixel hit target.
The same computed-style pass exposed a second dock-chrome mismatch around every pane:
| Surface |
Border |
Radius |
Background |
| Workstation grid pane |
1px solid #262f3d |
8px |
Workstation panel |
| wrapping tab body |
generic 1px solid #454b42 |
0px |
opaque #0e0f0d |
The square gray tab-body frame surrounds and clips the rounded pane, nullifying the pane's app-owned boundary language.
Live latest-open plus all-state A2A sweep at 2026-07-14T08:13:00.271Z: no equivalent ticket or overlapping claim found. Exact/all-state GitHub and Knowledge Base searches found the docking epic and historical contracts, but no Workstation splitter-visibility / tab-body-chrome leaf.
The Problem
Workstation proves docking semantics without communicating the core resize affordance. The layout contains correct, draggable splitters, yet their only visible state is a cursor change over a 6px transparent strip. The generic tab-body border then adds a competing square gray frame around app-owned rounded panes.
For a Qt-grade flagship this is not cosmetic trivia: the user cannot discover that areas resize, and the chrome hierarchy makes panes look embedded in an unrelated generic tab skin.
The Architectural Reality
src/dashboard/DockLayoutAdapter.mjs:163 is already the source of truth for projecting split boundaries; no model or adapter feature is missing.
src/dashboard/DockSplitter.mjs owns drag-to-resizeSplit behavior and the 6px interaction extent.
resources/scss/src/dashboard/Container.scss:91 intentionally owns only non-shrinking/touch behavior and orientation cursors; it does not paint a global splitter.
resources/scss/src/tab/Container.scss:30 applies the generic tab-body border token.
resources/scss/src/apps/workstation/Workspace.scss owns the flagship palette and is the narrow owner for visible splitter and tab-body integration.
apps/workstation/tour/denseWorkstation.mjs currently demonstrates splitNode and addTab but no resizeSplit, despite the flagship demo ticket's shipped-operation bar.
The Fix
- Paint Workstation's already-projected splitter components as clear resize affordances using app tokens: a restrained resting track/handle plus stronger hover/active feedback in both themes. Preserve the real 6px draggable component and orientation cursors.
- Remove the generic opaque/square tab-body frame inside Workstation (transparent background, no competing generic border) so each pane's own border and radius are the visible boundary.
- Add a deterministic
resizeSplit beat to the Workstation tour, with a visible size change and a stable final topology. The beat must use the real semantic operation, not directly set flex styles.
- Add a user-drag whitebox witness over one real splitter: sizes and DOM extents change, pane/store identity remains stable, and the splitter count still equals the document boundary count.
- Pin the computed style contract for splitters, tab bodies, and rounded pane boundaries in dark and light skins.
Acceptance Criteria
Out of Scope
Changing the dock model or adapter projection contract · globally painting all Neo dashboard splitters · changing generic tab-container theme tokens · redesigning tabs/overflow · touch-specific splitter sizing.
Avoided Traps
- Do not add duplicate decorative DOM beside the real splitter; style the component already baked into projection.
- Do not prove resizing by directly changing child flex values; commit through
resizeSplit.
- Do not solve the pane-frame mismatch by removing the pane's own radius/border.
- Do not introduce hardcoded colors outside the Workstation token layer.
Related
Origin Session ID: adddb25d-fc36-4b08-b9a3-3a62a108cda1
Retrieval Hint: Workstation two live DockSplitter transparent 6px cursor resizeSplit tour tab body #454b42 radius 0 grid #262f3d radius 8
Context
The standalone Workstation document already contains two split nodes (
split-mainandsplit-right). Source and live inspection prove that dock layouts do bake real splitters into projection:DockLayoutAdapter.createSplitterAffordance()emits oneNeo.dashboard.DockSplitterper split boundary, wired toresizeSplit;cursor: ew-resize;cursor: ns-resize.They are functionally present but visually absent. Neural Link
get_computed_stylesreports both splitters as transparent withborder: 0,border-radius: 0,box-shadow: none, and opacity 1. A user only discovers them after accidentally hovering the six-pixel hit target.The same computed-style pass exposed a second dock-chrome mismatch around every pane:
1px solid #262f3d1px solid #454b42#0e0f0dThe square gray tab-body frame surrounds and clips the rounded pane, nullifying the pane's app-owned boundary language.
Live latest-open plus all-state A2A sweep at 2026-07-14T08:13:00.271Z: no equivalent ticket or overlapping claim found. Exact/all-state GitHub and Knowledge Base searches found the docking epic and historical contracts, but no Workstation splitter-visibility / tab-body-chrome leaf.
The Problem
Workstation proves docking semantics without communicating the core resize affordance. The layout contains correct, draggable splitters, yet their only visible state is a cursor change over a 6px transparent strip. The generic tab-body border then adds a competing square gray frame around app-owned rounded panes.
For a Qt-grade flagship this is not cosmetic trivia: the user cannot discover that areas resize, and the chrome hierarchy makes panes look embedded in an unrelated generic tab skin.
The Architectural Reality
src/dashboard/DockLayoutAdapter.mjs:163is already the source of truth for projecting split boundaries; no model or adapter feature is missing.src/dashboard/DockSplitter.mjsowns drag-to-resizeSplitbehavior and the 6px interaction extent.resources/scss/src/dashboard/Container.scss:91intentionally owns only non-shrinking/touch behavior and orientation cursors; it does not paint a global splitter.resources/scss/src/tab/Container.scss:30applies the generic tab-body border token.resources/scss/src/apps/workstation/Workspace.scssowns the flagship palette and is the narrow owner for visible splitter and tab-body integration.apps/workstation/tour/denseWorkstation.mjscurrently demonstratessplitNodeandaddTabbut noresizeSplit, despite the flagship demo ticket's shipped-operation bar.The Fix
resizeSplitbeat to the Workstation tour, with a visible size change and a stable final topology. The beat must use the real semantic operation, not directly set flex styles.Acceptance Criteria
Neo.dashboard.DockSplitter; the opening document therefore has exactly two.ew-resize/ns-resizecursors.resizeSplit, changes adjacent DOM extents, and preserves pane plus StoreresizeSplitthrough the semantic operation path and remains deterministic across consecutive runs.Out of Scope
Changing the dock model or adapter projection contract · globally painting all Neo dashboard splitters · changing generic tab-container theme tokens · redesigning tabs/overflow · touch-specific splitter sizing.
Avoided Traps
resizeSplit.Related
Origin Session ID: adddb25d-fc36-4b08-b9a3-3a62a108cda1
Retrieval Hint:
Workstation two live DockSplitter transparent 6px cursor resizeSplit tour tab body #454b42 radius 0 grid #262f3d radius 8