This file is read every 30 minutes by the autonomous development loop. Add tasks, ideas, or observations. Check off what's done. The agent adds its own.
Instructions for the agent: pick ONE unchecked item, work on it or note findings, check it off or update it, then add anything new you noticed. If all items are done or this file is empty, add one observation from the codebase. Then stop.
- BUILD:
agent-kanbanextension — DONE 2026-04-03. Full 4-column board, drag-drop, Start dispatches to peers, actions API, detail panel, modal, status badges - BUILD:
local-modelsextension — DONE 2026-04-03. 20 curated GGUF models in size groups, probes Ollama/llama.cpp/LM Studio, manual add, setModel action - BUILD:
token-counterextension — DONE 2026-04-03. Live stats, cost table across 5 models, context window bar, countText action - BUILD:
model-hubextension — DONE 2026-04-03. HF API search + 15 task filters + sort (downloads/likes/trending/updated). Cards show task badge, dl/likes stats, relative date. "Use" sets ctx:model-hub:selected + invokes setModel on connected peers. "View on HF" opens model page. - BUILD:
rag-docsextension — DONE 2026-04-03. File upload (click/drag-drop), configurable chunking (size + overlap sliders), chunk preview with overlap highlighting, keyword search fallback + ext.invoke semantic search, result highlighting, ctx:rag:selected-chunk context producer, state persisted via tile.setState. - BUILD:
api-proxyextension — DONE 2026-04-03. Port config, enable toggle, API key field + generator, host allowlist with add/remove, live status polling via ext.invoke('getStatus'), active connection list, stat badges, Copy URL button. ctx:api-proxy:config context producer. configure/getUrl actions. - CORE: Local API server — DONE 2026-04-03.
src/main/ipc/localProxy.ts— HTTP server on configurable port (default 1337), Anthropic/v1/messages→ OpenAI/Ollama format transform, auto-probes Ollama:11434 / LM Studio:1234 / llama.cpp:8080, streaming SSE transform, IPC: localProxy:start/stop/getStatus/probeBackends. Wired into main/index.ts + preload bridge. api-proxy extension upgraded to power tier with main.js that caches live stats via event bus. - CORE: Claude Code endpoint remapping — DONE 2026-04-03. Added
localProxyEnabled: boolean+localProxyPort: numberto AppSettings (shared/types.ts). In terminal:create isClaude branch, calls readSettingsSync() and sets ANTHROPIC_BASE_URL=http://localhost:{port}/v1 when enabled. Zero-risk: off by default, no new IPC, purely additive.
- Verify the Chrome cookie sync works end-to-end — DONE 2026-04-03. Timing is correct (cookies injected before DOM attachment). Found decryption bug:
cookies.ts:13usesBuffer.alloc(16, 0)(null bytes) as AES IV but Chromium macOS uses 16 space chars (0x20). This silently breaks all v10 cookie decryption — fix:Buffer.alloc(16, 0x20). - FIX: Chrome cookie AES IV bug — DONE 2026-04-03.
cookies.ts:13Buffer.alloc(16, 0)→Buffer.alloc(16, 0x20). Chrome sync should now actually inject cookies. - The extension harness
server.mjsneeds apackage.json— DONE 2026-04-03. Addedexamples/extensions/_harness/package.jsonwithnpm start/npm run devscripts - Review
src/main/ipc/for any handlers that are registered but never called from preload — DONE 2026-04-03. Found 5 orphaned handlers:bus:unsubscribe,ext:install-vsix,fs:basename,fs:delete,fs:rename. Also foundwindow.api.extensions.installVsixat App.tsx:3097 — runtime TypeError (bridge iswindow.electronnotwindow.api). Safe to remove all 5 handlers + fix App.tsx call site. - Check whether
examples/extensions/artifact-builder/has an up-to-dateextension.json— DONE 2026-04-03. Structure is correct. Minor: default model isanthropic/claude-sonnet-4, current latest isclaude-sonnet-4-6— low priority, user-overridable
- Security hook false positives — INVESTIGATED 2026-04-03. Root cause identified (see MEMORY.md). Fix: add
examples/extensions/auto-approve to~/.claude/fieldtheory-read-permission-hook.py. Not done — modifying global user hook needs explicit approval. - FIX: Add
examples/extensions/*to auto-approve in~/.claude/fieldtheory-read-permission-hook.py(lines 23–46, same pattern as fieldtheory-mac and .cursor/commands auto-approves). Safe, targeted, one-line fix. - Add a
validate-extensioncommand that checks extension.json against the schema and tests that tile HTML loads in the harness — DONE 2026-04-22. Addedscripts/validate-extension.mjs+npm run validate-extension; it validates manifest structure, referenced files, and harness-served tile entry URLs. - MCP agent-native gap — DONE 2026-04-03.
src/main/mcp-server.ts: (1)canvas_create_tiletype widened from hardcoded enum to open string with description listing core types +ext:<id>syntax. (2) Addedlist_extensionstool returning id/name/description/enabled/tileTypes/actions/context for every installed extension. Agents can now discover and create extension tiles. - Consider a
CHANGELOG.md— the codebase moves fast and there's no record of what changed when - agent-kanban v2 — DONE 2026-04-03. Full Cline kanban port: dependency blocking, git worktrees per task, agent session state machine, 5-agent catalog (claude/codex/gemini/cline/opencode), live output streaming, detail panel, input field. 585-line main.js + full board tile HTML.
- Local proxy server complete. End-to-end chain: Claude Code → ANTHROPIC_BASE_URL → localProxy HTTP → format transform → Ollama/LM Studio/llama.cpp → transform back → Claude Code.
- Kanban sidebar agent: dedicated chat agent that can only manage kanban tasks (no code changes), uses actions API
-
FIX: Chat memory guard is now much more aggressive, and repeated WebContents destroyed listeners no longer stack up — DONE 2026-04-12.
src/renderer/src/components/ChatTile.tsxnow compacts older finished chat messages by dropping rich interleaved layout data, trimming tool/thinking payloads, lowering render/live caps, and flattening old blocks back to simpler text for memory safety.src/main/ipc/bus.ts,src/main/ipc/terminal.ts, andsrc/main/ipc/fs.tsnow attach only one destroyed cleanup listener per rendererWebContents, fixing the earlierMaxListenersExceededWarningpattern. -
FIX: Discovery edges no longer stack directly on top of each other, and locked edges suppress same-pair proximity edges — DONE 2026-04-11.
src/renderer/src/App.tsxnow assigns lane offsets to identical ambient routes and gives locked connections precedence so only the locked route remains for that pair. -
FIX: Dragging images, videos, PDFs, and docs onto the canvas now creates sensible blocks — DONE 2026-04-11.
src/renderer/src/App.tsxnow classifies local media/docs intoimage,browser, orfileinstead of dropping unknown files into terminals, and the missingfilerender path is now wired up. -
FIX: Chat runtime cache now disposes cleanly on close and debounces persistence — DONE 2026-04-11.
src/renderer/src/components/ChatTile.tsxno longer writes full tile state on every streaming token, and closing a chat block now disposes its in-memory runtime snapshot instead of letting unmount persistence recreate deleted state. -
FIX: Tabbed view no longer drops live chat state on remount — DONE 2026-04-11.
ChatTilenow restores from an in-memory per-tile runtime snapshot before disk and flushes its latest snapshot on unmount, including streaming state;PanelLayoutalso stops keeping every inactive lightweight tab mounted. -
FIX: Chat
@autocomplete now prefers connected file tiles — DONE 2026-04-11.src/renderer/src/components/ChatTile.tsxnow lists connected file-backed peers before generic mention stubs, and choosing one auto-attaches that file so the outgoing message includes its path block. -
FIX: Previous sessions hidden behind alias workspace ids — DONE 2026-04-11.
src/main/ipc/canvas.tsnow reads/writes/migrates tile and canvas state across all workspace ids that share the sameworkspace.path, socreateWithPath(...)aliases can see older sessions instead of acting like fresh workspaces. -
FIX: Sticky-note link pills and font controls — DONE 2026-04-11. Connection/link pills now render under tiles instead of above them, and sticky notes now have a titlebar font picker with persisted note-friendly fonts.
-
FIX: GitHub release workflow hardened — DONE 2026-04-11.
.github/workflows/release-on-tag.ymlstill auto-runs onv*.*.*tag pushes, and now also supports manual rerun against an existing tag with explicit ref checkout and release-specific concurrency. -
FIX: Session sidebar now aggregates external agent histories — DONE 2026-04-11. The sessions list now merges local CodeSurf chat tiles with
.codesurf/sessions, Claude transcripts, Codex sessions, Cursor chats, OpenClaw session indexes, and OpenCode conversation files, with source-specific icons. -
FIX: macOS traffic lights now track sidebar collapse — DONE 2026-04-11.
src/main/index.tsnow repositions native traffic lights via IPC when the renderer toggles the sidebar, so collapsed and expanded layouts can use different x offsets. -
FIX: OpenCode model list now loads in the background — DONE 2026-04-11.
chat:opencodeModelsreturns cached/fallback models immediately and refreshes asynchronously, broadcastingchat:opencodeModelsUpdatedso ChatTile updates without blocking the UI. -
FIX: OpenClaw chat provider CLI invocation was broken — DONE 2026-04-10.
src/main/ipc/chat.tsandsrc/main/relay/provider-executor.tsnow call the realopenclaw agent --json --message ...interface with--agent/--session-idinstead of nonexistent flags like--output-format,--approval-mode,--model, and-p. Note: OpenClaw routes by configured agent, not a per-turn model flag. -
FIX: Hermes chat provider CLI invocation was broken — DONE 2026-04-10.
src/main/ipc/chat.tsandsrc/main/relay/provider-executor.tsnow callhermes chat --query ... --quiet --source toolinstead of the invalid top-levelhermes -q ... --compactform; also capturessession_id:output correctly. -
FIX: Legacy home-directory migration crashed on symlinked extensions — DONE 2026-04-10.
src/main/migration.tsnow preserves symlinks during~/.contex -> ~/.codesurfmerge instead of callingcopyFile()on entries likeextensions/agent-kanban, which caused startupENOTSUPfailures.