From e3ef01c51ca26e976546d6f5577fb0e603bcbcf9 Mon Sep 17 00:00:00 2001 From: Adam Bowker Date: Mon, 30 Mar 2026 09:22:31 -0700 Subject: [PATCH] swap some fonts back to mono --- .../session-update/DeleteToolView.tsx | 2 +- .../session-update/EditToolView.tsx | 2 +- .../session-update/FileMentionChip.tsx | 2 +- .../session-update/MoveToolView.tsx | 11 +++++-- .../session-update/SearchToolView.tsx | 4 ++- .../session-update/ThinkToolView.tsx | 2 +- .../components/session-update/ThoughtView.tsx | 2 +- .../session-update/toolCallUtils.tsx | 4 ++- packages/git/src/operation-manager.ts | 31 ++++++++++++++++--- 9 files changed, 46 insertions(+), 14 deletions(-) diff --git a/apps/code/src/renderer/features/sessions/components/session-update/DeleteToolView.tsx b/apps/code/src/renderer/features/sessions/components/session-update/DeleteToolView.tsx index 08719ae37..c01853abf 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/DeleteToolView.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/DeleteToolView.tsx @@ -37,7 +37,7 @@ export function DeleteToolView({ {filePath && } {deletedLines !== null && ( - + -{deletedLines} )} diff --git a/apps/code/src/renderer/features/sessions/components/session-update/EditToolView.tsx b/apps/code/src/renderer/features/sessions/components/session-update/EditToolView.tsx index 631c24311..7a8b9ae61 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/EditToolView.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/EditToolView.tsx @@ -92,7 +92,7 @@ export function EditToolView({ {filePath && } {diffStats && ( - + +{diffStats.added}{" "} -{diffStats.removed} diff --git a/apps/code/src/renderer/features/sessions/components/session-update/FileMentionChip.tsx b/apps/code/src/renderer/features/sessions/components/session-update/FileMentionChip.tsx index 9ff62268b..8d29842fe 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/FileMentionChip.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/FileMentionChip.tsx @@ -87,7 +87,7 @@ export const FileMentionChip = memo(function FileMentionChip({ > - {filename} + {filename} ); diff --git a/apps/code/src/renderer/features/sessions/components/session-update/MoveToolView.tsx b/apps/code/src/renderer/features/sessions/components/session-update/MoveToolView.tsx index 6e390f7ee..5db42204b 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/MoveToolView.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/MoveToolView.tsx @@ -29,9 +29,14 @@ export function MoveToolView({ wasCancelled={wasCancelled} > {title || - (sourcePath && destPath - ? `Move ${getFilename(sourcePath)} → ${getFilename(destPath)}` - : "Move file")} + (sourcePath && destPath ? ( + <> + Move {getFilename(sourcePath)} →{" "} + {getFilename(destPath)} + + ) : ( + "Move file" + ))} ); } diff --git a/apps/code/src/renderer/features/sessions/components/session-update/SearchToolView.tsx b/apps/code/src/renderer/features/sessions/components/session-update/SearchToolView.tsx index 2c116384a..3d5c9b31a 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/SearchToolView.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/SearchToolView.tsx @@ -63,7 +63,9 @@ export function SearchToolView({ isExpandable isExpanded={isExpanded} /> - {title || "Search"} + + {title || "Search"} + {resultCount} {resultCount === 1 ? "result" : "results"} diff --git a/apps/code/src/renderer/features/sessions/components/session-update/ThinkToolView.tsx b/apps/code/src/renderer/features/sessions/components/session-update/ThinkToolView.tsx index 753a9c7cc..d683bc3ca 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/ThinkToolView.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/ThinkToolView.tsx @@ -81,7 +81,7 @@ export function ThinkToolView({ -
+          
             {displayedContent}
           
diff --git a/apps/code/src/renderer/features/sessions/components/session-update/ThoughtView.tsx b/apps/code/src/renderer/features/sessions/components/session-update/ThoughtView.tsx index 6194ca070..fb4f5e3c8 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/ThoughtView.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/ThoughtView.tsx @@ -46,7 +46,7 @@ export const ThoughtView = memo(function ThoughtView({ -
+              
                 {displayedContent}
               
diff --git a/apps/code/src/renderer/features/sessions/components/session-update/toolCallUtils.tsx b/apps/code/src/renderer/features/sessions/components/session-update/toolCallUtils.tsx index 8e9550f49..75824e1c3 100644 --- a/apps/code/src/renderer/features/sessions/components/session-update/toolCallUtils.tsx +++ b/apps/code/src/renderer/features/sessions/components/session-update/toolCallUtils.tsx @@ -234,7 +234,9 @@ export function ContentPre({ children }: { children: React.ReactNode }) { return ( -
{children}
+
+          {children}
+        
); diff --git a/packages/git/src/operation-manager.ts b/packages/git/src/operation-manager.ts index 30d111409..fc54bb286 100644 --- a/packages/git/src/operation-manager.ts +++ b/packages/git/src/operation-manager.ts @@ -2,6 +2,29 @@ import { createGitClient, type GitClient } from "./client"; import { removeLock, waitForUnlock } from "./lock-detector"; import { AsyncReaderWriterLock } from "./rw-lock"; +/** + * Returns process.env with Electron/Chromium variables cleaned so that + * child processes spawned by git hooks (e.g. biome via lint-staged) don't + * crash trying to initialise GPU subsystems. + * + * The agent service symlinks `node → Electron binary` and prepends it to + * PATH. If ELECTRON_RUN_AS_NODE is missing, that binary starts as a full + * Chromium browser (GPU init → SIGTRAP crash). We strip most ELECTRON_/ + * CHROME_ vars but explicitly keep ELECTRON_RUN_AS_NODE=1 so any such + * shim still behaves as plain Node.js. + */ +function getCleanEnv(): Record { + const env: Record = {}; + for (const [key, value] of Object.entries(process.env)) { + if (value === undefined) continue; + if (key === "ELECTRON_RUN_AS_NODE") continue; + if (key.startsWith("ELECTRON_") || key.startsWith("CHROME_")) continue; + env[key] = value; + } + env.ELECTRON_RUN_AS_NODE = "1"; + return env; +} + interface RepoState { lock: AsyncReaderWriterLock; client: GitClient; @@ -62,11 +85,11 @@ class GitOperationManagerImpl { abortSignal: options.signal, }); return operation( - scopedGit.env({ ...process.env, GIT_OPTIONAL_LOCKS: "0" }), + scopedGit.env({ ...getCleanEnv(), GIT_OPTIONAL_LOCKS: "0" }), ); } - const git = state.client.env({ ...process.env, GIT_OPTIONAL_LOCKS: "0" }); + const git = state.client.env({ ...getCleanEnv(), GIT_OPTIONAL_LOCKS: "0" }); return operation(git); } @@ -93,10 +116,10 @@ class GitOperationManagerImpl { const scopedGit = createGitClient(repoPath, { abortSignal: options.signal, }); - return await operation(scopedGit.env(process.env)); + return await operation(scopedGit.env(getCleanEnv())); } - return await operation(state.client.env(process.env)); + return await operation(state.client.env(getCleanEnv())); } catch (error) { if (options?.signal?.aborted) { await removeLock(repoPath).catch(() => {});