From 213bb3fe2ff9e0d2f11f7dccaa876858c931ea66 Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:48:13 +0200 Subject: [PATCH] test(terminal): reproduce split queries and modified Enter fallback Co-authored-by: igasmi <77757014+igasmi@users.noreply.github.com> --- .../src/terminal-modified-enter-repro.test.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 packages/protocol/src/terminal-modified-enter-repro.test.ts diff --git a/packages/protocol/src/terminal-modified-enter-repro.test.ts b/packages/protocol/src/terminal-modified-enter-repro.test.ts new file mode 100644 index 0000000000..a88b277208 --- /dev/null +++ b/packages/protocol/src/terminal-modified-enter-repro.test.ts @@ -0,0 +1,25 @@ +import { describe, expect, it } from "vitest"; +import { TerminalInputModeTracker } from "./terminal-input-mode"; +import { encodeTerminalKeyInput } from "./terminal-key-input"; + +describe("Modified Enter negotiation", () => { + it("answers a keyboard query split immediately after ESC", () => { + const tracker = new TerminalInputModeTracker(); + tracker.feed("\x1b"); + expect(tracker.feed("[?u").responses).toEqual(["\x1b[?0u"]); + }); + + it("recognizes modified Enter after a program enables modifyOtherKeys level 2", () => { + const tracker = new TerminalInputModeTracker(); + tracker.feed("\x1b[>4;2m"); + expect(tracker.supportsModifiedEnter()).toBe(true); + }); + + it("distinguishes Shift+Enter from Enter after modifyOtherKeys negotiation", () => { + const tracker = new TerminalInputModeTracker(); + tracker.feed("\x1b[>4;2m"); + const options = { inputMode: tracker.getState() }; + expect(encodeTerminalKeyInput({ key: "Enter", shift: true }, options)).toBe("\x1b[27;2;13~"); + expect(encodeTerminalKeyInput({ key: "Enter" }, options)).toBe("\r"); + }); +});