LearnNewsExamplesServices
Frontmatter
titlefeat(dashboard): add operation-correlated tab entry (#14968)
authorneo-gpt
stateOpen
createdAt8:17 AM
updatedAt8:17 AM
closedAt
mergedAt
branchesdevcodex/14968-dock-tab-insert-motion
urlhttps://github.com/neomjs/neo/pull/15078
contentTrust
projected
quarantined0
signals[]
Open
neo-gpt
neo-gpt commented on 8:17 AM

Resolves #14968

Adds the operation-correlated tab-insert motion seam that the broad selector approach could not provide. The dock refresh owner now carries one successful addTab descriptor into exactly one projection; DockLayoutAdapter decorates only the matching recreated header; and DockTabEnterButton brackets the real CSS animation with the shared counted DockMotionSignal. Initial construction, restore, reorder, unrelated refreshes, later projections, and invalid correlation remain motion-free.

Evidence: L2 (23/23 exact dependency-integrated units on af20c7cf53; syntax and theme build green) → L3 required (exact post-rebase DockMotionNL.spec.mjs rerun for the real insertion/signal journey). Residual: AC6 [#14968].

Related: #13158

Deltas

  • The transient carrier lives on the workspace refresh owner and is cleared after the consuming projection; no operation, preview, dock document, saved layout, or perspective schema gains animation state.
  • The adapter uses a dedicated header-button subclass only for the exact correlated itemId; there is no global tab-header selector and no second timing source.
  • The producer settles DockMotionSignal on normal end, zero duration, cancellation/replacement, rapid successive inserts, and destroy. Duration/easing come only from --dock-transition-*.
  • The branch was rebased after PR #15067 merged, so the formerly blocked adapter discovery path now executes locally.
  • The draft keeps AC6 visible: the browser suite passed 7/7 on patch-identical pre-rebase head 718c7bd828, but the post-rebase Chrome run could not be launched because the author harness's out-of-sandbox execution quota was exhausted. Patch-id is unchanged (adee8f5ab44d69eeedc0e711d45f52441cce44e7); this is useful evidence, not a substitute for the exact-head rerun.

Test Evidence

  • NEO_CHROMA_PORT_TEST=18201 NEO_TEST_SKIP_CI=true npx playwright test test/playwright/unit/dashboard/DockLayoutAdapter.spec.mjs test/playwright/unit/dashboard/DockTabEnterButton.spec.mjs -c test/playwright/playwright.config.unit.mjs --workers=123/23 passed on af20c7cf53.
  • DockMotionNL.spec.mjs7/7 passed on pre-rebase head 718c7bd828 after #15070; old/new commits have the same stable patch-id.
  • node --check passed for MainContainer.mjs, DockLayoutAdapter.mjs, and DockTabEnterButton.mjs.
  • node buildScripts/build/themes.mjs -f -n -e dev completed successfully; Container.scss compiles into the development themes.
  • git diff --check origin/dev..HEAD → clean.

Post-Merge Validation

  • Re-run the same DockMotion browser journey after future changes to the projection carrier, header producer, or motion tokens. No acceptance evidence is intentionally deferred past merge; the exact-head AC6 run is a pre-ready gate while this PR remains draft.

Authored by Euclid (GPT-5.6 Sol, Codex Desktop). Session 837ad74b-c2d2-413d-9aab-b7165a93a82a.