feat(desktop): let the status bar be hidden - #72960
Merged
Merged
Conversation
The bar is always-on chrome today. Hiding it is `⌘⇧S`, the ⌘K palette, or the bottom row of its own right-click menu — VS Code's set of doors, minus their unbound default (they ship `toggleStatusbarVisibility` with no keybinding and Hermes has no chord dispatcher for a `⌘K ⌘S` two-stroke). Hidden unmounts the bar rather than hiding it, so the 15s status poll and the per-turn readouts stop with it. Visibility persists per window profile and defaults on.
Contributor
૮ >ﻌ< ა ci reviewran on f4e042f ℹ️ InfoDesktop E2E visual evidence · View test artifacts · View job1 visual diff. inline evidence is publishing... |
The strips painted with `--theme-card-seed` — the raw, unmixed seed rather than a surface token — so they read as their own band beside the sidebar and titlebar, which share `--ui-bg-sidebar`. Fixed at the default in `PaneTab` rather than per strip. The right-rail preview strip never set the vars at all, so its inactive tabs fell through to the seed even though its container was already on the sidebar surface; correcting the fallback fixes that one for free and keeps the next strip from regressing. With the default right, the two zone strips no longer need to redeclare the var and paint the token directly.
OutThisLife
enabled auto-merge
July 27, 2026 23:03
randlee
pushed a commit
to randlee/hermes-agent
that referenced
this pull request
Aug 11, 2026
…atusbar-toggle feat(desktop): let the status bar be hidden
33hodl
pushed a commit
to 33hodl/hermes-agent
that referenced
this pull request
Aug 12, 2026
…atusbar-toggle feat(desktop): let the status bar be hidden
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The status bar is always-on chrome today. This makes it something you can put
away, defaulting on and remembering the choice per window profile.
Three doors, matching the set VS Code offers:
⌘⇧S(rebindable in the keybindspanel), the ⌘K palette, and a "Hide status bar" row at the bottom of the bar's
own right-click menu. The palette entry matters more than it looks — hiding the
bar removes the surface that would otherwise offer it back, so it's the
guaranteed way in. The context-menu row carries a live keybind hint for the same
reason, and that menu now renders even when no item opted into the existing
show/hide checkbox list.
On the keybinding: VS Code ships
workbench.action.toggleStatusbarVisibilitywith no default at all, because their ⌘K layout commands are two-stroke chords
and
⌘K ⌘Sis already Keyboard Shortcuts. Hermes has no chord dispatcher, sothis takes the nearest free single combo instead.
mod+shift+sis Cmd on macOSand Ctrl elsewhere, and collides with nothing on either platform — worth noting
that
canonicalizeCombofolds literalctrl+*bindings intomod+*off macOS,so a
ctrl+shift+selsewhere in the map would have collided on Windows/Linuxbut not on a Mac. There isn't one. It sits with the other
view.toggle*singles(
⌘B,⌘J,⌘G).Hidden unmounts the bar rather than hiding it with CSS, so its 15s status poll
and the per-turn readouts stop along with it.
Pane tab strips
Second commit, same surface-level theme. The pane tab strips painted with
--theme-card-seed— the raw, unmixed seed rather than a surface token — sothey read as their own band beside the sidebar and titlebar, which share
--ui-bg-sidebar.This is fixed at the default in
PaneTabrather than per strip, because theright-rail preview strip never set the vars at all: its container was already on
the sidebar surface while its inactive tabs fell through to the seed. Correcting
the fallback fixes that strip for free and keeps the next one from regressing.
With the default right, the two zone strips no longer need to redeclare the var
and paint the token directly.
Active tabs stay legible on the flattened strip — the horizontal ones keep the
2px
--theme-primaryunderline andtext-foreground, and the vertical rail'sactive tab still sits on the editor surface.
Test plan
npm run typecheckcleannpx eslintclean on changed filesnpx vitest run src/app/shell/statusbar-visibility.test.tsx src/components/ui/pane-tab.test.tsx— 13/13hgui: ⌘⇧S hides the bar and the workspace grows into the row; ⌘K "status bar" brings it back; right-click row shows the live hinthgui: pane header, collapsed vertical rail, and right-rail preview strip all read as one surface with the sidebar and titlebar