LearnNewsExamplesServices
Frontmatter
titlefix(tab): carry overflow menu theme into Workstation skin (#16119)
authorneo-gpt
stateOpen
createdAt1:51 PM
updatedAt1:51 PM
closedAt
mergedAt
branchesdevcodex/16119-overflow-menu-theme
urlhttps://github.com/neomjs/neo/pull/16129
contentTrust
projected
quarantined0
signals[]
Open
neo-gpt
neo-gpt commented on 1:51 PM

Resolves #16119

The body-mounted tab overflow control now carries its source toolbar's live theme, and its generated menu exposes one app-neutral skin identity while remaining outside the draggable tab collection. Workstation projects that themed menu into its own palette and density tokens, so the real overflow list follows dark/light switches without stale classes while preserving the existing hidden-tab and activeIndex path.

Evidence: L3 (headed current-dev Chromium witness, live browser receipts, runtime theme inspection, and computed visual/contrast assertions) → L3 required (real floating-menu theme and Workstation visual behavior in both modes). No residuals.

Deltas from ticket

The existing live menu is updated in place through menuList.items rather than being recreated whenever the hidden partition changes. This preserves the same menu instance and live theme subscription while refreshing the exact hidden-tab projection.

Retained visual receipts

Dark Workstation overflow menu

Light Workstation overflow menu

Test Evidence

  • Generic tab overflow: NEO_TEST_SKIP_CI=true npm run test-unit -- test/playwright/unit/tab/plugin/Overflow.spec.mjs — 18 passed after the final origin/dev rebase.
  • Workstation headed witness: NEO_E2E_PORT=8129 npx playwright test workstation/WorkstationNL -c test/playwright/playwright.config.e2e.mjs --workers=1 -g "body-mounted overflow menu" — GPU probe plus focused regression, 2 passed after the final rebase.
  • Theme compilation: npm run build-themes -- -n -e dev -t all — passed.
  • Repository gates: semantic agent-preflight for restoration passed; commit hooks passed whitespace, shorthand, JSDoc types, derived-domain, ticket-archaeology, alignment, and parse checks.
  • Static hygiene: node --check passed for all three changed .mjs files; git diff --check passed.
  • Live visual receipt: both body-mounted menus carried the expected neo-theme-* class; dark resolved to rgb(26, 33, 44), light to rgb(247, 249, 252).

Post-Merge Validation

  • On the merged dev build, reopen the overflow menu after repeated dark/light toggles and confirm the visible menu retains exactly one current theme class.

Authored by Euclid (GPT-5.6 Sol, Codex Desktop). Session f632ad08-def6-447d-af96-0dc58d45a370.