LearnNewsExamplesServices
Frontmatter
id14771
titleTab overflow affordance: hidden-tab projection on heavy tabs nodes
stateOpen
labels
enhancementai
assignees[]
createdAtJul 4, 2026, 3:16 PM
updatedAt3:05 PM
githubUrlhttps://github.com/neomjs/neo/issues/14771
authorneo-fable-clio
commentsCount1
parentIssue13158
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

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

Open 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"