From 6f311498aeeb27c0973781961ef94e8d0016ed17 Mon Sep 17 00:00:00 2001 From: akbash Date: Sat, 8 Aug 2026 02:15:56 +0300 Subject: fix: forward pane terminal bells (#2498) refs #2453 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> --- src/app/actions.rs | 3 ++- src/app/api.rs | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src/app') diff --git a/src/app/actions.rs b/src/app/actions.rs index 51de049c..40707cee 100644 --- a/src/app/actions.rs +++ b/src/app/actions.rs @@ -2902,9 +2902,10 @@ impl AppState { .collect() } } - // Both intercepted before this dispatch — in App::handle_internal_event (monolithic) + // Intercepted before this dispatch — in App::handle_internal_event (monolithic) // or via HeadlessServer forwarding to the foreground client (server); never touch // AppState. Kept for AppEvent exhaustiveness. + AppEvent::TerminalBell { .. } => Vec::new(), AppEvent::ClipboardWrite { .. } => Vec::new(), AppEvent::PrefixInputSource { .. } => Vec::new(), AppEvent::TerminalCwdReported { pane_id, cwd } => { diff --git a/src/app/api.rs b/src/app/api.rs index 5f81a5cb..c2130f36 100644 --- a/src/app/api.rs +++ b/src/app/api.rs @@ -64,6 +64,10 @@ impl App { results, cache_updates, } => self.handle_git_status_refreshed(results, cache_updates), + ev @ AppEvent::TerminalBell { .. } => { + self.handle_internal_event(ev); + false + } ev => { self.handle_internal_event(ev); true @@ -97,6 +101,15 @@ impl App { } pub(crate) fn handle_internal_event(&mut self, ev: AppEvent) { + if let AppEvent::TerminalBell { count, .. } = ev { + if let Err(err) = + crate::terminal_effects::write_terminal_bells(&mut std::io::stdout(), count) + { + tracing::warn!(err = %err, "failed to emit terminal bell"); + } + return; + } + if let AppEvent::ClipboardWrite { content } = ev { #[cfg(not(test))] crate::selection::write_osc52_bytes(&content); -- cgit v1.2.3