fix: align theme truecolor detection

This commit is contained in:
Armin Ronacher
2026-05-18 21:56:48 +02:00
parent f10cf57e96
commit dafcf61a34
4 changed files with 61 additions and 35 deletions

View File

@@ -43,6 +43,7 @@ export function detectCapabilities(): TerminalCapabilities {
const termProgram = process.env.TERM_PROGRAM?.toLowerCase() || "";
const term = process.env.TERM?.toLowerCase() || "";
const colorTerm = process.env.COLORTERM?.toLowerCase() || "";
const hasTrueColorHint = colorTerm === "truecolor" || colorTerm === "24bit";
// tmux and screen swallow OSC 8 by default (passthrough is opt-in and wraps
// sequences differently). Force hyperlinks off whenever we detect them, even
@@ -50,8 +51,7 @@ export function detectCapabilities(): TerminalCapabilities {
// also unreliable under tmux/screen, so leave `images: null` for safety.
const inTmuxOrScreen = !!process.env.TMUX || term.startsWith("tmux") || term.startsWith("screen");
if (inTmuxOrScreen) {
const trueColor = colorTerm === "truecolor" || colorTerm === "24bit";
return { images: null, trueColor, hyperlinks: false };
return { images: null, trueColor: hasTrueColorHint, hyperlinks: false };
}
if (process.env.KITTY_WINDOW_ID || termProgram === "kitty") {
@@ -82,8 +82,7 @@ export function detectCapabilities(): TerminalCapabilities {
// text" on terminals that swallow it, which means the URL disappears from
// the rendered output. Default to the legacy `text (url)` behavior unless we
// have positively identified a hyperlink-capable terminal above.
const trueColor = colorTerm === "truecolor" || colorTerm === "24bit";
return { images: null, trueColor, hyperlinks: false };
return { images: null, trueColor: hasTrueColorHint || !!process.env.WT_SESSION, hyperlinks: false };
}
export function getCapabilities(): TerminalCapabilities {