LearnNewsExamplesServices
Frontmatter
id15923
titleTear-out vessel renders its pane unstyled — the popout shell drops the workstation theme
stateClosed
labels
bugaicore
assigneesneo-opus-grace
createdAtJul 25, 2026, 6:37 PM
updatedAtJul 25, 2026, 11:32 PM
githubUrlhttps://github.com/neomjs/neo/issues/15923
authorneo-fable
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 25, 2026, 11:32 PM

Tear-out vessel renders its pane unstyled — the popout shell drops the workstation theme

neo-fable
neo-fable commented on Jul 25, 2026, 6:37 PM

Context

Operator glitch-review of the first film draft (v0 cut from take-14, film lane #15252#15912) called it directly: "popup window misses styling." The take-14 footage shows it unambiguously — the in-window metrics pane is the fully styled card (dark panel, LIVE badge, chart glyph, type hierarchy), while the SAME live pane inside its tear-out vessel renders as bare unstyled text lines ("LIVE METRICS / 99.9 / System Metrics / system envelope stableLIVE") on a default background. Worker-truth is intact (the pane is the same live instance — object-permanence assertions pass, the feed keeps streaming); only the vessel DOCUMENT's presentation layer is missing.

The Problem

The ?popout= vessel shell is a pure-pane-host: it deliberately owns no workspace document and hosts the traveling pane bare. But "bare of workspace chrome" must not mean "bare of THEME." A newborn vessel window is a fresh browser document — the workstation main window carries its theme class(es) (neo-theme-neo-dark at minimum) plus the app's SCSS on its own document, and whatever propagates that onto vessel windows is not doing so for the workstation's tear-out flow. Every publishable film take is blocked behind this: the tear-out is the film's money shot, and the vessel is the thing it births.

Not yet root-caused (deliberately): candidate layers, in the order I would falsify them —

  1. the vessel viewport/shell never applies a theme class to its body/root (dockdemo's ?popout= shell may apply themes via a path the workstation composition doesn't exercise);
  2. theme CSS files load per-window and the vessel document's stylesheet set is incomplete (dev-mode per-window CSS loading);
  3. DockVesselEmbodiment mounts the pane before/without the theme wrapper the pane's SCSS scopes under.

The Architectural Reality

  • apps/workstation/view/Viewport.mjs — the ?popout= vessel-shell mode (workstation side, shipped on PR #15840).
  • src/dashboard/DockVesselEmbodiment.mjs — carries the live pane into the vessel.
  • apps/workstation/view/Workspace.mjs setWorkspaceTheme — the main-window theme path (scene-1's flips); whatever it writes never reaches vessel documents.
  • Sibling precedent: dockdemo's popout shell + DemoB vessel flows (apps/dockdemo) — verify whether they exhibit the same gap or carry a theme-propagation step the workstation composition missed.
  • Evidence: take-14 footage frames (film lane production record; worker-truth green during the take — presentation-only defect).

The Fix

Falsify the three candidates in order; the likely shape is the vessel shell applying the host's CURRENT theme at embodiment time (and tracking subsequent theme changes — a theme flip while a vessel is open must reach every connected window, which is exactly the multi-window claim the film makes in its theme beat).

Acceptance Criteria

  • [L3-deferred — operator handoff needed] A workstation tear-out vessel renders its pane with full theme styling (visual parity with the in-window card), verified headed under the film profile.
  • A setWorkspaceTheme flip while a vessel is open restyles BOTH windows (worker-truth receipt + headed verification). (No longer L3-deferred: @neo-gpt-emmy showed the transition is observable in the existing two-window harness, so this was unfinished work rather than a sandbox ceiling. Fixed and witnessed in scene 2.)
  • Root cause named in the PR (which of the three layers, with the falsifying probe for the other two).
  • The five-beat spec's scene-2 legs gain a vessel-styling assertion (cheap DOM/class check on the vessel document — pixels stay the film's job, the class check is the regression tripwire).

Out of Scope

  • Cross-window docking wiring (conversion/arbitration/stack return) — #15906.
  • Film choreography and capture items (stage placement, cursor overlay, flicker audit) — film lane #15252 production record.

Related

#15252 (film lane), #15912 / PR #15922 (film profile — made this VISIBLE for the first time: E2E args never painted a frame, so no one had ever seen a vessel), #15906 (stage B consumes the same shell), PR #15840 (shipped the vessel shell).

Live latest-open sweep: checked latest 12 open at 2026-07-25T16:38Z, no equivalent. A2A in-flight sweep: current-hour traffic is wake/mailbox + review-queue threads, no vessel/styling claims.

Origin Session ID: 8e3ca9dd-427d-4c93-9054-edd660fda27b

Retrieval Hint: "vessel popout theme unstyled pane take-14 glitch review"