r0001
koder r0001
Linux x64 and Linux ARM64 rolling release built from bf3c1fb.
Changelog
- Stabilize file browser queue test (bf3c1fb)
- Configure runner namespaces for release tests (846f6e4)
- Allow release tests on restricted runners (bd84c06)
- Fix rolling release workflow (52ed8ea)
- Refresh README and app icons (2e1ed39)
- Use native llama endpoints directly (99f1d63)
- Prepare active model metadata on session load (dc8d39f)
- Track image requirements per chat (d4cdcb2)
- Auto-detect llama slots from model options (bcf4b5d)
- Support pinch zoom in image lightbox (b3b3781)
- Mark provider healthy after loading models (85dd86a)
- Detect llama.cpp slots during provider probe (6843464)
- Add observability panel (7d6aa41)
- Stabilize file browser send test (8913c58)
- Add chat cleanup dialog (8933f41)
- Start worker chats from planning board (e696633)
- Send file browser context to chat (5567760)
- Add provider health indicators (d429c2b)
- Show model usage references (ee5801d)
- Add model config duplication actions (4278c1f)
- Add settings dirty state guard (ee2932f)
- Add model default and delete actions (285628f)
- Render images in file browser previews (1bcb6bb)
- Add rolling GitHub release workflow (65bc59a)
- Apply configured security defaults to new sessions (ee18bbc)
- Restore Alpine refs after naming cleanup (e5daed3)
- Fix composer completions after session routing cleanup (2d88aef)
- Update dev launcher for serve command (0c2fc9b)
- Hard break CLI startup semantics (8826afa)
- Add data directory override (b131026)
- Remove resume CLI command (b1b5892)
- Add MIT license and third-party notices (90607d2)
- Remove controller global session state (368233c)
- Clean up read-only selection state path (bf24609)
- Make selection state reads side-effect free (14b7e6d)
- Keep workspace monitoring out of chat state reads (1a45e3c)
- Show chat switch progress and throttle workspace scans (9ea1046)
- Add chat rename action to sidebar (0c813f5)
- Use GitHub dark colors for inline code (4a26228)
- Show hydration state for deep links (11261ee)
- Add Go and zsh shell diagnostics (9d710ea)
- Update agent feature comparison (96c6518)
- Ignore local env and log files (89ecbd4)
- Add planning board view (c171971)
- Persist koder dev restart logs (5da2899)
- Show exec command details in UI (4bd7bf6)
- Extend dev shutdown grace (69d3f52)
- Stop restart shutdown at LLM boundary (81bfa55)
- Add restart timing diagnostics (c284677)
- Use Go mermaid parser for markdown diagnostics (23b9593)
- Ignore non-parser mermaid validation errors (cfc4a08)
- Validate markdown renderer blocks (75d9b24)
- Improve file browser deep links and mermaid errors (c03e2fb)
- Add session file browser (4920180)
- Align milestone completed filter label (619d264)
- Allow orchestrator to update unowned running tasks (59151e1)
- Clear stale queue aliases on chat delta (e5045a1)
- Fix transcript sticky-bottom intent (b94dd9e)
- Add queued message steering controls (041809b)
- Restore compacted tool tail retention (bcfe7ac)
- Sanitize control characters in provider prompts (3cadea6)
- Drop raw tool tail replay after compaction (b4b48b2)
- Pause repeated reasoning-only continuations (5ca6b13)
- Preserve whitespace in streamed provider chunks (7b69461)
- Pause on empty initial provider response (a733830)
- Compare full tool args for repeat guard (e8b9d95)
- Debounce streamed tool call progress (6b071ff)
- Stabilize transcript scroll tracking (0f09a4b)
- Add exec command comments for display (bc84c28)
- Hard cancel active provider requests (76d81a2)
- Show hydrating state when switching sessions (fe10353)
- Cache markdown by timeline item (20407f9)
- Cache timelines outside Alpine state (eeadb65)
- Keep transcript tail pinned while streaming (0e2c93e)
- Recalculate transcript window on scroll (fc21c19)
- Measure transcript spacer heights (e952ea4)
- Render transcript tail while pinned (e823a53)
- Render transcript through window helper (29e038a)
- Track transcript render window state (9ec0578)
- Test compact chat delta payloads (16b687d)
- Add browser performance debug counters (66168fc)
- Send item-level chat deltas (c4290b2)
- Abort active chat turns on hard interrupt (a80de86)
- Standardize milestone tool fields on keys (54cbe83)
- Add milestone dependency tool (205a912)
- Clarify repeated tool failures (e84f615)
- Allow dependency-only milestone updates (51060cd)
- Limit active child chat starts (908885c)
- Harden chat cleanup orchestration (a3a52d6)
- Show chat_send messages in UI (c600cc0)
- Reuse model picker in preferences (1374f1b)
- Refresh git preview from workspace changes (53754d4)
- Show git preview as a tree (a04e29f)
- Add custom request JSON for models (2d288ef)
- Speak TTS when agent response completes (623d6ee)
- Add TTS settings test playback (f04330d)
- Add configurable TTS playback settings (df64f1a)
- Move workspace monitoring onto sessions (3586bc7)
- Add TTS model detection and playback (84b3dcb)
- Rename milestone todos to tasks (b3a8ef0)
- Use scoped task keys for chat orchestration (9edbdb5)
- Simplify file read tool rendering (4c0908d)
- Keep compaction replay boundary stable (cf20859)
- Use generated planning keys (f5683c5)
- Show line numbers in diff renderer (9d80703)
- Render markdown diffs with shared renderer (10ac799)
- Clarify browser visual prompt guidance (2fb7cde)
- Advertise diagram and math rendering (92092a6)
- Deny repeated identical tool calls (7b51613)
- Fit Mermaid diagrams inline (874357a)
- Render Mermaid diagrams at natural width (fe1277a)
- Preserve Mermaid foreignObject labels (28a42aa)
- Keep Mermaid HTML label contents (ef07f90)
- Preserve Mermaid diagram labels (0cf67ff)
- Improve Mermaid diagram contrast (8e782a4)
- Normalize browser session lists (ada05e7)
- Defer session activation until selected (847fc40)
- Avoid hydrating chats during session load (2156f44)
- Add KaTeX math rendering to web UI (194c3dd)
- Refresh detected model context windows (7317741)
- Drop unused engine metadata chat loader (94bc29a)
- Remove engine chat control wrappers (05c777b)
- Consolidate environment prompt rendering (416227d)
- Hard break tool argument normalization (116116e)
- Hide child storage behind bound sources (b4c8600)
- Move child storage to owning packages (86939af)
- Privatize session storage backend (5a00425)
- Clamp tool result rows in web UI (b884602)
- Remove agent caveman runtime duplication (f5abe7c)
- Move model completion to runtime (8defe11)
- Move turn preparation to model runtime (87e75ab)
- Remove obsolete turn render shim (57cc421)
- Move model request construction to runtime (0219c32)
- Move prompt rendering to model runtime (204320c)
- Introduce model runtime shell (08bf088)
- Rename chat model runtime interface (0ff7087)
- Make chat build model turn requests (22d7d0c)
- Document grouped config layout (c51be5b)
- Test settings ownership resolution (a206087)
- Resolve model policy through settings (3b85ff9)
- Group global runtime config (1699ebb)
- Add settings resolver for runtime policy (8152c71)
- Remove stale agent tool helpers (8be5706)
- Move tool runtime ownership out of agent (0035be9)
- Move live session registry into session package (198dfdf)
- Let chat own the model turn loop (ddbf53d)
- Let chat persist compaction markers (f1557d8)
- Let chat persist turn notices (522df4f)
- Let chat persist assistant replies (d119b54)
- Let chat persist turn instructions (37a5270)
- Move continuation pause ownership to chat (085857c)
- Remove agent tool execution helpers (055f80b)
- Move live tool execution into chat (5ea7ab6)
- Enforce disabled tools in registry calls (84ef8fe)
- Remove chat turn state wrapper (cb743ce)
- Add chat-owned turn enum (09aee07)
- Move chat tool control to session (a212e4f)
- Remove controller session list cache (347736d)
- Remove store from controller constructor (b175f5c)
- Route agent session metadata through owner (a4af484)
- Hydrate session tasks independent of milestones (5d4256f)
- Use session owners for agent chat listing (a57c32b)
- List controller sessions through agent (63cb5fd)
- Remove controller chat cache fields (21b112a)
- Build controller state from live selection (17320d5)
- Use session owner for controller shutdown checks (4e53683)
- Remove controller session event cache bridge (cdba828)
- Reduce controller chat state caching (99e6253)
- Align debugsrv with live session ownership (d522025)
- Move chat tool control out of core tools (b21592e)
- Simplify tool calls around options (9b7744d)
- Remove dead tool event helper (990bbf8)
- Decouple milestone tool owner checks from chat model (9c08580)
- Use chatrole types in tool runtime (3210784)
- Flatten chat tool status DTO (415b940)
- Use tools IDs in tool implementations (5b1ad4a)
- Move tool registry API to tools IDs (9a66cac)
- Move workflow role ownership to domain (71516d7)
- Move tool result payload ownership to tools (86a2ed8)
- Rename tool registry kind API to ids (d74508d)
- Replace tool enum with string ids (751bf79)
- Keep tool payloads owned by tools (41bb741)
- Collapse tool result struct (a06249a)
- Remove unused turn tool wrappers (cf8cfb2)
- Run prepared tool calls through chat (9ec3ef1)
- Move tool result attachment to chat owner (b2a363b)
- Run compaction through live chat owner (a7447fe)
- Privatize chat storage helpers (8cb70d1)
- Remove remaining production chat store calls (04c29b9)
- Route agent tool writes through chat owners (3d753ff)
- Make pending tool resume own turn ordering (d06ee26)
- Repair restart tool state through chat owners (71b4512)
- Keep fork timeline writes inside session storage (36f838d)
- Use session owner for parent chat notifications (a0bd7fe)
- Remove legacy queued steer persistence path (09d5eff)
- Route live tool persistence through chat owner (7ad1e67)
- Hide store backend preference (d20edae)
- Drop legacy tool and role shims (f40746a)
- Simplify store transactions and index jsonfs (6d6a008)
- Avoid synthetic instructions after tool results (3f5184e)
- Make turn instructions visible (3a99f25)
- Wait for outstanding caveman jobs before chat turns (242f694)
- Default exec stdin waits to ten seconds (7a7aee2)
- Simplify exec start rendering (365beeb)
- Improve mobile web layout (0ac539f)
- Encourage visible progress during tool use (55c51bd)
- Reduce exec start result rendering (a3405fb)
- Improve caveman thinking conversion prompt (3aa6d47)
- Tune caveman thinking activation (0a8837c)
- Keep chat URLs in sync (f16c4d0)
- Split chat orchestration tools (b6dc205)
- Add session chat deep links (8c18edd)
- Document debug API (1c5cc0c)
- Fix rollback modal completion (7472568)
- Fix timeline rollback actions visibility (4803104)
- Add custom model aliases from detected models (76278ff)
- Format topbar session and workspace (26a6bf7)
- Add topbar session title editor (642feb2)
- Expose queued chat state to tools (f9a1bb3)
- Add exec process overlay and terminate action (d97b0d3)
- Keep chat and milestone filter badges stable (d52209b)
- Fix milestone filter active badges (7555eae)
- Add chat rollback and fork actions (2a72e00)
- Offer to create missing session project folders (e912594)
- Cover normalized relative file paths (602c00d)
- Expand home paths in file tools (159b26f)
- Replace todo wording with task wording (99eaaf3)
- Rename todo tools to task tools (4e7a7d1)
- Reject self messages in chat update (04e2015)
- Let owners message and interrupt child chats (89c2f51)
- Reduce offscreen chat stream backpressure (cc306b6)
- Serialize timeline appends before hydration (2879ae5)
- Serialize timeline tool result updates (645d540)
- Make hard restart escape shutdown drain (4a2d79e)
- Keep custom tool results as tool events (0e65408)
- Run caveman rewrites asynchronously (6ece8af)
- Show caveman reasoning token count (4e691b9)
- Bound caveman thinking rewrites (5d286c2)
- Expose active provider requests in debug API (3474c32)
- Stream caveman thinking conversion (6d8c3b5)
- Show caveman reasoning in transcript (de3c025)
- Trim exec output on line boundaries (3debb5c)
- Render exec timeouts in browser UI (ec6c250)
- Keep agents refresh from changing session root (3be83ea)
- Require exec workdir from session root (b632290)
- Show selected exec processes in sidebar (a6c3c03)
- Subscribe web sockets to selected sessions (fe77d32)
- Add lifecycle and persistence logging (bb5d234)
- Enforce global tool availability (4435c8f)
- Remove controller selection compatibility wrappers (bc288d8)
- Make web session selection explicit (adf96f7)
- Disable bash tool by default (e7f6ace)
- Dispatch queued chat input in FIFO order (c0a773c)
- Prioritize queued turns after tool resume (b4531d5)
- Render steers as user turns (57e7e66)
- Cover compacted next-turn request size (6b9b52d)
- Use HTTP RPC for dev restarts (2137352)
- Expose websocket RPC over HTTP (b84bc93)
- Clamp compaction preserved tail to current segment (eb8514e)
- Fix repeated compaction boundaries (ce159d5)
- Capture full debug provider requests (49626b8)
- Show only known context usage (370a004)
- Render lint diagnostics during compaction (da292fa)
- Show current build in status bar (2b495af)
- Fit one-shot compaction requests to context (90a1142)
- Wait for chat loop during close (79021ad)
- Repair context cache during metadata hydration (7aed588)
- Repair context cache when hydrating chat (7427a67)
- Derive context anchors from timeline (f43937d)
- Simplify compaction to one turn-boundary pass (99c1061)
- Clear context counters after chat rewind (f120f68)
- Add debug chat rewind endpoint (3046251)
- Continue chunked compaction to target tail (c08f8b2)
- Preserve compaction tail by tool call count (a5d1dd7)
- Compact current segment after prior summary (e7f4286)
- Ignore invalid compaction boundaries (92d08c6)
- Chunk oversized compaction requests (a2c3913)
- Make compaction requests toolless (f91d130)
- Stabilize Qwen template cache on user turns (1d84f45)
- Keep transcript pinned after deferred rendering (e07c5b5)
- Keep steer continuations cache-friendly (716fa67)
- Record and render steer messages explicitly (74f6d7d)
- Keep websocket live updates healthy (cee62ed)
- Abort streaming turns on hard cancel (87775a2)
- Show restart build age in tooltip (abd3a7a)
- Tighten shell tool argument guidance (f22a0ac)
- Improve mermaid diagram theme (4d538c0)
- Hide empty sidebar sections (6e48e07)
- Filter sidebar exec processes (b9f967a)
- Stabilize llama prompt cache diagnostics (8b45c1b)
- Stop exec process list flicker (0154b1a)
- Expose composer steer send action (cc76ecd)
- Show available restart build metadata (c26a03d)
- Serialize queued user transcript entry (7159e6d)
- Add exec output wait draining (63b6647)
- Clarify steer queue semantics (05632e1)
- Fix queued prompt ordering (4a765a8)
- Unify transcript headers (8a7ad91)
- Add sidebar status filters (552e029)
- Enforce archive state for chat turns (6fd20bb)
- Separate user queue inputs from steers (0cd717d)
- guard shutdown against closed pebble store (6f88fe1)
- trim historical regression tests (6a5c8ee)
- delay process restart until chats drain (b6f7846)
- add welcome session start screen (555cd92)
- discourage repeated chat polls (a4e09ae)
- scope milestone title collision checks (3d1a7e8)
- test repeated tool call arguments (d62086b)
- reuse dev build on restart (5136ea7)
- add milestone dependency tree (8bbb348)
- make exec subscription cancel idempotent (231ed0a)
- track chat token usage (3f3b786)
- acknowledge restart requests in ui (5face86)
- reject todos for closed milestones (c962302)
- summarize todos in milestone list (dec59b5)
- hydrate chat metadata without eager timelines (22dd3d2)
- lazy load long chat timelines (71503f7)
- reject duplicate milestone titles (04f7c86)
- add reasoned chat cancellation (5c94c09)
- refactor planning tools around add and update (8aa8d9a)
- feat: show timestamps on transcript entries (4eb30a6)
- fix: report child chat idle progress once (24668e3)
- feat: expand known lsp server catalog (1d0bd89)
- fix: keep browser tab chat selection local (c40c926)
- feat: add mobile sidebar overlay (fdcbe3d)
- feat: add caveman thinking replay (ec8489d)
- fix: improve diagram themes and lightbox zoom (01da363)
- feat: add model request settings (ea87199)
- feat: allow compact command instructions (6ea99fa)
- fix: load only selected chat runtime (197ee18)
- feat: show chat role and context meter (0814e23)
- feat: replace chat archive with chat update (d842af1)
- fix: decode lint tool results (2baafc9)
- fix: filter completed milestone list (32a4c0c)
- fix: require fresh lsp diagnostics (a116d2b)
- fix: drain chats cleanly on process shutdown (4a05fd9)
- fix: discourage repeated chat polling (e6fed32)
- fix: avoid diagram rerenders while streaming (b44c4c5)
- fix: defer streaming diagram rendering (7208328)
- fix: keep explicit session urls authoritative (1decf8e)
- fix: notify restart readiness via web api (512546b)
- feat: render mermaid and inline svg markdown (42af0ad)
- fix: show running tool status immediately (a146df0)
- feat: emit lint diagnostics as timeline messages (5951cbc)
- fix: summarize file write results for model (53640bb)
- feat: show untracked directory git stats (536b18e)
- fix: abort oversized streamed tool calls (017a9ac)
- feat: hide closed milestones (cf45901)
- feat: show milestone progress bars (e22e468)
- feat: watch workspace changes for git status (9af1ef7)
- fix: terminate shell tool process groups (7f5b72c)
- Guide large file writes toward edits (52d3ece)
- Move workflow role into chatrole (f5c1aab)
- Use toolkind in config and role policy (89597aa)
- Move permission overrides into access settings (d92643a)
- Move tool kind ownership out of domain (31621f1)
- Move permission modes into access settings (2562eb2)
- Move planning statuses into planning (194d945)
- Move provider message roles into provider (612ff34)
- Extract shared ID generation (c9e0033)
- Move planning control interface to tools (a8a752e)
- Move storage ownership into sessions and chats (50f1f63)
- Archive chats through chat owner (0c6c4e6)
- Make session UI updates event driven (6c8738f)
- Color tool status badges (6c82dd7)
- Improve selected chat status contrast (d079126)
- Color todo status badges (38f43c2)
- Use snake case enum strings (e40c816)
- Align todo status tool schema (1e4bda8)
- Surface invalid provider tool calls (6985752)
- Accept snake case todo status args (691eeeb)
- Color milestone status badges (6283c21)
- Decode stale tool names in transcript parts (18dd1d1)
- Tolerate stale persisted tool names (db26f55)
- Ignore removed tool defaults in config (309683f)
- Improve compaction status feedback (b96098f)
- Update system prompt file tool names (9209b03)
- Remove apply patch tool kind (9d84664)
- Rename file tools to file-prefixed calls (6cfd755)
- Group tool preferences in browser settings (2132b85)
- Bubble session chat additions to controller (600196d)
- Apply queued steers at turn boundary (349066f)
- Fix enum string normalization (d48cf89)
- Warm LSPs from file contact (16f5eb5)
- Add tools preferences tab (08dddbb)
- Document push discipline (da3044e)
- Use header icon actions for modals (567fc4f)
- docs: add coding agent feature comparison matrix (7999f1f)
- Normalize provider tool args before storing (3ceec91)
- Use provider wire role names (23a9c2c)
- Expose session hydration in debug API (7f46487)
- Only resume chats with pending tool calls (54e2b01)
- Use snake case tool kind wire names (719e1b9)
- Use generated enum text methods (9d8cf58)
- Fix tool default config key parsing (06e4ea5)
- Fix compile and chat queue tests (feac794)
- Convert all domain enum types from string to uint8 + iota using enumer (9feccc2)
- Show requested read line ranges in web UI (e709228)
- Replace permission profiles with access settings (0601de3)
- Add go-quality skill copied from codex (1dc3bb4)
- Recover stale browser session selections (3c9c269)
- Clean up tool helper ownership (4c740b4)
- Make persistence owned by runtime packages (7b7db3f)
- Make store generic over backend drivers (841f0ce)
- Use planning types outside store (4deaf42)
- Use single session chat creation path (b58434f)
- Remove decomposition chat role (c6bdf3b)
- Scope planning access by chat (5b1fca6)
- Move planning helpers out of tools (76c0075)
- Introduce planning package types (be0e118)
- Split controller behavior files (76c60ca)
- Reject legacy tool argument aliases (958e7ab)
- Derive chat status from sessions (4cc6aa8)
- Remove stateless tool registry (b7180aa)
- Remove registry constructor compatibility (d5e9401)
- Remove tool result control hook (1ff9576)
- Rename browser project root state (120e83d)
- Pass debug store explicitly to web UI (321f88d)
- Delegate child chat orchestration to engine (9f53572)
- Make sessions own live chats (b382f3b)
- Make tool runtime explicit (dd34eb9)
- Remove stale theme and session context packages (466d270)
- Update docs for browser-first app (05ea278)
- Make browser startup flags explicit (d1c1129)
- Rename UI core to browser app (de1918e)
- Move live session owner to session package (7cd6727)
- Fold color helpers into theme (4ef5c39)
- Fold turn control into chat package (b7776a3)
- Route remaining live mutations through owners (fc66674)
- Require explicit runtime for tool registry (b5a786a)
- Remove store planning control from tools (a324774)
- Route chat selection repair through session owner (49734d7)
- Move selection touch into session owner (650b6ff)
- Repair active chat models through session owner (bbdeee9)
- Require live owner for planning control (ba5f4ff)
- Let session owner add prepared chats (a7a5f2a)
- Load controller state from session owner (67650c6)
- Require explicit planning control for tools (74c4952)
- Let chats own context usage updates (2351c35)
- Delegate planning mutations to session owner (c723227)
- Route chat mutations through session owner (6bf3ef0)
- Introduce live session owner (e4b2069)
- Use service terminology in chat runtime (499ecac)
- Simplify chat runtime service paths (6b28335)
- Compact whenever context exceeds threshold (734ec9f)
- Refine read tool pagination (7469e8d)
- Remove legacy engine chat runners (a203d81)
- Convert remaining engine runner tests (f97f50d)
- Drive engine tests through live chats (289a9c6)
- Construct chat deps explicitly (90d1e6e)
- Convert side chat and continue tests (471346b)
- Convert prompt tests to live chat helper (f2276e2)
- Add live chat prompt test helper (1fe055d)
- Remove legacy chat runner fallbacks (baa4c7b)
- Route manual compaction through chat service (4a86994)
- Split chat tool turn service (1df7910)
- Split chat turn preparation services (8f4698f)
- Set dev script default web bind (4a678c0)
- Introduce explicit chat runtime dependencies (6518f3c)
- Move live turn loop into chat (257b424)
- Centralize auto compaction checks (d7eea72)
- Archive chats instead of deleting them (0f6b89c)
- Wire restart button to process restart (d44496e)
- Create manual chats from controller state (84d2cc6)
- Remove agent chat start mutations (7fa455b)
- Create tool chats from session state (ad6ce75)
- Make planning mutations memory first (ddaae1c)
- Persist tool results through live chat (195f55a)
- Route planning tool writes through session control (bd1f1ab)
- Route chat start through controller session state (2e74202)
- Add C64 bitmap logo variant (97a48a7)
- Add koder logo variant sheet (e8e4e1b)
- Improve composer interrupt shortcuts (58935e2)
- Remove old dev restart script name (e3492f7)
- Signal restart-needed builds in dev script (e91b042)
- Clarify webfetch model context behavior (09a5452)
- Queue steers after active turns (583dbf9)
- Skip restart auto-resume for queued user work (a6174a1)
- Render queued user sends once (88ee0e7)
- Keep compaction threshold session-global (a0e928a)
- Refresh preferences after provider save (05eae23)
- Add session details editor (8910068)
- Make project root session scoped (9957bbe)
- Remove session-level model state (3b0e43a)
- Focus composer after UI reload (48ca838)
- Honor compaction boundaries in compaction renderer (16ffcc9)
- Add image previews for view_image results (bc37240)
- Render compaction history as text only (acaffbc)
- Render user badges inline (ded6e1a)
- Classify stored auto resume messages (1f1cc44)
- Persist composer drafts across reloads (ca01e48)
- Distinguish user message sources in chat UI (3c5bf15)
- Render auto resume as user message (2323270)
- Stabilize git environment prompt (1505eb2)
- Fail stale running tools on startup (7d8638c)
- Keep dev restart alive after failed stop (44a7279)
- Show managed exec processes in chat UI (c293263)
- Add centralized code diagnostics and lint tool (2f4ff00)
- Improve edit tool feedback loop (9047d07)
- Loosen removed settings test (17d2f16)
- Remove unused web UI settings (d9bc38b)
- Remove unused UI preferences (bfbc7b3)
- Remove cursor blink preference (bb0fb37)
- Simplify edit matching (76410f5)
- Serve debug endpoints from web UI (5ba73f4)
- Avoid duplicate live prompt user items (3dddfd1)
- Continue approved tools through live turns (f620f4e)
- Compact active turns from live timeline (cdc640b)
- Sync active tool results into live turns (19749c8)
- Persist assistant messages through live turns (901a9f8)
- Use live chat timeline for prompt turns (93ba473)
- Use live chat timeline for continue turns (e4eff04)
- Render queued steer messages immediately (e8d66aa)
- Reset chat status after tool result (4c3c6ac)
- Fix prompt auto-compaction target chat (3c7bf1f)
- Show compaction preprocessing progress (1f31334)
- Remove volatile time from environment prompt (4483eb9)
- Show streamed tool call progress (bccd3e2)
- Show LLM preprocessing progress in chat status (936c559)
- Refresh queue after applying queued steer (32bb926)
- Fail pending tools after process interrupt (5537143)
- Fail in-flight tools after restart (9d8137e)
- Show provider prompt progress status (d5f86f6)
- Probe prompt progress opportunistically (b707ca7)
- Auto-detect prompt progress support (bf0f386)
- Raise default bash timeout (8d6076a)
- Treat dev restart TERM as error (93379ca)
- Clarify dev restart exits (88f0841)
- Report dev server exit status (f980a0b)
- Log dev restart watched changes (239ef10)
- Bound dev restart shutdown wait (f1f123c)
- Update planning sidebar from live state deltas (04b9f54)
- Add composer queue controls (9a18943)
- Keep multiple sessions active in web server (af0b2f6)
- Add session rename and delete support (252c1b7)
- Use chat model for active runs (8408f80)
- Fix data race in Manager.publish on subscriber channels (73941a8)
- Show chat context details on hover (a22ac34)
- Detect active model context window (c7ae0d2)
- Fix ineffassign issues found by golangci-lint (aba6708)
- Render model errors in chat timeline (9635a89)
- Split provider and model settings (8fbaf5b)
- Repair provider settings after deletion (9ef1547)
- Refresh models from live selector (e440c55)
- Validate provider models from live probes (0b88c9a)
- Add structured output exec mode (41fd639)
- Add chat queue management helpers (558db4f)
- Remove idle controller polling (81e3710)
- Update README for browser agent (d22155d)
- Remove apply_patch tool (05bc4d9)
- Fix compaction model settings select (6877e4b)
- Generalize subagent chat start (a804bce)
- Move permissions to bwrap sandbox profiles (fe66810)
- Style settings tabs as blocks (067b167)
- Add structured permissions settings UI (02ca229)
- Integrate provider and MCP editors into settings (e2074ec)
- Restore saved compaction model option (ff89aee)
- Remove topbar theme switcher (7e95952)
- Resume last workspace session on startup (e352e0d)
- Remove unused spinner preference (278def3)
- Make code style a settings dropdown (90765dd)
- Add slash command completions (bfbbab4)
- Isolate agents project root fallback test (65ae2c2)
- Add web settings dialog (ebb83bc)
- Add preferences API (151197b)
- Add managed compaction prompt settings (4d95ca7)
- Stream compaction requests when enabled (c651093)
- Remove legacy stored result parsing (ff0ffe4)
- Remove backend clipboard package (888ac55)
- Remove workspace web bind state (1670fbc)
- Reuse global web bind (68cff5f)
- feat: add koder skill verify command (fdb779a)
- Tighten model option fallbacks (560a62c)
- Simplify web bind startup (f43fe25)
- Remove legacy permission migration (7f567bc)
- Require tool call IDs for approvals (2d917e1)
- Unify tool call permission preparation (eb619e9)
- Remove unused Go helpers (b147cf8)
- Manage system prompt as user asset (62ce8f9)
- Sync bundled defaults into user assets (1881d53)
- Align permission profile options with config (1fe44c8)
- Constrain sidebar chat title overflow (5745c6f)
- Show running tool name in chat status (31584d5)
- Show model context and capabilities tooltip (82da829)
- Persist and reorder sidebar chats (9315aa7)
- Handle restart interruptions and auto-resume (be4d92f)
- improve: skill list shows search paths and helpful hints (1d5cbc7)
- feat: add koder skill validate and list subcommands (ff0421c)
- tools: preserve request identity on Normalize failure (12bb029)
- skilltool: remove permission bypass and output truncation (d4dd83d)
- Support pasted images in web composer (eb49db3)
- Compact web git sidebar summary (5268fd0)
- Compact web chat list rows (aa7bbd2)
- Show reasoning token count in web UI (e5f4a95)
- Update web sidebar ordering and context (e89ef59)
- Compact web sidebar layout (9d33b8b)
- Refactor debug state for web clients (75fbb33)
- Move web interrupt control to composer (80117cc)
- Remove legacy terminal UI packages (507cb45)
- Extract chat roles and permission profiles (9eed1c1)
- Enforce workflow chat tool boundaries (fa4642e)
- Refine milestone ownership lifecycle (9fd6a07)
- Expose todo update IDs as UUID strings (120ac3e)
- Probe readiness before web reconnect (3db3a44)
- Accept UUID chat IDs in chat poll tool (2db5566)
- Preserve accumulated streaming assistant text (35bde0e)
- Stream mutated timeline item deltas to web UI (dc12361)
- Keep web chat IDs as UUID strings (1298c46)
- Use UUID IDs across persisted state (fee2609)
- Use UUID timeline item IDs (1455fba)
- Send persisted notices with status events (2bd646a)
- Replace streaming temp items by sequence (c93abc2)
- Render notices compactly in web chat (1bf7e36)
- Compact failed command rendering (94a8bf1)
- Use full width web chat turns (afdea3a)
- Send compact web UI deltas after snapshot (235f513)
- Stream live state for all session chats (fd3f8a1)
- Inherit session permissions for new chats (27e5e7f)
- Remove approved tools from sidebar immediately (ecb9a1c)
- Allow parallel active milestones (61fcc2c)
- Add cancelled milestones and sidebar planning tree (6bbd40a)
- Encode empty tool arguments as objects (95131ba)
- Store permission policy on sessions (c57a46d)
- Keep web transcript anchored at bottom (af18c95)
- Keep permission changes during runtime updates (468b951)
- Fix Firefox web UI reconnect latency (ee437a5)
- Keep active chat metadata in UI state (d4ed1d4)
- Mark web UI ready after hydration (288d087)
- Keep web reconnect under one second (66ce139)
- Improve web UI reconnect behavior (8256bc5)
- Add show image tool (c77fbd1)
- Derive approvals from tool call state (bdbf1d9)
- Keep code search language servers warm (35e2642)
- Render approved tool calls as completed (2d07f0d)
- Simplify web transcript turn styling (cd8c728)
- Restore pending approval state after restart (70a8b18)
- Load web app script before Alpine (864c446)
- Embed web UI assets as files (217a2fe)
- Revert Qwen tool replay argument change (f408c66)
- Handle Qwen tool replay arguments (c00f25b)
- Keep web transcript anchored at bottom (62914e5)
- Vendor web UI runtime assets (12c83db)
- Reset stores on schema mismatch (47607d6)
- Back code search with LSP servers (5684b5e)
- Replace streamed assistant with final item (447805b)
- Start web transcript at bottom on load (455d3bb)
- Add Go code search tool (b739074)
- Show per-chat sidebar statuses (4ef0a7c)
- Update generated chat titles (4873c88)
- Preserve web transcript scroll position (31a821d)
- Preserve parallel tool result attachments (482d06e)
- Return updated state after web chat switch (35c1b89)
- Avoid duplicate command in web tool output (f6db430)
- Render compact web tool results (2f7c3c1)
- Timestamp dev restart output (7534018)
- Resume only current pending tool calls (18c52ec)
- Render markdown in web transcript (4d21234)
- Harden web UI reconnect sends (d0860fb)
- Gracefully drain web restarts (d21c75e)
- Reload web UI when assets change (acd50f6)
- Store web workspace state in backend (5884cad)
- Show live git status in web sidebar (4a8a66c)
- Add web workspace session management (b4e105c)
- Add web composer completions (bff9956)
- Make web composer auto grow (67439bd)
- Add web provider management dialog (0e83f09)
- Add web chat deletion (a08d2db)
- Add draggable web sidebar split (b83ae42)
- Reuse web UI ports per workspace (8451dfc)
- Show planning state in web sidebar (4dc565c)
- Add web model picker (95836ca)
- Handle web permissions command (08f9290)
- Submit web composer on Enter (cf6b9fd)
- Add web UI renderer (6167fb7)
- Report full damage on retained repaint (127a509)
- Fix retained sidebar clearing (e743da8)
- Cover generic store transactions (29c8835)
- Remove legacy stored tool argument parsing (03d69cf)
- Dump session timelines (ba2a637)
- Remove legacy chat transcript shims (a11cfcb)
- Render app transcript from typed timeline (e9b33a8)
- Remove legacy store transcript APIs (ca774af)
- Load app and tool updates from timeline (adf1248)
- Move tool results onto timeline items (bc9e85d)
- Mirror legacy events into timeline snapshots (ba17815)
- Project transcript from timeline at UI boundary (2e4fc4c)
- Preserve legacy parts on timeline storage (2bec15b)
- Introduce timeline-backed chat state (de01387)
- Bind tool results to owning turns (b56031f)
- Skip clean FPS frame renders (ff5bc1c)
- Fix sidebar spinner retained repaint (f775b5d)
- Paint retained column children in row bounds (f31782c)
- Render tool runs as assistant turn children (bffd72f)
- Update retained sidebar spinner on timer (8449828)
- Compose sidebar from retained UI rows (3e51bc8)
- Reject provider tool calls without ids (e97d4c0)
- Move spinner animation ownership to ui (906bed0)
- Repaint dirty retained container nodes (2de6a14)
- Refresh transcript for runtime tool results (d257a24)
- Reload sidebar details after planning tools (738c674)
- Refresh pending assistant from chat deltas (8d9f8cf)
- Cache transcript static prefix separately (acf7c6b)
- Avoid transcript relayout on repeated busy updates (e25479a)
- Stop provider stream emission on cancel (2d7db6f)
- Render streamed tool call placeholders (485eeff)
- Fix context estimate after compaction (043a09c)
- Make escape interrupt active chat streams (83fd9e6)
- Refactor chat state and add generic store collections (ccbf605)
- Remove app chat state render graph (02e1f4c)
- Keep loaded app chat state as snapshots (1e3bef4)
- Render transcript from chat snapshot values (2673bd7)
- Clean up app naming leftovers (a730f23)
- Rename root UI model to app (8c40059)
- Finish snapshot-only active app state (a65f061)
- Centralize active snapshot metadata updates (573d975)
- Centralize queue state updates in app (6209289)
- Unify snapshot-backed state detection (682f001)
- Centralize pending assistant state updates (af2c4de)
- Sync active snapshot after local chat mutations (c229d88)
- Avoid pending assistant mirror for runtime chats (c468a82)
- Stop mirroring runtime chat records into app (8273503)
- Sync runtime snapshot metadata on local events (6a9e12e)
- Keep pending assistant snapshot in sync (752d9ec)
- Build chat state from active chat snapshot (e2f901d)
- Keep active queue snapshot in sync locally (f16527f)
- Render pending assistant from active chat snapshot (730536e)
- Read active queue state from chat snapshot (c6e89fe)
- Reduce app mirror reads for active chat (7b70631)
- Shift app toward chat snapshot reads (bf8b71f)
- Move live chat runtime into chat package (53f4799)
- Stage tool cancel before forced interrupt (75e35cd)
- Refresh context after compaction completes (1378203)
- Improve compaction card text and suppress duplicate render (2dff617)
- Expose runtime state and approvals through chat runtime (f1aa326)
- Route approval replies through chat runtime (f083f9f)
- Make runtime authoritative for active chat updates (1f31f57)
- Route loaded chat queue state through chat runtime (e916d90)
- Move prompt and continue orchestration into chat runtime (31abfe3)
- Derive live context from streamed chat content (76aa0ae)
- Move context usage onto active chat state (e048628)
- Add chat current context usage helper (b838697)
- Anchor chat context on latest request usage (38cc897)
- Bind active chat updates to in-memory records (926b207)
- Use char-based live token estimates (d6ff46c)
- Clarify ignored paths must not be committed (69cc380)
- Document research agent comparisons (588a8a3)
- Anchor context estimate on latest usage (c1831c8)
- Expose live interrupt state in debug runtime (7620ea6)
- Update tool runs in memory from event payloads (a32ce52)
- Render requested tool calls before completion (6893281)
- Add provider manager and cross-provider model picker (74240e7)
- Accept reasoning-only compaction summaries (d391434)
- Bind transcript messages to shared chat state (a7a1c35)
- Refresh transcript when tool calls persist (6270acc)
- Preserve esc interrupt during busy reloads (efbbb7f)
- Simplify preferences dialog navigation (4b064f9)
- Persist compaction kept-message boundary (140171e)
- Show compaction lifecycle in transcript (d22ffd7)
- Accumulate request usage into chat context (5d9c057)
- Always show sidebar context usage (8afba3f)
- Refresh transcript viewport on busy layout changes (a5d1c77)
- Add compaction preferences and preserve tool batches (ec87a58)
- Lower default auto-compaction threshold (0f12bb7)
- Refine transcript status phases (91424d5)
- Refresh after closing permissions picker (2844800)
- Refactor parts to typed payloads (1f4c65f)
- Persist chat context token accounting (7d19873)
- Fix picker window close control (e02fa9e)
- Add auto-continue preference (4db6a3d)
- Fix modal repaint after handled input (761dfc8)
- Clean up Go quality findings (1ab13a2)
- Improve planning tool feedback (1ed0b16)
- Use retained composer height after paint (af6449b)
- Clone surfaces before overlay mutation (7c6c70b)
- Paint main screen through retained canvas (3866cff)
- Paint transcript viewport without surface snapshot (ca0c401)
- Paint composer without intermediate surfaces (a8fcb8d)
- Add env runtime profile capture (dd70498)
- Optimize surface damage and retained cache (e54a6c8)
- Reduce composer and text measurement allocations (e8461d3)
- Slow spinner animation to 250ms (0a652be)
- Add retained node focus and wheel routing (2ab95c1)
- Let composer node own cursor blink (1943ae0)
- Cache runtime environment prompt per session (5aece64)
- Make alt-up restore queued prompts (9bcf135)
- Add runtime environment context to prompt (ce55297)
- Fix busy enter and tab queue modes (45d870f)
- Replace main screen widget with flex nodes (fd08235)
- Make main screen widget attribute driven (04152bf)
- Split main screen UI nodes into tui package (a9be7af)
- Fix clipboard test once reset (519f1e8)
- Move app model out of tui package (6dc5a21)
- Move CLI wiring into cmd koder (f7a411f)
- Specialize chat viewport append rendering (8c15b69)
- Move tool definitions into registry specs (cb601f6)
- Move tool presentation metadata into registration (521b15a)
- Use optional tool presenter interface (82e7b61)
- Make tool result hooks optional (85e1c6b)
- Make permission request helpers methods (37a0ab0)
- Remove pass-through helper wrappers (acc6818)
- Format TUI startup setup (2ae900e)
- Convert UI helpers to methods (e5e694c)
- Optimize UI text width measurement (d64cd4b)
- Document UI layout helpers (ea08ad1)
- Document UI package primitives (21e936d)
- Coalesce streaming renders on frame ticks (a9e580f)
- Defer idle transition until run completion (0f312ff)
- Fix escape interrupt chat cancellation (b4a8695)
- Tighten UI node contracts (f5b4897)
- Encapsulate UI container child storage (97e923d)
- Split UI container interfaces (b399568)
- Adjust exec command run titles by status (fac8b76)
- Retry transient chat EOF failures (bf9fdc4)
- Track sidebar context as token count state (9d0330b)
- Separate sidebar context estimate from usage totals (6d3994b)
- Interrupt active runs from composer escape (884d921)
- Cover queued reload stream preservation (2b30d2f)
- Preserve pending assistant text across busy reloads (06f6c33)
- Normalize usage updates for live sidebar (b51fded)
- Block completed milestones with open todos (37dac72)
- Space out sidebar sections and list planning items (e6275e5)
- Track live usage in sidebar model state (b2c2da8)
- Fix escape interrupt with focused main window (2516aff)
- Tighten prompt against teaser stops and backtracking (d5ebfa2)
- Add debug session continuation analysis (9630beb)
- Render compact line-numbered edit details (40d97df)
- Colorize compact edit diff summaries (3dfc08b)
- Compact edit tool run headers (03ccb09)
- Tighten tool-call continuation prompt rules (1bc6162)
- Render edit diffs as summary-first cards (3ff68a9)
- Clarify failed tool result rendering (8e86841)
- Allow zero-based todo item IDs (ed89bc7)
- Disable Qwen preset thinking by default (cda0907)
- Persist sidebar width preference (2f1f714)
- Swap sidebar width shortcut directions (5d4c2ff)
- Lock sidebar width in retained flex layout (e73f195)
- Add layout-safe sidebar width hotkeys (f16e65f)
- Move composer blink timer ownership into widget (abc8949)
- Self-invalidate composer node on text changes (1944ece)
- Restore program tests after escape fix (c528c04)
- Avoid swallowing text after escape (d43df58)
- Add Qwen thinking token budget preset (585897d)
- Add shared alt-word editing behavior (6065df7)
- Wrap composer at word boundaries (b0dd73d)
- Interrupt active runs with single escape (bb97c04)
- Auto-expand composer for multiline input (c93b384)
- Improve sidebar density and token stats (bb83e64)
- Improve exec tool run UX (65a2c1d)
- Guard fenced code blocks without info text (767bc16)
- Auto-compact on tool result churn (9f15caa)
- Summarize edit results for model context (951c379)
- Switch TUI exec updates to subscriptions (606df7b)
- Surface live exec sessions in the TUI (f88e873)
- Add persistent exec tool family (7c36a3b)
- Add exec session manager core (6714d48)
- Add compaction fact carry-forward guidance (eb928ed)
- Stabilize MCP tool ordering (7962848)
- Add view_image tool support (b764d61)
- Resync transcript click targets while busy (7e68e32)
- Fix sidebar busy spinner animation (4c60266)
- Embed agent system prompt markdown asset (3096492)
- Show thinking indicator during reasoning streams (a08f1fc)
- Set edit forgiveness default to 3 (618dacf)
- Add edit forgiveness preference (df91614)
- Tighten edit tool descriptions (5d2dc25)
- Fix glob matching for root files (dd89e2e)
- Tame automatic session title refreshes (890d592)
- Backfill built-in permission profile rules (248846c)
- Wire MCP manager into tool execution (f5a6c51)
- Simplify MCP tool naming (e0b8a07)
- Refactor MCP dialogs into reusable nodes (572783c)
- Add remote MCP management UI (52a1e69)
- Add remote MCP runtime and tool bridge (8ff2a74)
- Continue after reasoning-only tool turns (07cb390)
- Show reasoning-only assistant turns (125de5f)
- Record SSE bodies in debug traces (0b29053)
- Remove image capability heuristics (42769c8)
- Probe image support on paste (fad7013)
- Make composer tokens atomic (8c5af38)
- Fix image send capability checks (3fbb845)
- Inline attachment placeholders in composer (9fafeb2)
- Use Wayland clipboard opportunistically (39025f8)
- Add Wayland clipboard POC reader (47a2845)
- Integrate draft images into composer (88c8de1)
- Tighten markdown task list rendering (1c37a9d)
- Add Chroma markdown code highlighting (2c67c05)
- Complete markdown coverage rendering (e382151)
- Surprise (b6e964f)
- Add terminal color profile output mapping (9df0b69)
- Remove lipgloss from UI and theme stack (ba080e4)
- Tune retained runtime damage and add modal benchmarks (4e34f6a)
- Expand retained UI benchmark coverage (aeddffb)
- Add node boundary tests and cleanup test helpers (60accf1)
- Migrate UI and TUI element composition to nodes (96a057b)
- Narrow main screen leaves to measure and paint (bd2adea)
- Compose retained main screen with flex nodes (f4bfe6e)
- Enforce no legacy render API in ui and tui (5c8df49)
- Delete render wrappers from transcript and tool views (ec827d2)
- Delete render wrappers from layout and menu widgets (7350965)
- Delete render wrappers from core ui primitives (9067d0c)
- Rename dialog render entrypoints away from Render (55e9300)
- Remove render fallback from element helpers (d457db4)
- Make cached and transcript elements paintable (ec9ea6f)
- Capture painted controls without runtime fallback (3692455)
- Require window painter path in ui root (6474cb5)
- Route model windows through painter path (9298ec6)
- Route app surface rendering through paint helper (3498e68)
- Move dialog renderers onto paint helper (9475782)
- Move non-interactive surface callers onto paint helper (7570134)
- Use scratch-surface helper for retained widget caches (36dcec6)
- Remove dead RenderTo helpers (886105e)
- Remove SurfaceRenderer from core UI widgets (1abe2d3)
- Make main screen retained root satisfy ui.Node (11f0c99)
- Add explicit retained prepare phase (ad20a0d)
- Extract reusable managed retained element nodes (7c06893)
- Reuse retained damage across main screen relayouts (c21d01a)
- Drive main screen repaint through retained child nodes (b59fed7)
- Paint remaining lightweight UI wrappers directly (2453c32)
- Paint modal and picker wrappers directly (a638566)
- Paint selection grids directly (ce9fbaa)
- Paint menu and prompt wrappers directly (088465b)
- Paint control rows directly (f8286f6)
- Paint tool run docks directly (88882b5)
- Paint transcript containers directly (492d6f8)
- Paint assistant and reasoning transcript blocks directly (e674028)
- Paint user transcript messages directly (ce63c02)
- Paint hit boxes and modal frames directly (54d4bf5)
- Track layout and paint dirty state in retained nodes (0687f56)
- Add optional direct-painted window support (c45f8f4)
- Move retained transcript pane onto element paint (dd95f64)
- Move retained widgets onto direct element paint (a024e2a)
- Add retained node layer for main screen layout (3a12a96)
- Move layout widgets onto canvas paint path (a0d0576)
- Move UI wrapper elements onto canvas paint path (97daed9)
- Add direct canvas paint path for core UI elements (efc55c4)
- Special-case composer cursor invalidation (c926829)
- Tighten status widget invalidation (28d0e55)
- Push UI damage tracking into main widgets (b076ac1)
- Add rect-based UI damage tracking (b92a1f4)
- refactor: render transcript widgets into caller surfaces (14a0a0f)
- refactor: render simple widgets into caller surfaces (c38f8c4)
- refactor: prefer renderTo in layout widgets (f7c2529)
- perf: copy overwriteable blit spans (1d33a7c)
- perf: pack cell flags into bytes (d3f9d4f)
- perf: dedupe debug runtime snapshots (2909aec)
- perf: store cell glyphs as fixed-width runes (243a051)
- perf: flatten cell style flags (3ffe5cc)
- perf: pack cell colors into rgba (45a2a2c)
- refactor: move viewport rendering to caller-owned surfaces (fd50be4)
- perf: cut cached transcript render churn (50dbd7b)
- perf: gate deep debug and narrow frame diffs (54c61b7)
- debug: trace streamed body timeout failures (6112897)
- debug: record resume chat load timings (48c84e4)
- debug: expose global recorder events (e5a658d)
- refactor: move transcript rendering out of model (dacbce8)
- perf: cache retained transcript heights lazily (6a200dc)
- refactor: model transcript as stable tui items (883f305)
- perf: stop transcript reconcile during live updates (0055d01)
- perf: retain transcript item heights and surfaces (849d07c)
- bench: measure streamed transcript updates (35779c0)
- chore: add startup timing debug logs (78e47bb)
- fix: omit empty tool-call content (11226a5)
- fix: merge streamed tool call arguments (321b3f2)
- fix: keep streamed transcript visible during turn (3077e7d)
- fix: stop debug tracing from buffering streams (c138d02)
- fix: update transcript live from streamed turns (a89e1f3)
- fix: stream main chat responses (ea36be6)
- refactor: drop auth method provider mode (b00269d)
- fix: detect context for all compatible providers (bb68798)
- fix: detect vllm context window from model list (50d833e)
- ux: make tool turn preference directly editable (9a094fc)
- feat: raise and configure tool turn limit (dd25949)
- ux: add chat switch hotkeys (34fe34d)
- ux: clarify read transcript paging summaries (37c14b6)
- fix: paginate read tool against real files (a6aa4ad)
- fix: return tool persistence marshal errors (5027032)
- fix: return grep execution errors (b9668e5)
- fix: wrap markdown tables to transcript width (854f5c2)
- fix: tighten reasoning transcript spacing (68310bb)
- fix: keep half-block separator rows transparent (4a6aaf8)
- fix: restore half-block bubble separators (27007cb)
- fix: invert half-block transcript separators (c600d5b)
- ux: document queue editing in help (2683e7d)
- feat: add bang shell escapes in composer (7cf55ca)
- fix: show italic reasoning without viewport jumps (fc07411)
- fix: persist selected provider with model (33c5908)
- fix: clear cached slash command composer state (2039c81)
- fix: allow optional provider api keys (8c595cc)
- chore: fix golang lint findings (4312de7)
- feat: add model presets for request shaping (41f20b3)
- test: cover chat and milestone tools (5e5e665)
- test: cover core and simple tool packages (8c735ed)
- test: cover chat runtime and references (8a88d5b)
- test: expand app and version coverage (ede9f11)
- docs: refresh architecture and testing guidance (ec6b44e)
- Add persistent chat input queue (a47bb37)
- Fix queued steering preview wording (c316a60)
- Add wrap-aware inline toolrun controls (2956af3)
- Fix edit toolrun expand hitbox (f44ffcb)
- Split bash command and output expansion (edff717)
- Add transcript item debug geometry (7ff1804)
- Render edit tool expansions as unified diffs (70e5918)
- Remove ANSI styling from AGENTS sidebar status (c491f7d)
- Make approval UI modal and scope permissions by chat (297cd44)
- Refresh approval prompt on keyboard navigation (b77dcdd)
- Instrument chat load timings (cdc7bd6)
- Add worker chat orchestration tools (715bdb4)
- Make runtime chats session-scoped threads (81e6648)
- Add chat entities under sessions (53b3ec3)
- Collapse UI layout to FlexBox (323664e)
- Remove dialog dot imports (4f7bd9e)
- Simplify staticcheck append loops (3ea14bf)
- Fix staticcheck type conversions (fa330d1)
- Split milestone and todo tool packages (89f4b83)
- Split milestone planning into add and update tools (7cd4a95)
- Add session milestones and todos (6c9932e)
- Accept alternate reasoning field from providers (fe2f976)
- Upgrade web discovery and fetch tools (cedf409)
- Upgrade grep tool guidance and fallback (010c4cf)
- Use colon-style read line prefixes (e64e22c)
- Normalize tool integers and persist arg failures (19b2b2b)
- Remove sidebar left border (4a17661)
- Narrow tool run expand hitboxes (42eeb76)
- Stop inheriting tool output subtitles (f4d42c4)
- Add generic scrollbox for transcript rendering (d80ce3d)
- Remove transcript border and sidebar divider (6f6315b)
- Initialize composer focus and blink state (7a72331)
- Collapse prompt instructions into one system message (8f53397)
- Simplify tool run transcript assembly (71aae9f)
- Fix resumed tool run titles (2903ac5)
- Tighten bash and edit transcript cards (4d2df82)
- Clarify read tool guidance for models (63c473b)
- Tighten collapsed read tool transcript cards (1dfcb36)
- Remove llama.cpp provider special casing (880fb2a)
- Detect context window for compatible local providers (ce98aa4)
- Handle model tool loops gracefully (9309d94)
- Improve compaction continuation and transcript log (4efc93d)
- Accept integer-like bash timeout strings (a6962eb)
- Decode esc-prefixed alt keybindings (fa107b4)
- Force full redraw after terminal resize (a264daf)
- Clear removed rows when terminal shrinks (0d9b44f)
- Fix live transcript control hit testing (0f618a7)
- Add live input to debug API (1a0d7db)
- Fix expand click hitbox in bordered transcript (95421df)
- Remove main pane right gutter (6800d25)
- Make composer fill transcript width (7e250af)
- Tighten transcript and composer layout (ce96bf1)
- Add border around transcript pane (63f0b11)
- Refresh transcript surface on mouse scroll (18025f5)
- Fix transcript bottom alignment (0cdd048)
- Fix transcript tail grouping and user row background (4fd726b)
- Use exact transcript heights for bottom offset (c66b0b1)
- Fix box layout fill semantics (355ec58)
- Make cached transcript fill its viewport (0c8a7a9)
- Tighten composer spacing and add layout debug tint (4bd43ba)
- Fix transcript clipping above composer (09ba723)
- Expose build metadata in debug runtime (353f703)
- Move transcript status out of the transcript column (a6a9c91)
- Handle zero bash timeout as default (cb2f7ff)
- Fix mouse clicks on cached tool run expanders (f9348b3)
- Remove dead UI and agent code (f2ac4f2)
- Count down rate limit retry status (529f5fa)
- Highlight selected theme grid cells (aec7c93)
- Add inherited UI cell compositing (6ec415a)
- Compose theme chooser from TUI grid dialog (98691f2)
- Keep picker buttons visible (5404c20)
- Add structural UI cache invalidation (6d293d7)
- Refresh transcript colors on theme preview (8d3cfce)
- Retry rate limits and persist terminal notices (7b78129)
- Fix connect dialog button activation (c3c1f01)
- Simplify connect dialog status and fields (d7d3314)
- Compose dialogs from window frames (87cea52)
- Compose dialog chrome from border primitives (9b8a032)
- Use generic input field in connect dialog (41bc39f)
- Compact connect dialog form fields (c244fb4)
- Compose connect dialog form layout (17adfc3)
- Render assistant markdown with styled spans (99bc2c5)
- Improve TUI redraw caching (c1ad3ec)
- Refactor tui main screen rendering cache (9f31743)
- Patch composer updates into cached main view (bcfbe1a)
- Update retained transcript incrementally (ca616f6)
- Speed up composer query parsing (355576a)
- Sync composer redraw with window focus lifecycle (b1f8520)
- Use structured key decoding without string fallbacks (480527c)
- Move tea runtime into ui package (259e96d)
- Fix main-window key dispatch after resume (ae2d33e)
- Strengthen box layout and remove tea string fallback (6ac924f)
- Apply box alignment in visible element wrapper (c1e16e3)
- Add shared box props to visible layout elements (d164068)
- Declare main screen with visible layout primitives (a4fcd59)
- Retain transcript viewport and split activity row (5909966)
- Speed up plain text wrapping (e046761)
- Make transcript resume rendering lazy (56b5205)
- Remove duplicate composer blink scheduling (51b938e)
- Fix root mouse dispatch regressions (d8daa8a)
- Simplify dialog command handlers (0d87a22)
- Remove legacy dialog routing helpers (708a067)
- Retain transcript container and root timers (4574ede)
- Retain transcript viewport rendering (8c86400)
- Add retained UI root runtime (a1ba92e)
- Harden terminal key event decoding (c4a43d0)
- Stop hidden composer blink loop behind dialogs (1aca889)
- Expose pprof on debug API (34c9c4c)
- Keep live surfaces cell-backed during composition (f2a467b)
- Back off input loop on empty terminal reads (861de07)
- Store resolved RGB and text attrs in surface cells (0960827)
- Use explicit SGR output in terminal serializer (b146b1c)
- Reduce dialog string round-trips in UI (ffe9062)
- Render live TUI frames from surfaces (4cdd411)
- Avoid restyling rendered TUI screens (7b50414)
- Keep render caches alive across TUI redraws (db696ca)
- Tighten UI ANSI output boundary (2d4d677)
- Enforce plain-text UI rendering boundary (43b9aae)
- Stop leaking styled previews into session dialog (73567ef)
- Finish shared UI cell-surface transition (2d0f8b1)
- Render shared menus on cell surfaces (c5749c6)
- Render shared frame widgets on cell surfaces (eabeb29)
- Render shared controls on cell surfaces (e97ab46)
- Move hot UI paths onto cell-buffer surfaces (3b48d79)
- Diff terminal output by changed rows (7cd92be)
- Cache rendered transcript blocks for viewport refresh (91d545a)
- Cache composer query parsing by revision (a454fac)
- Reduce textarea typing allocations (53ef884)
- Avoid full-screen string rebuild on input (d721451)
- Render terminal frames without newline auto-wrap (dc4d94c)
- Add UI and TUI benchmark suite (5a34a5d)
- Replace Bubble Tea dependency with local UI runtime (e696658)
- Trim remaining UI wrapper surfaces (eaf1c48)
- Remove transcript and toolrun fallback helpers (28e6620)
- Remove dialog compatibility render paths (695f1d4)
- Render remaining UI leaves from surfaces (2a7ed56)
- Render menu and toolrun leaves from surfaces (edbb12f)
- Render control leaves from surfaces (c6fcf14)
- Render composer leaves from surfaces (0782886)
- Render transcript leaves from surfaces (72ccca0)
- Replace transcript viewport with local state (c2ccd4b)
- Remove dialog mouse compatibility layer (e3fd3c7)
- Handle transcript wheel scroll locally (15781fd)
- Route centered dialog clicks through runtime (4f91ed6)
- Render LLM preview through scroll element (4eb723d)
- Render transcript pane through scroll element (a10b772)
- Use shared list widgets in connect flow (4b7fa74)
- Move selector dialogs onto shared widgets (5018db3)
- Add split, section, list, and table widgets (3055fc7)
- Fix sidebar width in body layout (bcdaa10)
- Add framed window titles and close controls (b0b9f36)
- Add selector headers and tighten model picker (def0263)
- Keep model picker height stable near list end (02c8476)
- Fix modal border width alignment (fbf9595)
- Clamp session dialog to terminal width (41ae5d5)
- Use runtime controls for transcript tool cards (4a8dc44)
- Route dialog clicks through ui runtime (9ba6ab3)
- Remove main-screen static layout fallbacks (4efea3e)
- Render dialog bodies as UI elements (dfec498)
- Render history menu as UI element (5c11dd3)
- Render transcript through UI elements (f1c8b50)
- Render main screen at full width (ef8034c)
- Avoid rendering before terminal resize (1b99dcc)
- Render dialogs directly as UI elements (0b46451)
- Render footer overlays as UI elements (3abc5b3)
- Compose footer and body from UI elements (38f4fe4)
- Move dialog rendering onto text widgets (3814f3f)
- Add text-mode UI element foundation (0bb0790)
- Right-align dialog button rows (6ecab98)
- Use blank lines between non-user transcript blocks (62673cd)
- Fit dialog width to button rows (b0b6763)
- Improve model picker row layout (f6a4e13)
- Simplify model picker rows (a6cc668)
- Align working indicator with composer text (ed5577a)
- Align user transcript text with composer (be71775)
- Render tool card subtitles on separate lines (13bde37)
- Fix grep file path scoping (08877a9)
- Improve grep tool card summaries (11914f3)
- Add spacing between consecutive tool runs (6b3ec6e)
- Move app-specific dialogs out of ui (f86f883)
- Restore queued prompts to composer with alt-up (d569253)
- Render queued prompts above composer (916708c)
- Preserve scrollback during spinner updates (1c1f248)
- Add spacing before tool runs after assistant text (9fe60ee)
- Show optimistic user messages before prompt start (e9f0710)
- Store tool narration as assistant text (c275f8f)
- Refactor UI renderers into widget methods (0c8375a)
- Refine UI focus styling and composer rendering (3fbf7a8)
- Add explicit selection and focus colors (003c569)
- Fix hidden placeholder cursor coloring (4d4881b)
- Render placeholder cursor on first character (e7420cb)
- Show composer cursor with placeholder text (9bdd91a)
- Make composer cursor blink optional (a9bda33)
- Stabilize textarea cursor blink (c783440)
- Fix local textarea input and cursor blink (67487ba)
- Move custom textarea under ui (bfcb07a)
- Replace composer with local textarea (adc519d)
- Add structured @ file references (ecea101)
- Scope session resume to the current cwd (a59b2c8)
- Preview next LLM request from Alt-O (ebd47b5)
- Show edit replacements with line numbers (82c3b30)
- Hide usage system notices in transcript (dd57bbe)
- Add raw tool output modal hotkey (3700538)
- Expand write tool output in transcript (72c0ef9)
- Add CLI workdir startup flags (12575ce)
- Use root base URLs for llama.cpp (bc58332)
- First self improvment w000t (5241b40)
- Fix llama.cpp props endpoint detection (6acf036)
- Detect llama.cpp context window at runtime (c4c6466)
- Add inline composer history search (2d230f4)
- Detect llama.cpp context window on connect (6f3de3c)
- Refine session picker layout (d073ed9)
- Add composer prompt history navigation (94f6f29)
- Render session previews like transcript (4b7583c)
- Add hotkey for system transcript toggle (43889f6)
- Ship tool failures back into the model loop (6c7e595)
- Relax skill and read-ask approvals (f32d44d)
- Add toggle for system transcript output (4654e04)
- Add Codex-compatible skill discovery and mentions (4e7f17f)
- Queue busy enter as steering (9627274)
- Preserve spinner during transcript reloads (3c83d63)
- Add per-session tool toggles (2c1a32e)
- Right-align dialog button groups (f53f40d)
- Refactor dialog controls into interactive widgets (154def1)
- Compact sidebar session details (ffc27ce)
- Simplify sidebar profile display (3bb8428)
- Remove approvals from sidebar (ebe64b6)
- Simplify AGENTS sidebar status (e2e04ea)
- Move sidebar shortcuts into help dialog (1eae6e7)
- Improve selector dialog layouts (d698ed9)
- Persist typed tool result payloads (7bb714e)
- Make tool loop step limit configurable (ad30bef)
- Compress transcript tool run rendering (09c11f5)
- Allow reading current workspace directory (8de3570)
- Improve provider connect model defaults (bae05c1)
- Fix picker row selection highlight (364d37e)
- Fix session dialog row rendering (731a6cc)
- Run batched tool calls in parallel (f57bc69)
- Add popup button hotkeys (8691cac)
- Add in-place permission changes for approvals (c09cef7)
- Standardize centered modal picker layouts (7685dee)
- Add deferred permission steering and continue hotkey (effe1c3)
- Simplify permissions command handling (cebe917)
- Refine tool run expand labels (95a7e1f)
- Add mouse toggle for tool run output (8b57592)
- Add project-scoped permission modes (0f5e9de)
- Avoid duplicate approved tool output (9171d35)
- Harden core tools and add missing editors (89e3e16)
- Add AGENTS resolution and drift tracking (362f298)
- Refactor tools into self-registering modules (ba74b0d)
- Polish grouped tool run summaries (320f3ba)
- Group tool runs in transcript (b6e0360)
- Fix permission wildcard matching (f131f32)
- Cache inferred model capabilities (aa376c3)
- Require explicit attachment state dirs in tests (f4fcb97)
- Add attachment handling across agent and TUI (b087e93)
- Add attachment storage foundation (1cb74df)
- Add clipboard copy and paste support (e70acad)
- Add queued prompts and esc interrupt (f4111da)
- Rename prefs slash command (aebae1d)
- Restore base color after markdown spans (bfe6973)
- Restore assistant transcript coloring (91490f0)
- Tighten half-block transcript spacing (25233be)
- Restore transcript line wrapping (6febb10)
- Sync tab title on session rename (af5b191)
- Print exit summary for pointer models (8236215)
- Silence Pebble startup logging (07938e6)
- Handle ctrl-c through TUI quit path (9e2eaec)
- Print TUI exit summary (f21bec4)
- Use structured provider tool calls (b9c33a6)
- Treat modified enter as composer newline (0dc7ded)
- Clamp sidebar height to transcript pane (1470646)
- Expose viewport state in debug runtime (6b3cb9f)
- Keep debug status out of main pane (0200a47)
- Add resume and fork session commands (4cb9386)
- Clear busy state after starting draft session (9122c52)
- Surface debug API in UI and CLI (fd5bf04)
- Add live debug API and runtime recorder (3afa0e0)
- Show tool executions and idle tab titles clearly (994c820)
- Sync terminal title with spinner and session (80651dc)
- Add configurable spinner styles (0be0b54)
- Fallback to message summaries in transcript (b29f52f)
- Add model selection workflow (55a7c80)
- Add provider disconnect command (00fd0c0)
- Support cursor movement in connect fields (39aabcb)
- Compact provider selection rows (ebd5cb1)
- Improve connect dialog field editing (565ccb4)
- Add interactive provider connect flow (dc69aab)
- Add provider catalog and flexible startup (78dd329)
- Require explicit provider configuration (6aad03e)
- Move main TUI rendering into ui package (8c44cc5)
- Wire dialogs through shared UI components (d168c5d)
- Add composable terminal UI package (0b554b2)
- Center the session resume dialog (886dbb5)
- Use full accent block on content rows (2e30de4)
- Match half-block accent height (503e399)
- Carry accent strip through half-block rows (9742fdd)
- Add optional half-block chat rendering (6a175b5)
- Tighten composer box rendering (08f5605)
- Replace SQLite store with pluggable JSON backends (c6e2798)
- Import full theme catalog (55a9153)
- Fix slash autocomplete for arg commands (218a968)
- Theme the sidebar panel (3e40ae5)
- Add reusable theme picker (3e55caa)
- Render compaction parts as markdown (3f758fa)
- Fix TUI terminal height calculation (84912ef)
- Import curated OpenCode theme palettes (3ea0035)
- Upgrade markdown parser and renderer (ad6a47e)
- Hide system notices from transcript (f608c28)
- Centralize TUI busy spinner state (128c57d)
- Fix full-width user message bubbles (d3f5891)
- Show backend failures in transcript (df2e32b)
- Add named TUI theme palette (a050fb1)
- Add context metrics and session compaction (a426560)
- Anchor chat input to bottom edge (a066a82)
- Animate bottom working spinner (6dcfc07)
- Move hotkey hints into sidebar (e690544)
- Show bottom spinner only during model work (6c6c1a8)
- Keep markdown lists compact (aeb9c7e)
- Replace glamour with native markdown renderer (6293d46)
- Move session status fully into sidebar (be2ba44)
- Fix user prompt bubble background rendering (5a8d77b)
- Move status to sidebar and transcript (2028431)
- Clean model context serialization (8baa57f)
- Respect configured mouse state on startup (6639786)
- Separate slash commands from tools (6cf90be)
- Make mouse capture opt-in (ab8514a)
- Refresh chat on persisted turn events (e5e0c1b)
- Render user prompts as chat blocks (8f67baa)
- Enable mouse scrolling in transcript (3f23aea)
- Show user prompts immediately on send (d81b567)
- Refine reasoning block rendering (6f63d69)
- Render reasoning before assistant output (c027814)
- Show per-file diff counts in sidebar (1c1d046)
- Improve runtime feedback and commit discipline (6e89347)
- Implement initial koder TUI workflow (2da3d75)
- Initial commit (cd74625)