From 7f5b79fb4782ed8fbe347df46fff72020a289f5d Mon Sep 17 00:00:00 2001 From: ikurt Date: Mon, 13 Jul 2026 18:23:42 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(input):=20route=20Esc=20bind?= =?UTF-8?q?ings=20through=20paste=5Fnow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Esc/chars keystroke sequences (e.g. Shift+Enter → ESC+CR for Claude Code multiline) are not clipboard pastes. paste() gates on \r/\n and would open the multi-line confirm modal; paste_now writes them through. --- nebula_app/src/input/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nebula_app/src/input/mod.rs b/nebula_app/src/input/mod.rs index 21f77b8..99f343c 100644 --- a/nebula_app/src/input/mod.rs +++ b/nebula_app/src/input/mod.rs @@ -223,7 +223,10 @@ impl Execute for Action { #[inline] fn execute>(&self, ctx: &mut A) { match self { - Action::Esc(s) => ctx.paste(s, false), + // Esc/chars bindings are keystroke sequences (e.g. Shift+Enter → ESC+CR for + // Claude Code multiline), not clipboard pastes. paste() gates on \r/\n and + // would pop the multi-line confirm modal, so write through paste_now. + Action::Esc(s) => ctx.paste_now(s, false), Action::Command(program) => ctx.spawn_daemon(program.program(), program.args()), Action::Hint(hint) => { ctx.display().hint_state.start(hint.clone());