From 1a3d49a99fe924c919ce4a45a65c9ed5fde5982c Mon Sep 17 00:00:00 2001 From: szzhoujiarui-sketch Date: Wed, 10 Jun 2026 02:58:09 +0000 Subject: [PATCH] fix(cli): disable spinner animation in non-TTY environments Fixes #27908 The @clack/prompts spinner outputs ANSI escape sequences that appear as garbage in non-TTY environments (CI, PowerShell, subprocess). Add TTY check to fallback to plain text output. Changes: - Check process.stdout.isTTY before creating spinner - Return simple console.log/console.error fallback for non-TTY Co-authored-by: monkeycode-ai --- packages/opencode/src/cli/cmd/plug.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/plug.ts b/packages/opencode/src/cli/cmd/plug.ts index 1529e9b71df3..498e332382bc 100644 --- a/packages/opencode/src/cli/cmd/plug.ts +++ b/packages/opencode/src/cli/cmd/plug.ts @@ -45,7 +45,23 @@ export type PlugCtx = { } const defaultPlugDeps: PlugDeps = { - spinner: () => spinner(), + spinner: () => { + // Non-TTY environments (CI, subprocess, PowerShell): use plain text output + // to avoid ANSI escape sequences being printed as garbage + if (!process.stdout.isTTY) { + return { + start: (msg: string) => console.log(msg), + stop: (msg: string, code?: number) => { + if (code && code !== 0) { + console.error(msg) + } else { + console.log(msg) + } + }, + } + } + return spinner() + }, log: { error: (msg) => log.error(msg), info: (msg) => log.info(msg),