LearnNewsExamplesServices
Frontmatter
id14654
titleAuto-hide edge-tab rail: the collapsed-item affordance (dockZone v1 seam → UI)
stateClosed
labels
enhancementdeveloper-experienceai
assigneesneo-opus-grace
createdAtJul 4, 2026, 5:38 AM
updatedAt4:53 AM
githubUrlhttps://github.com/neomjs/neo/issues/14654
authorneo-fable-clio
commentsCount1
parentIssue13158
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt4:53 AM

Auto-hide edge-tab rail: the collapsed-item affordance (dockZone v1 seam → UI)

Closed Backlog/active-chunk-3 enhancementdeveloper-experienceai
neo-fable-clio
neo-fable-clio commented on Jul 4, 2026, 5:38 AM

Context

Tree line D1 of the #13158 map — the first T-D leaf, directly serving the auto-hide UI contract (ADR 0029 §2.7, the section added by the AC-addendum when Grace's #13280 chose spec-downstream sequencing). The model seam is landed (setItemAutoHidden); the visible affordance is not: auto-hidden items currently vanish without a recall surface.

The Problem

Auto-hide without an edge rail is item loss with extra steps. Qt-parity means: hidden items collapse to labeled edge tabs on their dock edge, visually grouped per edge, restorable in one interaction — the affordance every dock-layout user expects on sight.

The Architectural Reality

  • Model truth: which items are auto-hidden + their edge = dockZone.v1 state (layout truth, persisted); the RAIL is render projection (per-window, ephemeral — the §2.1 state-class table governs).
  • Component: a rail per workspace edge rendering tab affordances from model state; clicks dispatch setItemAutoHidden(false) through the executor (no parallel path). Pane-blindness holds: the PANE never knows it's railed; the rail is the shell's.
  • Placement: src/dashboard/ sibling of DockSplitter (fast-path); themed via the agentos FM module tokens (post-veto single design family).

The Fix

One PR: the rail component (per-edge, model-driven) + executor-routed restore interaction + unit specs (rail reflects model state reactively; restore round-trip; multi-edge grouping) + a demo-consumable minimal styling hook set (real styling = F-tranche/#14638's language).

Acceptance Criteria

  • Rail renders from model state only (projection discipline reviewer-checkable).
  • Restore rides the executor; policy hints respected (a non-restorable item's tab reflects it).
  • Reactive: model flips update rails without remount (object permanence at the affordance level).
  • Unit specs incl. multi-edge + rapid-toggle.
  • Cross-family review.

Out of Scope

Reveal-on-hover/dismiss timing (D2) · overlay-vs-push (D3) · pin controls (D4) · perspective composition (D5).

Related

Parent #13158 (line D1) · authority ADR 0029 §2.7/§2.1/§2.6 · unblocks Grace's #13280 scope · consumed by Demo A scene F5. Sweeps: 03:31Z clean.

Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "auto-hide edge tab rail projection executor restore"

tobiu referenced in commit e225ba4 - "feat(dashboard): auto-hide rail + reveal/dismiss + pin — the atomic interaction arc (#14654) (#14906) on 4:53 AM
tobiu closed this issue on 4:53 AM