From bc814b2dbaf8f51beef8c694a71ed5e20bdfc0d6 Mon Sep 17 00:00:00 2001 From: sherlock Date: Sun, 19 Apr 2026 12:24:52 +0530 Subject: [PATCH 1/2] fix: restore sans-serif for inputs; make Cmd+K work in capture phase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Font rendering Pre-sync, the fork had only `pre, code, textarea, input` selectors using Geist Mono when code/terminal context demanded it, but the recent sync collapsed all four into a single rule that applied the monospace stack to *every* in the app. The command palette search, model picker trait inputs, settings binary/server URL fields, etc. all rendered in Geist Mono, which is what produced the 'broken font' look. Narrow the rule back to `pre, code` (and `textarea` in code-focused contexts inherits naturally). Regular inputs now use the body font (DM Sans). ## Cmd+K shortcut The commandPalette.toggle keydown handler in CommandPalette.tsx used the bubble phase, which means xterm (when terminal has focus) or a contenteditable composer could swallow Cmd+K before it reached the window listener. Switch the listener to capture phase — matches upstream's CTRL+J fix for terminal.toggle (#2113). The project picker already lives inside the command palette (filesystem browse API + command-palette project picker from #2024); this restores access to it via the shortcut. --- apps/web/src/components/CommandPalette.tsx | 6 ++++-- apps/web/src/index.css | 4 +--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/web/src/components/CommandPalette.tsx b/apps/web/src/components/CommandPalette.tsx index 929a9f87e9c..029ec1f5e47 100644 --- a/apps/web/src/components/CommandPalette.tsx +++ b/apps/web/src/components/CommandPalette.tsx @@ -171,8 +171,10 @@ export function CommandPalette({ children }: { children: ReactNode }) { event.stopPropagation(); toggleOpen(); }; - window.addEventListener("keydown", onKeyDown); - return () => window.removeEventListener("keydown", onKeyDown); + // Capture phase so the shortcut fires even when a descendant (e.g. + // xterm, a contenteditable composer) would otherwise swallow the event. + window.addEventListener("keydown", onKeyDown, true); + return () => window.removeEventListener("keydown", onKeyDown, true); }, [keybindings, terminalOpen, toggleOpen]); return ( diff --git a/apps/web/src/index.css b/apps/web/src/index.css index 9c4f7489354..7be1422e897 100644 --- a/apps/web/src/index.css +++ b/apps/web/src/index.css @@ -177,9 +177,7 @@ body::after { } pre, -code, -textarea, -input { +code { font-family: "Geist Mono", "SF Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; } From fa82fbc62b06664c0152b30bdf23857a2b324d1c Mon Sep 17 00:00:00 2001 From: sherlock Date: Sun, 19 Apr 2026 13:53:23 +0530 Subject: [PATCH 2/2] fix: apply font-mono to code-content textareas CodeRabbit flagged on #72 that two textareas hold code-like content: - script-command in ProjectScriptsControl.tsx - commit-message dialog in GitActionsControl.tsx After narrowing the global `textarea` monospace rule, both would have rendered in DM Sans. Add explicit `className="font-mono"` so they keep the Geist Mono readability regardless of the global rule. --- apps/web/src/components/GitActionsControl.tsx | 1 + apps/web/src/components/ProjectScriptsControl.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/web/src/components/GitActionsControl.tsx b/apps/web/src/components/GitActionsControl.tsx index 826f2d9e0fd..aed0a5c1d0e 100644 --- a/apps/web/src/components/GitActionsControl.tsx +++ b/apps/web/src/components/GitActionsControl.tsx @@ -1121,6 +1121,7 @@ export default function GitActionsControl({

Commit message (optional)