mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-20 07:04:34 +00:00
add PI_NO_IMAGES env var to disable inline image rendering
This commit is contained in:
parent
9e9d5c94ed
commit
f603a377ae
2 changed files with 62 additions and 0 deletions
|
|
@ -28,6 +28,12 @@ export function detectCapabilities(): TerminalCapabilities {
|
||||||
const termProgram = process.env.TERM_PROGRAM?.toLowerCase() || "";
|
const termProgram = process.env.TERM_PROGRAM?.toLowerCase() || "";
|
||||||
const term = process.env.TERM?.toLowerCase() || "";
|
const term = process.env.TERM?.toLowerCase() || "";
|
||||||
const colorTerm = process.env.COLORTERM?.toLowerCase() || "";
|
const colorTerm = process.env.COLORTERM?.toLowerCase() || "";
|
||||||
|
const disableImages = process.env.PI_NO_IMAGES === "1" || process.env.PI_NO_IMAGES === "true";
|
||||||
|
|
||||||
|
if (disableImages) {
|
||||||
|
const trueColor = colorTerm === "truecolor" || colorTerm === "24bit";
|
||||||
|
return { images: null, trueColor, hyperlinks: true };
|
||||||
|
}
|
||||||
|
|
||||||
if (process.env.KITTY_WINDOW_ID || termProgram === "kitty") {
|
if (process.env.KITTY_WINDOW_ID || termProgram === "kitty") {
|
||||||
return { images: "kitty", trueColor: true, hyperlinks: true };
|
return { images: "kitty", trueColor: true, hyperlinks: true };
|
||||||
|
|
|
||||||
56
packages/tui/test/image-test.ts
Normal file
56
packages/tui/test/image-test.ts
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
import { readFileSync } from "fs";
|
||||||
|
import { Image } from "../src/components/image.js";
|
||||||
|
import { Spacer } from "../src/components/spacer.js";
|
||||||
|
import { Text } from "../src/components/text.js";
|
||||||
|
import { ProcessTerminal } from "../src/terminal.js";
|
||||||
|
import { getCapabilities, getImageDimensions } from "../src/terminal-image.js";
|
||||||
|
import { TUI } from "../src/tui.js";
|
||||||
|
|
||||||
|
const testImagePath = process.argv[2] || "/tmp/test-image.png";
|
||||||
|
|
||||||
|
console.log("Terminal capabilities:", getCapabilities());
|
||||||
|
console.log("Loading image from:", testImagePath);
|
||||||
|
|
||||||
|
let imageBuffer: Buffer;
|
||||||
|
try {
|
||||||
|
imageBuffer = readFileSync(testImagePath);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(`Failed to load image: ${testImagePath}`);
|
||||||
|
console.error("Usage: npx tsx test/image-test.ts [path-to-image.png]");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const base64Data = imageBuffer.toString("base64");
|
||||||
|
const dims = getImageDimensions(base64Data, "image/png");
|
||||||
|
|
||||||
|
console.log("Image dimensions:", dims);
|
||||||
|
console.log("");
|
||||||
|
|
||||||
|
const terminal = new ProcessTerminal();
|
||||||
|
const tui = new TUI(terminal);
|
||||||
|
|
||||||
|
tui.addChild(new Text("Image Rendering Test", 1, 1));
|
||||||
|
tui.addChild(new Spacer(1));
|
||||||
|
|
||||||
|
if (dims) {
|
||||||
|
tui.addChild(
|
||||||
|
new Image(base64Data, "image/png", { fallbackColor: (s) => `\x1b[33m${s}\x1b[0m` }, { maxWidthCells: 60 }, dims),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
tui.addChild(new Text("Could not parse image dimensions", 1, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
tui.addChild(new Spacer(1));
|
||||||
|
tui.addChild(new Text("Press Ctrl+C to exit", 1, 0));
|
||||||
|
|
||||||
|
const editor = {
|
||||||
|
handleInput(data: string) {
|
||||||
|
if (data.charCodeAt(0) === 3) {
|
||||||
|
tui.stop();
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
tui.setFocus(editor as any);
|
||||||
|
tui.start();
|
||||||
Loading…
Add table
Add a link
Reference in a new issue