LearnNewsExamplesServices
Frontmatter
id19250
titleThe provisional vessel chrome renders its tab header at the stock height
stateClosed
labels
buggood first issueaidashboard
assigneesneo-fable
createdAtSep 26, 2026, 12:07 PM
updatedAtSep 26, 2026, 12:16 PM
githubUrlhttps://github.com/neomjs/neo/issues/19250
authorneo-fable
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtSep 26, 2026, 12:16 PM

The provisional vessel chrome renders its tab header at the stock height

Closed v13.2.0/archive-v13-2-0-chunk-23 buggood first issueaidashboard
neo-fable
neo-fable commented on Sep 26, 2026, 12:07 PM

Context

Operator's screen recording, 2026-09-26 11:56, at 00:03 and 00:12: the tear-out vessel during the drag shows a tall plain "Metrics" / "Commits" tab header, while the committed popup (00:10, 00:17) shows the compact dock tab header. Measured headless (ScratchVesselChromeNL, untracked): during the birth dwell the vessel's .neo-tab-header-toolbar is 49 px with a 48 px button; after the terminal the committed popup's toolbar is 33 px with a 32 px button. The chains differ in exactly the classes the dock projection adds:

  • pre-terminal: div.neo-tab-container-plain.workstation-vessel-provisional-chrome.neo-tab-container.neo-top under .workstation-viewport.workstation-popout-host
  • committed: div.neo-tab-container-plain.neo-dashboard-dock-tabs.neo-tab-container.neo-tab-container-inline.neo-top under .neo-dashboard-dock-edge-zone.neo-dashboard under .workstation-vessel-dock-host

The Problem

apps/workstation/view/VesselWorkspace.mjs resolveVesselStageTarget (~:836) creates the provisional chrome as a bare DockTabContainer with cls: ['workstation-vessel-provisional-chrome'] and no ui. The dock projection (src/dashboard/dock/projection/LayoutAdapter.mjs ~:1262-1268) projects every dock tab strip with cls: ['neo-dashboard-dock-tabs'] and ui: 'inline' — "the compact, flush variant" (src/dashboard/dock/interaction/TabContainer.mjs:46) — whose .neo-tab-container-inline > .neo-tab-header-toolbar rules (resources/scss/src/tab/Container.scss:16,80) give the 32 px header. Without the variant the stock theme's min-width: var(--cmp-button-height) (48 px) floor wins. The pre-terminal vessel is meant to look like the window it becomes (#19210); it looks like a different component for the whole drag.

Design authority

#19210: "A born vessel shows its staged pane in dock chrome from the first frame" — the chrome is defined as the committed projection's; the operator's recording shows the two still differ. No record sentence changes.

The Fix

resolveVesselStageTarget: create the provisional chrome with ui: 'inline' and cls: ['neo-dashboard-dock-tabs', 'workstation-vessel-provisional-chrome'] (the projection's own pair, so the popup's Viewport.scss rules — --tab-header-inline-background-image, the toolbar ground — apply as they do after the terminal). If the compact height also depends on the .neo-dashboard-dock-edge-zone / .workstation-vessel-dock-host ancestors rather than the container's classes alone, the stage target wraps the chrome in the same host classes; the measurement decides.

Acceptance Criteria

  • AC-1 (unit, red-first): Workspace.spec.mjs › "a vessel's stage target is a provisional tab chrome…" also asserts ui === 'inline' and the neo-dashboard-dock-tabs class on the created chrome.
  • AC-2 (headless, receipt in the PR): the pre-terminal vessel's toolbar and button heights equal the committed popup's (33 / 32 px) on the same tree.
  • AC-3 (CI): unit/apps/workstation green.

Out of Scope

  • #19248 (the target-side proxy is the tab header) — the other window.
  • #19186 (the park's z-order under a real drag).

Related

#19210 / PR #19214 (provisional chrome), #19248, #19186.

Live latest-open sweep: latest 20 open issues at 2026-09-26T10:06:07Z, no equivalent. A2A sweep (last 10 at 10:04Z): none on this surface. Memory sweep: the recording's frame reads. Own-assignment sweep: #19248, #19245, #19186 — none covers it.

Origin Session ID: 1dd49b26-0f42-462c-b0bc-ef28f26d9da5 Retrieval Hint: "provisional vessel chrome ui inline neo-dashboard-dock-tabs 48px header"

🪢 Mnemosyne (Claude Fable 5.1 · Claude Code) · session 1dd49b26-0f42-462c-b0bc-ef28f26d9da5

tobiu referenced in commit 08a84ef - "fix(workstation): the provisional vessel chrome is the projection's compact inline tab strip (#19250) (#19251) on Sep 26, 2026, 12:16 PM
tobiu closed this issue on Sep 26, 2026, 12:16 PM