From 5623089aea68ca62811f51321686c259fa4c810f Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Mon, 14 Sep 2026 20:30:29 -0700 Subject: [PATCH] fix(server): disable color probes in worktree setup (#11843) --- apps/server/src/project/ProjectSetupScriptRunner.test.ts | 9 ++++++++- apps/server/src/project/ProjectSetupScriptRunner.ts | 3 ++- apps/server/src/terminal/Manager.test.ts | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/server/src/project/ProjectSetupScriptRunner.test.ts b/apps/server/src/project/ProjectSetupScriptRunner.test.ts index d9d74d926717e2e3c04d73753972474ef979133a..36dbc0ad58a3aed3ac4e38bdde7ce7ad2fef4d9f 100644 --- a/apps/server/src/project/ProjectSetupScriptRunner.test.ts +++ b/apps/server/src/project/ProjectSetupScriptRunner.test.ts @@ -112,7 +112,12 @@ describe("ProjectSetupScriptRunner", () => { terminalId: "setup-default-setup", cwd: "/repo/worktrees/a", worktreePath: "/repo/worktrees/a", - env: { T3CODE_PROJECT_ROOT: "/repo/project", T3CODE_WORKTREE_PATH: "/repo/worktrees/a" }, + env: { + T3CODE_PROJECT_ROOT: "/repo/project", + T3CODE_WORKTREE_PATH: "/repo/worktrees/a", + NO_COLOR: "1", + FORCE_COLOR: "0", + }, }); expect(write).toHaveBeenCalledWith({ threadId: "thread-1", @@ -211,6 +216,8 @@ describe("ProjectSetupScriptRunner", () => { cwd: "/repo/worktrees/a", worktreePath: "/repo/worktrees/a", env: { + NO_COLOR: "1", + FORCE_COLOR: "0", T3CODE_PROJECT_ROOT: "/repo/project", T3CODE_WORKTREE_PATH: "/repo/worktrees/a", }, diff --git a/apps/server/src/project/ProjectSetupScriptRunner.ts b/apps/server/src/project/ProjectSetupScriptRunner.ts index d69198e3091764cf480ff228d92dd4cbff4e1060..2835750f8c717bc5f5fb60e431dec1dac5a68bfa 100644 --- a/apps/server/src/project/ProjectSetupScriptRunner.ts +++ b/apps/server/src/project/ProjectSetupScriptRunner.ts @@ -361,7 +361,8 @@ export const make = Effect.gen(function* () { terminalId, cwd, worktreePath: input.worktreePath, - env, + // Setup may run before a terminal client attaches to answer color probes. + env: { ...env, NO_COLOR: "1", FORCE_COLOR: "0" }, }) .pipe( Effect.mapError( diff --git a/apps/server/src/terminal/Manager.test.ts b/apps/server/src/terminal/Manager.test.ts index f631992e7ae3d1d672e1f38d52831176f0b022ff..80ab2c43e42cecf300fdb24b30322f87cba6e2b9 100644 --- a/apps/server/src/terminal/Manager.test.ts +++ b/apps/server/src/terminal/Manager.test.ts @@ -1934,13 +1934,15 @@ it.layer( it.effect("injects runtime env overrides into spawned terminals", () => Effect.gen(function* () { - const { manager, ptyAdapter } = yield* createManager(); + const { manager, ptyAdapter } = yield* createManager(5, { env: { FORCE_COLOR: "3" } }); yield* manager.open( openInput({ env: { T3CODE_PROJECT_ROOT: "/repo", T3CODE_WORKTREE_PATH: "/repo/worktree-a", CUSTOM_FLAG: "1", + NO_COLOR: "1", + FORCE_COLOR: "0", }, }), ); @@ -1951,6 +1953,8 @@ it.layer( assert.equal(spawnInput.env.T3CODE_PROJECT_ROOT, "/repo"); assert.equal(spawnInput.env.T3CODE_WORKTREE_PATH, "/repo/worktree-a"); assert.equal(spawnInput.env.CUSTOM_FLAG, "1"); + assert.equal(spawnInput.env.NO_COLOR, "1"); + assert.equal(spawnInput.env.FORCE_COLOR, "0"); }), ); -- 2.54.0