Skip to content

fix(desktop): hide hover close buttons on Sessions and Bots tabs - #89551

Closed
calvinnwq wants to merge 1 commit into
NousResearch:mainfrom
calvinnwq:fix/desktop-persistent-navigation-tab-close
Closed

fix(desktop): hide hover close buttons on Sessions and Bots tabs#89551
calvinnwq wants to merge 1 commit into
NousResearch:mainfrom
calvinnwq:fix/desktop-persistent-navigation-tab-close

Conversation

@calvinnwq

Copy link
Copy Markdown
Contributor

Summary

  • Hide the hover × close affordance on the persistent SESSIONS | BOTS navigation tabs.
  • Keep the generic hover close button enabled for ordinary closeable pane tabs.
  • Preserve the existing close handlers, middle/Cmd-click gestures, context-menu behavior, tab switching, and dragging.

Fixes #89546.

Root cause

PR #89428 introduced the hover close button in the shared PaneTab primitive for every closeable horizontal pane tab:

Sessions and Bots were already modeled as closeable horizontal panes, so they inherited the button. The original PR changed only the shared primitive and did not define a distinction between disposable content tabs and persistent navigation panes.

Related earlier implementations are #69392 and #89243.

Approach

Add an explicit showCloseButton pane policy:

  • PaneTab.showCloseButton defaults to true.
  • The tree renderer forwards the pane contribution's policy to PaneTab.
  • The core Sessions pane and bundled Bots pane set showCloseButton: false.
  • The existing onClose handler remains attached, so this PR changes only the visible hover affordance rather than silently changing close routing.

This avoids hard-coding pane IDs in the shared renderer and preserves the generic behavior for ordinary content tabs.

Tests

  • NODE_ENV=test npx vitest run src/components/ui/pane-tab.test.tsx — 10 passed.
  • NODE_ENV=test npm run test:ui — 526 files / 4,879 tests passed.
  • npm run check:lint — typecheck passed; lint passed with existing warnings only.
  • npx prettier --check on affected TypeScript files — passed.
  • node --check apps/desktop/src/plugins/hermes-bots/plugin.js — passed.

Scope and risk

Low-risk UI-only change. No layout persistence, pane-close routing, or session state behavior is changed. The unrelated explicit close/recovery paths remain available.

Add a pane-level opt-out for the hover close button and apply it to the persistent Sessions and Bots navigation panes. Keep their existing close handlers and other tab behavior intact.\n\nFixes NousResearch#89546
@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/desktop Electron desktop app (apps/desktop/*) labels Aug 18, 2026
teknium1 added a commit that referenced this pull request Aug 19, 2026
…tures, right-click + Cmd-K toggles

Builds on #89551 (@calvinnwq, cherry-picked): his showCloseButton flag
hid the hover X; this completes the model so standing chrome can never
be closed at all, only shown/hidden (#89546).

- hideOnly pane chrome (sessions + Bots): no hover X, no middle/meta
  click close, no Close verbs in the tab menu, excluded from
  close-others/right/all sweeps
- zone right-click menu gains Show/Hide rows for the strip's chrome
  tabs (Hide bots / Show sessions, localized in 6 locales)
- Cmd-K palette: auto-registered "Toggle <tab> tab" rows for every
  hideOnly pane, on-screen truth semantics, plugin panes included via
  registry subscription
- hides persist across launches (survive the enforced dock re-adopt);
  reveal intent and Layout reset clear them
- last-visible-tab guard: hiding the zone's last shown tab is refused
  with a toast, so the strip can never become an empty dead zone
@teknium1

Copy link
Copy Markdown
Contributor

Merged via #89572 — your commit was cherry-picked as the base of that PR, so your authorship is preserved in main's history (a807d18, rebase-merged). Thanks @calvinnwq!

On top of your ✕ suppression, #89572 also removed the remaining close gestures on Sessions/Bots (middle-click/⌘-click and the tab-menu Close verbs) and added the show/hide replacement surface: right-click Show/Hide rows on the zone menu, ⌘K "Toggle sessions/bots tab" rows, persistence across launches, and a last-visible-tab guard.

Closing this one since it's fully contained in the merged PR.

@teknium1 teknium1 closed this Aug 19, 2026
lisajlau pushed a commit to lisajlau/hermes-agent that referenced this pull request Aug 20, 2026
…tures, right-click + Cmd-K toggles

Builds on NousResearch#89551 (@calvinnwq, cherry-picked): his showCloseButton flag
hid the hover X; this completes the model so standing chrome can never
be closed at all, only shown/hidden (NousResearch#89546).

- hideOnly pane chrome (sessions + Bots): no hover X, no middle/meta
  click close, no Close verbs in the tab menu, excluded from
  close-others/right/all sweeps
- zone right-click menu gains Show/Hide rows for the strip's chrome
  tabs (Hide bots / Show sessions, localized in 6 locales)
- Cmd-K palette: auto-registered "Toggle <tab> tab" rows for every
  hideOnly pane, on-screen truth semantics, plugin panes included via
  registry subscription
- hides persist across launches (survive the enforced dock re-adopt);
  reveal intent and Layout reset clear them
- last-visible-tab guard: hiding the zone's last shown tab is refused
  with a toast, so the strip can never become an empty dead zone
prmartinow pushed a commit to prmartinow/hermes-agent that referenced this pull request Aug 26, 2026
…tures, right-click + Cmd-K toggles

Builds on NousResearch#89551 (@calvinnwq, cherry-picked): his showCloseButton flag
hid the hover X; this completes the model so standing chrome can never
be closed at all, only shown/hidden (NousResearch#89546).

- hideOnly pane chrome (sessions + Bots): no hover X, no middle/meta
  click close, no Close verbs in the tab menu, excluded from
  close-others/right/all sweeps
- zone right-click menu gains Show/Hide rows for the strip's chrome
  tabs (Hide bots / Show sessions, localized in 6 locales)
- Cmd-K palette: auto-registered "Toggle <tab> tab" rows for every
  hideOnly pane, on-screen truth semantics, plugin panes included via
  registry subscription
- hides persist across launches (survive the enforced dock re-adopt);
  reveal intent and Layout reset clear them
- last-visible-tab guard: hiding the zone's last shown tab is refused
  with a toast, so the strip can never become an empty dead zone
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/desktop Electron desktop app (apps/desktop/*) P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Desktop: hide hover close buttons on persistent SESSIONS | BOTS navigation tabs

3 participants