Skip to content

fix: route backend events to hidden-tab panels#1631

Open
nikicat wants to merge 1 commit into
raphamorim:mainfrom
nikicat:fix/hidden-tab-events
Open

fix: route backend events to hidden-tab panels#1631
nikicat wants to merge 1 commit into
raphamorim:mainfrom
nikicat:fix/hidden-tab-events

Conversation

@nikicat
Copy link
Copy Markdown

@nikicat nikicat commented May 30, 2026

Summary

ContextManager::get_by_route_id only searched the active tab's grid, so any
RioEvent targeting a specific route_id was silently dropped when that panel
lived on a hidden tab.

Details

Most visibly, a shell on a hidden tab that emitted a cursor-position query
(DSR 6n on SIGWINCH — fish does this) waited out its full ~10s timeout for a
reply that never came, freezing visible input echo on that tab. The tab-bar
resize on tab switch makes this easy to hit because it sends SIGWINCH to the old
tab right before the new tab is activated. get_by_route_id now searches all
tabs' grids.

Testing

cargo test -p rioterm; manual: open a second tab from fish on the first, switch
tabs, confirm input echo on the now-hidden tab is not frozen.

🤖 Generated with Claude Code

`ContextManager::get_by_route_id` only searched the active tab's grid,
so any `RioEvent` that targets a specific `route_id` was silently
dropped when that panel lived on a hidden tab. Most visibly, a shell on
a hidden tab that emitted a cursor-position query (DSR 6n on SIGWINCH —
fish does this) waited out its full ~10s timeout for the reply that
never came, freezing visible input echo on that tab.

The previous commit's tab-bar resize made this very easy to hit because
it sends SIGWINCH to the old tab right before the new tab is activated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
(cherry picked from commit 9004810)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant