fix(tui): correct terminal progress clear sequence (#7581)

Co-authored-by: Felix Rath <felixm.rath@gmail.com>
This commit is contained in:
Vegard Stikbakke 2026-08-04 08:44:00 +02:00 • committed by GitHub
parent bd3440e5b9
commit e8a17822de
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 1 deletions

View file

@ -10,7 +10,7 @@ const cjsRequire = createRequire(import.meta.url);
const TERMINAL_PROGRESS_KEEPALIVE_MS = 1000;
const TERMINAL_PROGRESS_ACTIVE_SEQUENCE = "\x1b]9;4;3\x07";
const TERMINAL_PROGRESS_CLEAR_SEQUENCE = "\x1b]9;4;0;\x07";
const TERMINAL_PROGRESS_CLEAR_SEQUENCE = "\x1b]9;4;0\x07";
const APPLE_TERMINAL_SHIFT_ENTER_SEQUENCE = "\x1b[13;2u";
const DESIRED_KITTY_KEYBOARD_PROTOCOL_FLAGS = 7;
const KEYBOARD_PROTOCOL_RESPONSE_FRAGMENT_TIMEOUT_MS = 150;

View file

@ -190,6 +190,26 @@ describe("ProcessTerminal Kitty keyboard protocol negotiation", () => {
});
});
describe("ProcessTerminal progress", () => {
it("writes a valid OSC 9;4 clear sequence", () => {
const terminal = new ProcessTerminal();
const writes: string[] = [];
const previousWrite = process.stdout.write;
process.stdout.write = ((chunk: string | Uint8Array) => {
writes.push(String(chunk));
return true;
}) as typeof process.stdout.write;
try {
terminal.setProgress(false);
assert.deepEqual(writes, ["\x1b]9;4;0\x07"]);
} finally {
process.stdout.write = previousWrite;
}
});
});
describe("ProcessTerminal dimensions", () => {
it("falls back to COLUMNS and LINES before default dimensions", () => {
const previousColumnsDescriptor = Object.getOwnPropertyDescriptor(process.stdout, "columns");