LearnNewsExamplesServices
Frontmatter
id19210
titleA born vessel shows its staged pane in dock chrome from the first frame, filling the window
stateClosed
labels
enhancementaidashboard
assigneesneo-fable
createdAtSep 25, 2026, 1:00 PM
updatedAtSep 25, 2026, 2:17 PM
githubUrlhttps://github.com/neomjs/neo/issues/19210
authorneo-fable
commentsCount0
parentIssue15252
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtSep 25, 2026, 2:17 PM

A born vessel shows its staged pane in dock chrome from the first frame, filling the window

Closed v13.2.0/archive-v13-2-0-chunk-23 enhancementaidashboard
neo-fable
neo-fable commented on Sep 25, 2026, 1:00 PM

Context

Observed by @tobiu on 2026-09-25 (~10:50Z) on the film-stage display while the film's morph beat played at PR #19208's head: the vessel that comes back "now has content, but content does not fill the space — probably the missing tab header height; no headers get shown". The per-frame sampler of that run agrees: the morph's vessel holds the live Metrics pane as the viewport's first child at 100 % width and 50 % height, with no .neo-tab-header-toolbar, for the whole 2.7 s hold. The tear-out vessel shows the same picture for its first half second (the pane at 100 %, then 50 %, then a 1 % collapse at 454–521 ms, then the committed projection's dock host at 100 % from 549 ms).

The Problem

A pre-terminal vessel is a real OS window the viewer is meant to read as "that is a window" — the film holds it for 1.5 s on purpose. What it shows today is a bare pane at its own height in an otherwise empty viewport: no tab strip, no title, the lower half of the window empty. The committed vessel looks right only because the terminal projection replaces that picture. The morph never commits, so it shows the bare picture from birth to retirement; the tear-out shows it as a jump at commit.

The Architectural Reality

  • The connect-first stage moves the SAME live pane into the vessel before the terminal (src/dashboard/dock/window/VesselEmbodiment.mjs, stage): target.add(pane) where the Workstation's target is the popout host's viewport (apps/workstation/view/VesselWorkspace.mjs, resolveTarget: windowId => Neo.apps[windowId]?.mainView). That viewport lays out with {ntype: 'vbox', align: 'stretch'} (apps/workstation/view/Viewport.mjs), so the pane's width is imposed and its height is its own.
  • The pane skin says who owns the box: .workstation-placeholder { container: workstation-pane / size } — "the dock (or a tear-out vessel) imposes the pane's box; it never auto-sizes from content" (resources/scss/src/apps/workstation/Viewport.scss). Pre-terminal, nobody imposes it.
  • The vessel's own document (createVesselWorkspaceDocument) holds an empty tabs node until the terminal transfers the item, so the ordinary projection cannot draw a tab for a pane the model does not hold yet — and the zero-mutation re-entry guard (documentsUnchanged) forbids putting it there.

The Fix

Give the pre-terminal stage a dock-shaped host instead of the bare viewport, without touching the model:

  1. The stage target becomes a provisional vessel chrome inside the popout host — a tab header with the item's title (the pane already carries dockItemId; the title comes from the same source the committed projection uses) and a body that imposes the pane's box (flex fill) — created by the host's resolveTarget for the window and retired with the stage (restore) or promoted into the real projection (promote).
  2. The committed projection reuses that chrome's position so the commit does not re-lay out the pane (the 100 → 50 → 1 → 100 % trace disappears).
  3. Nothing pre-terminal writes the vessel's document; the re-entry stays byte-identical.

A smaller cut that only fills the box (a flex child in the vbox) removes the empty half but not the missing header; the operator's read names the header, so the provisional chrome is the deliverable and the fill is its side effect.

Acceptance Criteria

  • AC-1 In the film's morph beat, headed on the film-stage display (one run), the born vessel shows a tab header carrying the item's title and the pane filling the body within 300 ms of the platform creating the window, and keeps it until the re-entry retires the vessel.
  • AC-2 The tear-out vessel shows the same chrome before its commit, and the commit does not re-lay out the pane: the per-frame fill trace of the vessel's first child stays at 100 % height from the stage to the committed projection.
  • AC-3 A re-entered gesture stays zero-mutation with the chrome in place (the five-beat morph arms and the film witness stay green headless), and the five-beat morph arm asserts the header's presence inside the hold.
  • AC-4 The unit arms for the embodiment's stage / restore / promote cover the provisional chrome's creation and retirement, red first.

Out of Scope

The returned items' ownership after a whole-stack return (#19188 / PR #19208, the reason the morph's vessel was empty before); the parked vessel's stand-in mask (#19186); the film's screenplay and pacing.

Related

#15252 (the film epic; the take waits on this) · #19188 / PR #19208 (the morph's vessel now receives its pane) · #19126 (closed: the opening's beats) · #19181 (the whole-stack native return) · #19186 · #19187

Live latest-open sweep: checked the latest 20 open issues at 2026-09-25T11:00:01Z; no equivalent. A2A in-flight sweep: no [lane-claim] / [lane-intent] on this surface in the last hour (my own claim on #19186 / #19188 is the neighbour, not this). Memory Core sweep (query_raw_memories on the symptom): no prior decision on the pre-terminal vessel's presentation. Own-assignment sweep: #19188, #19186, #19101, #15252 — none covers it.

unowned-rationale: filed from the operator's sighting while PR #19208 is in review; I take it after #19186 unless a dock-window seat claims it first.

Origin Session ID: 4c0a5550-17ba-4752-9852-846afa537c86 Retrieval Hint: query_raw_memories("morph vessel bare pane half height no tab header pre-terminal stage popout host vbox")

🪢 Mnemosyne (Claude Fable 5.1 · Claude Code)

tobiu referenced in commit bc70dfb - "feat(workstation): a born vessel shows its staged pane in dock chrome from the first frame (#19210) (#19212)" on Sep 25, 2026, 2:17 PM
tobiu closed this issue on Sep 25, 2026, 2:17 PM