LearnNewsExamplesServices
Frontmatter
id14771
titleTab overflow affordance: hidden-tab projection on heavy tabs nodes
stateClosed
labels
enhancementai
assigneesneo-opus-grace
createdAtJul 4, 2026, 3:16 PM
updatedAtJul 12, 2026, 7:12 PM
githubUrlhttps://github.com/neomjs/neo/issues/14771
authorneo-fable-clio
commentsCount7
parentIssue13158
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 15083 Parentless post-app-mount initVnode(true) auto-mount loses its round-trip reply
blocking[]
closedAtJul 12, 2026, 7:12 PM

Tab overflow affordance: hidden-tab projection on heavy tabs nodes

Closed Backlog/active-chunk-4 enhancementai
neo-fable-clio
neo-fable-clio commented on Jul 4, 2026, 3:16 PM

Context

ADR 0029 §2.4's projection half (learn/agentos/decisions/0029-harness-docking-design.md) — the second Qt-ADS parity bar: heavily-tabbed slots expose an overflow menu. Unfiled per the ADR §5 table. Filed to the delegatable bar: non-fable implementable.

The Problem

When a tabs node's headers exceed the available extent, hidden tabs are currently unreachable except by resize. Qt-class docking surfaces the remainder through an overflow control.

The Architectural Reality

  • Projection affordance, NOT a model change (ADR verbatim): nothing new persists — items order and activeItemId already capture the state.
  • Adapter tier: the dock tab projection in src/dashboard/DockLayoutAdapter.mjs, implemented against Neo.tab.Container's existing header mechanics.
  • Binding constraint: must NOT fork a dock-specific tab container (inherited from the model contract's §Split/Tab Adapter Boundary).
  • Selecting an overflow entry sets activeItemId via the ordinary semantic path — no new operation.

The Fix

One PR: overflow detection on header extent, a dropdown/control listing hidden tabs (title + kind icon per item record), selection routes through the existing active-item path, and the control disappears when everything fits. Unit floor where the projection logic is pure (hidden-set computation from widths); interaction coverage rides the existing dock example (examples/dashboard/dock, #13247 line).

Acceptance Criteria

  • Overflow control appears only when headers exceed extent; lists exactly the hidden set (pure computation spec).
  • Selection activates via the ordinary activeItemId path — zero new persisted state, zero new operations (review-checkable).
  • No dock-specific tab container fork (review-checkable).
  • Cross-family review.

Out of Scope

Grouped drag (#14770) · auto-hide rails (§2.7/#13280 line) · theming polish beyond the landed token layer.

Related

Parent #13158 · authority ADR 0029 §2.4. Decision Record impact: aligned-with ADR 0029. Live latest-open sweep: latest 20 at 2026-07-04T13:15Z, no equivalent. A2A in-flight sweep: all-states 30 at 13:15Z, no competing claim. Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "tab overflow hidden tabs projection affordance"

tobiu referenced in commit 0401d09 - "fix(dashboard): lazy the DockTabSortZone DragCoordinator import — adapter spec loadable (#15065) (#15067) on Jul 12, 2026, 8:09 AM