From e65869ccfd42eaedb1f88080c7f7ded6eac509d9 Mon Sep 17 00:00:00 2001 From: David O'Keeffe Date: Mon, 16 Mar 2026 22:59:46 +1100 Subject: [PATCH 1/5] fix: debounce resize handler, add scrollback config Prevents fitAddon.fit() from thrashing scroll position on every resize pixel. Adds explicit scrollback and scrollOnUserInput. Co-authored-by: Isaac --- static/index.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/static/index.html b/static/index.html index 0df0b68..54f0aaa 100644 --- a/static/index.html +++ b/static/index.html @@ -1129,7 +1129,9 @@

General

cursorBlink: true, fontSize: currentFontSize, fontFamily: fontFamilies[currentFontFamily] || 'monospace', - theme: themes[currentThemeName].theme + theme: themes[currentThemeName].theme, + scrollback: 10000, + scrollOnUserInput: true }); const fitAddon = new FitAddon.FitAddon(); @@ -1643,7 +1645,11 @@

General

status.textContent = 'Connected!'; setTimeout(() => { status.style.display = 'none'; }, 1000); - window.addEventListener('resize', () => refitAllPanes()); + let resizeTimer; + window.addEventListener('resize', () => { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(() => refitAllPanes(), 150); + }); window.addEventListener('beforeunload', () => cleanupAllPanes()); } catch (e) { From 634bc548f1285e168e8a967ad07616d5a1c7368a Mon Sep 17 00:00:00 2001 From: David O'Keeffe Date: Mon, 16 Mar 2026 23:22:21 +1100 Subject: [PATCH 2/5] fix: always upgrade Claude Code CLI on startup Previously skipped install if binary existed, leaving stale versions across redeployments. Co-authored-by: Isaac --- setup_claude.py | 54 ++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/setup_claude.py b/setup_claude.py index 128ef37..041632e 100644 --- a/setup_claude.py +++ b/setup_claude.py @@ -47,18 +47,29 @@ settings_path.write_text(json.dumps(settings, indent=2)) # 2. Write ~/.claude.json with onboarding skip AND MCP servers +mcp_servers = { + "deepwiki": { + "type": "http", + "url": "https://mcp.deepwiki.com/mcp" + }, + "exa": { + "type": "http", + "url": "https://mcp.exa.ai/mcp" + } +} + +# Auto-configure team-memory MCP if URL is provided +team_memory_url = os.environ.get("TEAM_MEMORY_MCP_URL", "").strip().rstrip("/") +if team_memory_url: + mcp_servers["team-memory"] = { + "type": "http", + "url": f"{team_memory_url}/mcp" + } + print(f"Team memory MCP configured: {team_memory_url}/mcp") + claude_json = { "hasCompletedOnboarding": True, - "mcpServers": { - "deepwiki": { - "type": "http", - "url": "https://mcp.deepwiki.com/mcp" - }, - "exa": { - "type": "http", - "url": "https://mcp.exa.ai/mcp" - } - } + "mcpServers": mcp_servers } claude_json_path = home / ".claude.json" @@ -71,20 +82,17 @@ local_bin = home / ".local" / "bin" claude_bin = local_bin / "claude" -if not claude_bin.exists(): - print("Installing Claude Code CLI...") - result = subprocess.run( - ["bash", "-c", "curl -fsSL https://claude.ai/install.sh | bash"], - env={**os.environ, "HOME": str(home)}, - capture_output=True, - text=True - ) - if result.returncode == 0: - print("Claude Code CLI installed successfully") - else: - print(f"CLI install warning: {result.stderr}") +print("Installing/upgrading Claude Code CLI...") +result = subprocess.run( + ["bash", "-c", "curl -fsSL https://claude.ai/install.sh | bash"], + env={**os.environ, "HOME": str(home)}, + capture_output=True, + text=True +) +if result.returncode == 0: + print("Claude Code CLI installed successfully") else: - print(f"Claude Code CLI already installed at {claude_bin}") + print(f"CLI install warning: {result.stderr}") # 4. Create projects directory projects_dir = home / "projects" From 0bebcbc14f90e939d166ed9778ad4d1ba2939a44 Mon Sep 17 00:00:00 2001 From: David O'Keeffe Date: Tue, 17 Mar 2026 21:48:13 +1100 Subject: [PATCH 3/5] fix: enable Ctrl+C/V copy-paste on Windows terminals xterm.js intercepts Ctrl+V/C as raw control characters on non-Mac platforms. Added attachCustomKeyEventHandler to let the browser handle Ctrl+V (paste), Ctrl+C (copy when text selected), and Ctrl+Shift+C/V. Also added clipboard section to shortcuts help with platform-aware labels (Cmd on Mac, Ctrl on Windows) and upload toast for image paste. Co-authored-by: Isaac --- static/index.html | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/static/index.html b/static/index.html index 54f0aaa..49ffb59 100644 --- a/static/index.html +++ b/static/index.html @@ -357,6 +357,10 @@

Panes

Close paneAlt+Shift+W
Next paneAlt+Shift+]
Previous paneAlt+Shift+[
+

Clipboard

+
CopyCtrl+C
+
PasteCtrl+V
+
Paste imagePaste from clipboard

General

SearchCtrl+Shift+F
Voice dictationAlt+V
@@ -379,6 +383,14 @@

General