Skip to content

fix(cli): status bar no longer stays hidden after resize during idle - #49105

Merged
teknium1 merged 1 commit into
mainfrom
fix/cli-status-bar-stuck-suppressed
Jun 19, 2026
Merged

fix(cli): status bar no longer stays hidden after resize during idle#49105
teknium1 merged 1 commit into
mainfrom
fix/cli-status-bar-stuck-suppressed

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

The classic CLI status bar no longer vanishes for the rest of a session after a terminal resize. _recover_after_resize now schedules a debounced timer that clears the post-resize suppression once the reflow settles, so the bottom chrome returns on its own during idle.

Root cause: any terminal reflow (SIGWINCH from a tmux pane change, SSH window restore, font zoom) set _status_bar_suppressed_after_resize = True, but the flag was only cleared on the next submitted user input. Resize, then sit idle, and the dynamic status bar + input separators rendered at height 0 on every repaint — even with the refresh_interval clock ticking — so the bar stayed gone until you typed and hit enter.

This is the deeper bug behind the "status bar disappears after a while" reports, separate from the #45592/#48309 refresh-interval default.

Changes

  • cli.py: _recover_after_resize schedules _schedule_status_bar_unsuppress (debounced ~0.35s) which clears the flag and repaints. Fails open — any scheduling error clears the flag immediately. New _status_bar_unsuppress_timer init.
  • tests/cli/test_cli_status_bar.py: regression tests for self-clear during idle (no input) and resize-storm debounce; updated stale docstring.

Validation

Before After
Resize then idle bar hidden rest of session bar returns ~0.35s after reflow, no keystroke
Resize storm n/a debounced — repaints once after it stops
tests/cli/test_cli_status_bar.py 47/47 pass
E2E (real HermesCLI) flag self-clears during idle, invalidate() fires, rule height 0→1

The next-submit clear at the input loop stays as a fast path; nothing about the duplicate-bar protection (#19280, #22976) changes — the suppression still covers the reflow window, it just no longer waits for input to end.

Infographic

status-bar-stuck-hidden-fixed

The classic CLI status bar could vanish for the rest of a session: any
terminal reflow (SIGWINCH from a tmux pane change, SSH window restore, font
zoom) set _status_bar_suppressed_after_resize=True, but the flag was ONLY
cleared on the next *submitted* user input. Resize then sit idle and the
bottom chrome rendered at height 0 on every repaint — even with the
refresh clock ticking — so the bar was gone until you typed and hit enter.

Fix: _recover_after_resize now schedules a debounced unsuppress timer that
clears the flag and repaints once the reflow settles (~0.35s), so the bar
returns on its own during idle. The next-submit clear stays as a fast path.
Fails open: any error in scheduling clears the flag immediately rather than
leaving the bar stuck hidden.
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: fix/cli-status-bar-stuck-suppressed vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 11085 on HEAD, 11085 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5806 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@daimon-nous daimon-nous Bot added type/bug Something isn't working comp/cli CLI entry point, hermes_cli/, setup wizard comp/tui Terminal UI (ui-tui/ + tui_gateway/) P2 Medium — degraded but workaround exists labels Jun 19, 2026
@teknium1
teknium1 merged commit 1b04e4e into main Jun 19, 2026
35 checks passed
@teknium1
teknium1 deleted the fix/cli-status-bar-stuck-suppressed branch June 19, 2026 14:54
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
…ousResearch#49105)

The classic CLI status bar could vanish for the rest of a session: any
terminal reflow (SIGWINCH from a tmux pane change, SSH window restore, font
zoom) set _status_bar_suppressed_after_resize=True, but the flag was ONLY
cleared on the next *submitted* user input. Resize then sit idle and the
bottom chrome rendered at height 0 on every repaint — even with the
refresh clock ticking — so the bar was gone until you typed and hit enter.

Fix: _recover_after_resize now schedules a debounced unsuppress timer that
clears the flag and repaints once the reflow settles (~0.35s), so the bar
returns on its own during idle. The next-submit clear stays as a fast path.
Fails open: any error in scheduling clears the flag immediately rather than
leaving the bar stuck hidden.
habarmc1223-sudo pushed a commit to habarmc1223-sudo/hermes-agent-fluxmem that referenced this pull request Jul 8, 2026
…ousResearch#49105)

The classic CLI status bar could vanish for the rest of a session: any
terminal reflow (SIGWINCH from a tmux pane change, SSH window restore, font
zoom) set _status_bar_suppressed_after_resize=True, but the flag was ONLY
cleared on the next *submitted* user input. Resize then sit idle and the
bottom chrome rendered at height 0 on every repaint — even with the
refresh clock ticking — so the bar was gone until you typed and hit enter.

Fix: _recover_after_resize now schedules a debounced unsuppress timer that
clears the flag and repaints once the reflow settles (~0.35s), so the bar
returns on its own during idle. The next-submit clear stays as a fast path.
Fails open: any error in scheduling clears the flag immediately rather than
leaving the bar stuck hidden.
santhreal pushed a commit to santhreal/hermes-agent that referenced this pull request Jul 13, 2026
…ousResearch#49105)

The classic CLI status bar could vanish for the rest of a session: any
terminal reflow (SIGWINCH from a tmux pane change, SSH window restore, font
zoom) set _status_bar_suppressed_after_resize=True, but the flag was ONLY
cleared on the next *submitted* user input. Resize then sit idle and the
bottom chrome rendered at height 0 on every repaint — even with the
refresh clock ticking — so the bar was gone until you typed and hit enter.

Fix: _recover_after_resize now schedules a debounced unsuppress timer that
clears the flag and repaints once the reflow settles (~0.35s), so the bar
returns on its own during idle. The next-submit clear stays as a fast path.
Fails open: any error in scheduling clears the flag immediately rather than
leaving the bar stuck hidden.
Gravezzz pushed a commit to Gravezzz/hermes-agent that referenced this pull request Jul 21, 2026
…ousResearch#49105)

The classic CLI status bar could vanish for the rest of a session: any
terminal reflow (SIGWINCH from a tmux pane change, SSH window restore, font
zoom) set _status_bar_suppressed_after_resize=True, but the flag was ONLY
cleared on the next *submitted* user input. Resize then sit idle and the
bottom chrome rendered at height 0 on every repaint — even with the
refresh clock ticking — so the bar was gone until you typed and hit enter.

Fix: _recover_after_resize now schedules a debounced unsuppress timer that
clears the flag and repaints once the reflow settles (~0.35s), so the bar
returns on its own during idle. The next-submit clear stays as a fast path.
Fails open: any error in scheduling clears the flag immediately rather than
leaving the bar stuck hidden.
leewenjie pushed a commit to leewenjie/hermes-agent that referenced this pull request Aug 7, 2026
…ousResearch#49105)

The classic CLI status bar could vanish for the rest of a session: any
terminal reflow (SIGWINCH from a tmux pane change, SSH window restore, font
zoom) set _status_bar_suppressed_after_resize=True, but the flag was ONLY
cleared on the next *submitted* user input. Resize then sit idle and the
bottom chrome rendered at height 0 on every repaint — even with the
refresh clock ticking — so the bar was gone until you typed and hit enter.

Fix: _recover_after_resize now schedules a debounced unsuppress timer that
clears the flag and repaints once the reflow settles (~0.35s), so the bar
returns on its own during idle. The next-submit clear stays as a fast path.
Fails open: any error in scheduling clears the flag immediately rather than
leaving the bar stuck hidden.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/tui Terminal UI (ui-tui/ + tui_gateway/) P2 Medium — degraded but workaround exists type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant