From 78e23ae82bf143e9baaaf7c1eac2023b318cc464 Mon Sep 17 00:00:00 2001 From: Rcardo <2895359972@qq.com> Date: Fri, 31 Jul 2026 14:54:02 +0800 Subject: [PATCH 1/2] fix(tui): detect Orca image support --- .changeset/bright-orcas-render.md | 5 +++++ .changeset/calm-images-display.md | 5 +++++ packages/pi-tui/src/terminal-image.ts | 4 ++++ packages/pi-tui/test/terminal-image.test.ts | 9 +++++++++ 4 files changed, 23 insertions(+) create mode 100644 .changeset/bright-orcas-render.md create mode 100644 .changeset/calm-images-display.md diff --git a/.changeset/bright-orcas-render.md b/.changeset/bright-orcas-render.md new file mode 100644 index 0000000000..e8e811a5dd --- /dev/null +++ b/.changeset/bright-orcas-render.md @@ -0,0 +1,5 @@ +--- +"@moonshot-ai/pi-tui": patch +--- + +Recognize Orca terminals as supporting Kitty inline images. diff --git a/.changeset/calm-images-display.md b/.changeset/calm-images-display.md new file mode 100644 index 0000000000..2012b86af5 --- /dev/null +++ b/.changeset/calm-images-display.md @@ -0,0 +1,5 @@ +--- +"@moonshot-ai/kimi-code": patch +--- + +Display inline images in Orca terminals that support the Kitty graphics protocol. diff --git a/packages/pi-tui/src/terminal-image.ts b/packages/pi-tui/src/terminal-image.ts index e7878de7ac..6cbbc8a77d 100644 --- a/packages/pi-tui/src/terminal-image.ts +++ b/packages/pi-tui/src/terminal-image.ts @@ -80,6 +80,10 @@ export function detectCapabilities(tmuxForwardsHyperlink: () => boolean = probeT return { images: null, trueColor: hasTrueColorHint, hyperlinks: false }; } + if (termProgram === "orca") { + return { images: "kitty", trueColor: true, hyperlinks: true }; + } + if (process.env['KITTY_WINDOW_ID'] || termProgram === "kitty") { return { images: "kitty", trueColor: true, hyperlinks: true }; } diff --git a/packages/pi-tui/test/terminal-image.test.ts b/packages/pi-tui/test/terminal-image.test.ts index cc7e01e594..5054a0656c 100644 --- a/packages/pi-tui/test/terminal-image.test.ts +++ b/packages/pi-tui/test/terminal-image.test.ts @@ -273,6 +273,15 @@ describe("detectCapabilities", () => { }); }); + it("enables images and hyperlinks for Orca", () => { + withEnv({ TERM_PROGRAM: "Orca" }, () => { + const caps = detectCapabilities(); + assert.strictEqual(caps.images, "kitty"); + assert.strictEqual(caps.trueColor, true); + assert.strictEqual(caps.hyperlinks, true); + }); + }); + it("enables images and hyperlinks for Warp via TERM_PROGRAM", () => { withEnv({ TERM_PROGRAM: "WarpTerminal" }, () => { const caps = detectCapabilities(); From d92fbd7bb0123a9e073769d047002af028aa3312 Mon Sep 17 00:00:00 2001 From: Rcardo <2895359972@qq.com> Date: Fri, 31 Jul 2026 16:33:18 +0800 Subject: [PATCH 2/2] fix(tui): gate Orca images on capability --- .changeset/bright-orcas-render.md | 2 +- .changeset/calm-images-display.md | 2 +- packages/pi-tui/src/terminal-image.ts | 2 +- packages/pi-tui/test/terminal-image.test.ts | 10 +++++++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/.changeset/bright-orcas-render.md b/.changeset/bright-orcas-render.md index e8e811a5dd..fb85782f36 100644 --- a/.changeset/bright-orcas-render.md +++ b/.changeset/bright-orcas-render.md @@ -2,4 +2,4 @@ "@moonshot-ai/pi-tui": patch --- -Recognize Orca terminals as supporting Kitty inline images. +Recognize Orca terminals that advertise Kitty inline-image support. diff --git a/.changeset/calm-images-display.md b/.changeset/calm-images-display.md index 2012b86af5..af84bdc46b 100644 --- a/.changeset/calm-images-display.md +++ b/.changeset/calm-images-display.md @@ -2,4 +2,4 @@ "@moonshot-ai/kimi-code": patch --- -Display inline images in Orca terminals that support the Kitty graphics protocol. +Display inline images when Orca explicitly advertises Kitty graphics support. diff --git a/packages/pi-tui/src/terminal-image.ts b/packages/pi-tui/src/terminal-image.ts index 6cbbc8a77d..cb4409aeb7 100644 --- a/packages/pi-tui/src/terminal-image.ts +++ b/packages/pi-tui/src/terminal-image.ts @@ -80,7 +80,7 @@ export function detectCapabilities(tmuxForwardsHyperlink: () => boolean = probeT return { images: null, trueColor: hasTrueColorHint, hyperlinks: false }; } - if (termProgram === "orca") { + if (termProgram === "orca" && process.env['ORCA_IMAGE_PROTOCOL'] === "kitty") { return { images: "kitty", trueColor: true, hyperlinks: true }; } diff --git a/packages/pi-tui/test/terminal-image.test.ts b/packages/pi-tui/test/terminal-image.test.ts index 5054a0656c..470c319e42 100644 --- a/packages/pi-tui/test/terminal-image.test.ts +++ b/packages/pi-tui/test/terminal-image.test.ts @@ -21,6 +21,7 @@ import { const ENV_KEYS = [ "TERM", "TERM_PROGRAM", + "ORCA_IMAGE_PROTOCOL", "TERMINAL_EMULATOR", "COLORTERM", "TMUX", @@ -273,8 +274,15 @@ describe("detectCapabilities", () => { }); }); - it("enables images and hyperlinks for Orca", () => { + it("keeps images disabled for Orca without an image capability signal", () => { withEnv({ TERM_PROGRAM: "Orca" }, () => { + const caps = detectCapabilities(); + assert.strictEqual(caps.images, null); + }); + }); + + it("enables images and hyperlinks for Orca advertising Kitty support", () => { + withEnv({ TERM_PROGRAM: "Orca", ORCA_IMAGE_PROTOCOL: "kitty" }, () => { const caps = detectCapabilities(); assert.strictEqual(caps.images, "kitty"); assert.strictEqual(caps.trueColor, true);