Changelog
Changelog
Section titled “Changelog”Heads up — the version number went backward on purpose. On 2026-07-10 we rolled
mainback to v0.105.0. Everything released between v0.106.0 and v0.108.2 was removed from the main line because of a problem introduced in that range. Nothing is permanently lost — those versions still live under their git tags (v0.106.0…v0.108.2) if we ever need to bring a piece of them back. If you had v0.106–v0.108 installed, updating now will take you down to v0.105.0, which is expected.
1.48.0 (2026-09-05)
Section titled “1.48.0 (2026-09-05)”Features
Section titled “Features”- image-view: render the viewed image inline when the row is expanded (#1052) (6b4c879)
- motion: finish §07’s finger-tracked drawer and §01’s title carry (#1058) (779858d)
- skills: run a local /skill on any provider, not just the claude CLI (#1054) (f491f0c)
Bug Fixes
Section titled “Bug Fixes”- client: stop a second consumer from wiping a chat’s scrollback cursor (#1053) (67da508)
- messages: strengthen user prompt hierarchy (#1050) (642bafd)
1.47.0 (2026-09-04)
Section titled “1.47.0 (2026-09-04)”Features
Section titled “Features”- plugins: close the last three gaps — slash commands, e2e, and C3 (#1044) (e05a8ce)
- plugins: P11 — an install survives a restart (#1040) (bf613b7)
- stacks: multi-project stacks — per-project instructions, peer-root rules, and card dependencies (#1033) (0d1d40d)
Bug Fixes
Section titled “Bug Fixes”- a11y: raw semantic tokens are backgrounds, never ink (#1034) (0a29149)
- design: act on the finish review — navbar overlap, pulsing dot, dead primitives (#1037) (fe4f1c7)
- design: the boundary rule is drawn at a device pixel, and the gloss leaves the measure (#1038) (0b32649)
- packages: locate skills by path and offer a re-pin for pinned skills (#1043) (1ae06c0)
1.46.0 (2026-09-03)
Section titled “1.46.0 (2026-09-03)”Features
Section titled “Features”- cron: edit an armed cron job from the cron view (#1021) (a57bd7d)
- design: sidebar sections get a running head that states a fact (#1030) (56f96cf)
- design: the cron run pill becomes a mark, and the contrast catalog follows it (#1028) (4191087)
- design: the session badge is drawn, not four Unicode characters (#1027) (f692c73)
- design: the user prompt is a plate on the rail, not a bubble (#1023) (79cd13d)
Bug Fixes
Section titled “Bug Fixes”- composer: keyboard navigation of the / and @ pickers (#1026) (2974641), closes #1019
- deps: zod v4 type compatibility fixes (#1031) (8045ea2)
- models: a custom model override must not strip the built-in’s 1M window (#1032) (6fc297f)
1.45.0 (2026-09-03)
Section titled “1.45.0 (2026-09-03)”Features
Section titled “Features”- design: plates instead of cards, and state as mark rather than hue (#1012) (eda7e7e)
- plugins: Paseo-parity plugin system — P0–P9 modules (WIP, P10 outstanding) (#1009) (6304bfb)
- sidebar: add bulk chat selection and delete (#1016) (f7129b2)
- subagents: add OpenRouter provider and model selection (#1006) (608b5a5)
Bug Fixes
Section titled “Bug Fixes”- design: the running turn gets its own tick in the session sigil (#1015) (d0db053)
- loop: add per-chunk git commit and end-of-loop summary to worker prompt (#1017) (477d0f3)
- packages: honour checkEnabled master switch in start() and checkUpdates() (#1000) (e45a747), closes #999
- transcript: lower estimatedItemSize from 96 to 48 to prevent over-scroll on long chats (#1018) (2de1dd6), closes #1014
- transcript: suppress MVCP scrollBy during touch gestures on mobile (#1002) (8b0ee05)
1.44.1 (2026-09-03)
Section titled “1.44.1 (2026-09-03)”Bug Fixes
Section titled “Bug Fixes”1.44.0 (2026-09-02)
Section titled “1.44.0 (2026-09-02)”Features
Section titled “Features”- packages: add OTel spans and metrics for update checks and applies (#962) (#991) (c80538a)
- packages: apply updates for skills and both plugin ecosystems (#956) (#989) (0c0f2b4)
- packages: detect outdated Claude Code plugins (#953) (#985) (c5a8ed3)
- packages: detect outdated Codex plugins (#954) (#987) (cb831b7)
- packages: detect outdated skills via GitHub Trees API (#952) (#984) (ddf84c5)
- packages: opt-in unattended auto-apply with safety rails (#993) (b6716a8)
- packages: PackageUpdateManager — timer, projection, WS push (#988) (e83d301)
- packages: typed inventory snapshot over skills, Claude Code plugins, and Codex plugins (#951) (#983) (ec4ecdc)
- settings: add packageUpdates settings block (#986) (bbe2b93), closes #957
- settings: add Plugins section for Claude Code and Codex plugins (#992) (4d8b1ee)
- settings: show update state and one-click Update in Skills section (#990) (eb4350e)
Bug Fixes
Section titled “Bug Fixes”- auto-continue: cap loop_run_outcome events per arm window (#994) (58e0fa5), closes #948
- skills: add codex to default agent targets and validate aliases (#981) (8b7f628), closes #950
1.43.12 (2026-08-30)
Section titled “1.43.12 (2026-08-30)”Bug Fixes
Section titled “Bug Fixes”- loop: make disarming a loop visible and undoable (#944) (6a64d25)
- loop: re-arm an armed loop’s wake when its orchestrator turn fails (#942) (53d30d7)
1.43.11 (2026-08-28)
Section titled “1.43.11 (2026-08-28)”Bug Fixes
Section titled “Bug Fixes”1.43.10 (2026-08-27)
Section titled “1.43.10 (2026-08-27)”Performance Improvements
Section titled “Performance Improvements”1.43.9 (2026-08-26)
Section titled “1.43.9 (2026-08-26)”Performance Improvements
Section titled “Performance Improvements”1.43.8 (2026-08-26)
Section titled “1.43.8 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”1.43.7 (2026-08-26)
Section titled “1.43.7 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”- codex: reconcile protocol with codex-cli 0.147.0 — move developerInstructions to thread/start, remove collaborationMode from turn/start (#920) (20b7770), closes #916
1.43.6 (2026-08-26)
Section titled “1.43.6 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”1.43.5 (2026-08-26)
Section titled “1.43.5 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”- subagent: forward maxTurns on PTY subagent path; remove SpawnStore dead code (#909) (bd6bee2), closes #891
1.43.4 (2026-08-26)
Section titled “1.43.4 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”1.43.3 (2026-08-26)
Section titled “1.43.3 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”- import: warn on EACCES when scanning Codex sessions, not silently drop subtrees (#903) (0890072), closes #879
1.43.2 (2026-08-26)
Section titled “1.43.2 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”- import: map collab-agent function_call names onto CollabAgentToolCallItem (#887) (cd4176c), closes #878
1.43.1 (2026-08-26)
Section titled “1.43.1 (2026-08-26)”Bug Fixes
Section titled “Bug Fixes”1.43.0 (2026-08-26)
Section titled “1.43.0 (2026-08-26)”Features
Section titled “Features”1.42.0 (2026-08-25)
Section titled “1.42.0 (2026-08-25)”Features
Section titled “Features”1.41.7 (2026-08-25)
Section titled “1.41.7 (2026-08-25)”Bug Fixes
Section titled “Bug Fixes”1.41.6 (2026-08-22)
Section titled “1.41.6 (2026-08-22)”Bug Fixes
Section titled “Bug Fixes”1.41.5 (2026-08-22)
Section titled “1.41.5 (2026-08-22)”Bug Fixes
Section titled “Bug Fixes”1.41.4 (2026-08-22)
Section titled “1.41.4 (2026-08-22)”Performance Improvements
Section titled “Performance Improvements”- transcript: prevent repeated full-load spikes for oversized transcripts and trim dead loop events (#865) (6d96f33), closes #863
1.41.3 (2026-08-22)
Section titled “1.41.3 (2026-08-22)”Bug Fixes
Section titled “Bug Fixes”- cancel: orphaned SDK stream no longer re-arms selfWakeActive after Stop (#861) (22bbf5c), closes #860
1.41.2 (2026-08-22)
Section titled “1.41.2 (2026-08-22)”Performance Improvements
Section titled “Performance Improvements”1.41.1 (2026-08-22)
Section titled “1.41.1 (2026-08-22)”Bug Fixes
Section titled “Bug Fixes”1.41.0 (2026-08-22)
Section titled “1.41.0 (2026-08-22)”Features
Section titled “Features”1.40.7 (2026-08-22)
Section titled “1.40.7 (2026-08-22)”Performance Improvements
Section titled “Performance Improvements”1.40.6 (2026-08-22)
Section titled “1.40.6 (2026-08-22)”Bug Fixes
Section titled “Bug Fixes”Performance Improvements
Section titled “Performance Improvements”- use getRecentRawEntries for history primer to avoid full transcript load per loop iteration (#845) (64dabcd), closes #843
1.40.5 (2026-08-22)
Section titled “1.40.5 (2026-08-22)”Performance Improvements
Section titled “Performance Improvements”1.40.4 (2026-08-22)
Section titled “1.40.4 (2026-08-22)”Performance Improvements
Section titled “Performance Improvements”1.40.3 (2026-08-22)
Section titled “1.40.3 (2026-08-22)”Performance Improvements
Section titled “Performance Improvements”1.40.2 (2026-08-21)
Section titled “1.40.2 (2026-08-21)”Bug Fixes
Section titled “Bug Fixes”1.40.1 (2026-08-21)
Section titled “1.40.1 (2026-08-21)”Bug Fixes
Section titled “Bug Fixes”1.40.0 (2026-08-21)
Section titled “1.40.0 (2026-08-21)”Features
Section titled “Features”1.39.3 (2026-08-21)
Section titled “1.39.3 (2026-08-21)”Bug Fixes
Section titled “Bug Fixes”1.39.2 (2026-08-21)
Section titled “1.39.2 (2026-08-21)”Bug Fixes
Section titled “Bug Fixes”1.39.1 (2026-08-21)
Section titled “1.39.1 (2026-08-21)”Bug Fixes
Section titled “Bug Fixes”- runner: enrich background task entry with outputPath when SDK snapshot arrives first (#811) (b5471f5)
- runner: gate background task launch detection on tool_call provenance (#816) (70ef598), closes #814
1.39.0 (2026-08-21)
Section titled “1.39.0 (2026-08-21)”Features
Section titled “Features”1.38.1 (2026-08-21)
Section titled “1.38.1 (2026-08-21)”Bug Fixes
Section titled “Bug Fixes”1.38.0 (2026-08-20)
Section titled “1.38.0 (2026-08-20)”Features
Section titled “Features”1.37.0 (2026-08-20)
Section titled “1.37.0 (2026-08-20)”Features
Section titled “Features”1.36.0 (2026-08-20)
Section titled “1.36.0 (2026-08-20)”Features
Section titled “Features”- boards: card drawer — issue identity, Work section, GitHub read-only fields (#792) (24544a9)
- boards: cardChatSignal → cardWorkSignal with 10-row precedence table (#790) (b916e9f)
- boards: connect every repo in a Stack, one repo to one board (#782) (d5da225)
1.35.0 (2026-08-20)
Section titled “1.35.0 (2026-08-20)”Features
Section titled “Features”1.34.0 (2026-08-20)
Section titled “1.34.0 (2026-08-20)”Features
Section titled “Features”1.33.0 (2026-08-19)
Section titled “1.33.0 (2026-08-19)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”Performance Improvements
Section titled “Performance Improvements”1.32.1 (2026-08-19)
Section titled “1.32.1 (2026-08-19)”Bug Fixes
Section titled “Bug Fixes”Performance Improvements
Section titled “Performance Improvements”1.32.0 (2026-08-18)
Section titled “1.32.0 (2026-08-18)”Features
Section titled “Features”- boards: give ownerKind “stack” a door (routes + sidebar + BoardsPage) (#771) (6b6d045)
- cron: link spawned chat to originating card via onChatSpawned hook (#763) (#769) (8f00884)
1.31.0 (2026-08-18)
Section titled “1.31.0 (2026-08-18)”Features
Section titled “Features”1.30.0 (2026-08-18)
Section titled “1.30.0 (2026-08-18)”Features
Section titled “Features”1.29.0 (2026-08-18)
Section titled “1.29.0 (2026-08-18)”Features
Section titled “Features”- cron: arm_cron result includes job id and AskUserQuestion review instruction (#743) (#753) (7e7f4a0)
1.28.0 (2026-08-18)
Section titled “1.28.0 (2026-08-18)”Features
Section titled “Features”- cron: show full config on CronArmedMessage (model, fires, cwd, edit/disarm) (#751) (e69c872), closes #742
1.27.0 (2026-08-18)
Section titled “1.27.0 (2026-08-18)”Features
Section titled “Features”1.26.8 (2026-08-18)
Section titled “1.26.8 (2026-08-18)”Bug Fixes
Section titled “Bug Fixes”- cron: show ‘running for’ only during active runs, derived from firedAt (#747) (bfe5f62), closes #739
1.26.7 (2026-08-18)
Section titled “1.26.7 (2026-08-18)”Bug Fixes
Section titled “Bug Fixes”1.26.6 (2026-08-18)
Section titled “1.26.6 (2026-08-18)”Bug Fixes
Section titled “Bug Fixes”1.26.5 (2026-08-17)
Section titled “1.26.5 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.26.4 (2026-08-17)
Section titled “1.26.4 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.26.3 (2026-08-17)
Section titled “1.26.3 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.26.2 (2026-08-17)
Section titled “1.26.2 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”- composer: sync provider when runtime resolves after initial render (#723) (b900a03)
- terminal: pass –interactive to fish shell to bypass PTY foreground-pgid detection loop (#724) (b12e264)
1.26.1 (2026-08-17)
Section titled “1.26.1 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”- codex: pass shell:true on Windows so codex.cmd is resolved during spawn (#720) (0cba3a3)
- composer: submit on Enter when iPad has external keyboard (Universal Control / Magic Keyboard) (#716) (18f6be0)
1.26.0 (2026-08-17)
Section titled “1.26.0 (2026-08-17)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- shutdown: await session closed promises during dispose so SessionEnd hook fires (#714) (1c5356b), closes #71
1.25.0 (2026-08-17)
Section titled “1.25.0 (2026-08-17)”Features
Section titled “Features”1.24.3 (2026-08-17)
Section titled “1.24.3 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.24.2 (2026-08-17)
Section titled “1.24.2 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”- composer: track composition state via ref to guard Korean IME ghost-syllable edge case (#705) (ea512a4)
1.24.1 (2026-08-17)
Section titled “1.24.1 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.24.0 (2026-08-17)
Section titled “1.24.0 (2026-08-17)”Features
Section titled “Features”1.23.0 (2026-08-17)
Section titled “1.23.0 (2026-08-17)”Features
Section titled “Features”- settings: extract push/telemetry/auth/uploads/cloudflare-tunnel into concept-owned domain modules (#693) (ddfbb8a)
1.22.0 (2026-08-17)
Section titled “1.22.0 (2026-08-17)”Features
Section titled “Features”1.21.4 (2026-08-17)
Section titled “1.21.4 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.21.3 (2026-08-17)
Section titled “1.21.3 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.21.2 (2026-08-17)
Section titled “1.21.2 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.21.1 (2026-08-17)
Section titled “1.21.1 (2026-08-17)”Bug Fixes
Section titled “Bug Fixes”1.21.0 (2026-08-16)
Section titled “1.21.0 (2026-08-16)”Features
Section titled “Features”1.20.0 (2026-08-16)
Section titled “1.20.0 (2026-08-16)”Features
Section titled “Features”1.19.0 (2026-08-16)
Section titled “1.19.0 (2026-08-16)”Features
Section titled “Features”1.18.0 (2026-08-14)
Section titled “1.18.0 (2026-08-14)”Features
Section titled “Features”1.17.0 (2026-08-14)
Section titled “1.17.0 (2026-08-14)”Features
Section titled “Features”- boards: ask the agent to advance its own card when the work is done (#652) (2c44f60)
- observability: OTel traces + memory forensics, and recover armed-loop wakes at boot (#657) (a447c6d)
1.16.2 (2026-08-13)
Section titled “1.16.2 (2026-08-13)”Bug Fixes
Section titled “Bug Fixes”1.16.1 (2026-08-12)
Section titled “1.16.1 (2026-08-12)”Bug Fixes
Section titled “Bug Fixes”1.16.0 (2026-08-12)
Section titled “1.16.0 (2026-08-12)”Features
Section titled “Features”- boards: kanban boards — Start work, SQLite store, GitHub sync, agent tools (#645) (91b9f0a)
- boards: open a board in the workspace, show its chats, define its cards (#646) (5bead4e)
- chat: /clear and /compact [instructions] as real Kanna commands (#649) (a193638)
- panes: close a tab with a middle click (#648) (965d069)
- panes: make pane resizing reachable — grabbable divider, keyboard nudges, tab width (#647) (861bba4)
Bug Fixes
Section titled “Bug Fixes”- codex: keep transient turns alive and classify failure reasons (#643) (a257391)
- mermaid: validate the model’s diagrams at creation instead of patching spellings (#641) (6cb1445)
Performance Improvements
Section titled “Performance Improvements”1.15.0 (2026-08-09)
Section titled “1.15.0 (2026-08-09)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- client: render mermaid diagrams a model spelled
-.xinstead of-.-x(#637) (87fb17a) - test: isolate paths-route data dir from the real ~/.kanna store (#640) (7c08cbe)
1.14.1 (2026-08-08)
Section titled “1.14.1 (2026-08-08)”Bug Fixes
Section titled “Bug Fixes”1.14.0 (2026-08-08)
Section titled “1.14.0 (2026-08-08)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”1.13.0 (2026-08-07)
Section titled “1.13.0 (2026-08-07)”Features
Section titled “Features”- loop: list every loop step in the Progress panel, sourced from the tracking file (#627) (fb59dff)
- loop: terminal whole-plan check + arm-time oracle audit (#629) (6f1d83d)
- panes: scroll the tab strip on a phone, smoothly (#630) (a58c3ef)
Bug Fixes
Section titled “Bug Fixes”1.12.0 (2026-08-06)
Section titled “1.12.0 (2026-08-06)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- loop: label Progress rows with the chunk being worked (#622) (796c110)
- mermaid: make a diagram parse error diagnosable (#621) (63d44ca)
- pane-layout: two findings from the pane-tree QA run (#619) (5087153)
- shell: put the sidebar header and the pane tab strip on one band (#623) (e3b4ba1)
1.11.0 (2026-08-05)
Section titled “1.11.0 (2026-08-05)”Features
Section titled “Features”- client: finish the pane tree — retention, phone view, keyboard, drag-and-drop (#618) (fdf25a9)
- client: port paseo layout/IA foundations — breakpoints, sidebar clamp, transcript rhythm (#614) (490d6b4)
- client: replace the chat route’s fixed layout with a user-editable pane tree (#616) (e71c5e7)
Bug Fixes
Section titled “Bug Fixes”- a parked AskUserQuestion can no longer wedge a chat (#613) (3afca2f)
- agent: stop a turn on the first click, including mid-boot (#611) (5f18484)
- loop: gate GOAL MET on the plan, refuse bad setups at arm time (#617) (63d4d0e)
- subagent: match the claude spawn gate to the main chat (#615) (a03e24f)
1.10.0 (2026-08-04)
Section titled “1.10.0 (2026-08-04)”Features
Section titled “Features”1.9.1 (2026-08-03)
Section titled “1.9.1 (2026-08-03)”Bug Fixes
Section titled “Bug Fixes”1.9.0 (2026-08-02)
Section titled “1.9.0 (2026-08-02)”Features
Section titled “Features”- agent: surface self-wake status + live background task list (#606) (d5a6512)
- client: ban state-transition logic written inline in JSX props (#605) (2adaa35)
Bug Fixes
Section titled “Bug Fixes”1.8.2 (2026-08-02)
Section titled “1.8.2 (2026-08-02)”Bug Fixes
Section titled “Bug Fixes”- event-store: stop reading and truncating legacy orch.jsonl (545bc8a)
1.8.1 (2026-07-31)
Section titled “1.8.1 (2026-07-31)”Bug Fixes
Section titled “Bug Fixes”- agent: escalate expired background-task guards to visible wakes, never silent reaps (c2f777e)
- agent: escalate expired background-task guards to visible wakes, never silent reaps (3c9595b)
1.8.0 (2026-07-30)
Section titled “1.8.0 (2026-07-30)”Features
Section titled “Features”- client: import dialog with paste-a-session-id (7d32ce0)
- client: live-tail WS push + following pill in chat header (bf5b652)
- import dialog with paste-a-session-id (7dea312)
- import specific Claude sessions by id (foundation) (79b9460)
- live tail for imported Claude sessions (PR C — WS-Live) (a58fd5a)
- server: derive subagents dir for imported chats (472681a)
- server: followed-session registry (pure core) for live import tail (bc9d103)
- server: import specific Claude sessions by id (sessions.importClaudeSession) (cbd8c9b)
- server: live tail for imported sessions (stat-poll delta) (5eefce3)
- server: locate one Claude session transcript by uuid (4cdde5c)
- server: subagent drill-in for imported chats (WS-Drill) (b4a9278)
- server: subagent drill-in for imported chats via lazy dir derivation (bae79ec)
- shared: extract Claude session uuids from pasted text (9c3f9ad)
Bug Fixes
Section titled “Bug Fixes”- push: make VAPID contact subject configurable; stop deleting devices on 403 (#580) (55062e3)
- server: enrich imported tool_result entries with toolUseResult debugRaw (4d031df)
- test: stop hardcoding a local absolute path in encodeCwd fixtures (be79e2b)
1.7.1 (2026-07-24)
Section titled “1.7.1 (2026-07-24)”Bug Fixes
Section titled “Bug Fixes”1.7.0 (2026-07-24)
Section titled “1.7.0 (2026-07-24)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”1.6.4 (2026-07-24)
Section titled “1.6.4 (2026-07-24)”Bug Fixes
Section titled “Bug Fixes”- external-open: bridge open folder/default/terminal to Windows under WSL2 (#573) (2e5bcd1)
- plan: render mermaid diagrams in ExitPlanMode plans (#572) (a8c9671)
1.6.3 (2026-07-22)
Section titled “1.6.3 (2026-07-22)”Bug Fixes
Section titled “Bug Fixes”1.6.2 (2026-07-22)
Section titled “1.6.2 (2026-07-22)”Bug Fixes
Section titled “Bug Fixes”1.6.1 (2026-07-21)
Section titled “1.6.1 (2026-07-21)”Bug Fixes
Section titled “Bug Fixes”1.6.0 (2026-07-21)
Section titled “1.6.0 (2026-07-21)”Features
Section titled “Features”1.5.2 (2026-07-20)
Section titled “1.5.2 (2026-07-20)”Bug Fixes
Section titled “Bug Fixes”1.5.1 (2026-07-20)
Section titled “1.5.1 (2026-07-20)”Bug Fixes
Section titled “Bug Fixes”1.5.0 (2026-07-20)
Section titled “1.5.0 (2026-07-20)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- messages: show error badge when a Mermaid diagram fails to render (51c9f78)
- messages: show error badge when a Mermaid diagram fails to render (80d2617)
- slash-commands: stop the / picker hanging on eternal loading (#557) (279162d)
1.4.0 (2026-07-18)
Section titled “1.4.0 (2026-07-18)”Features
Section titled “Features”- client: apply chat.ops deltas with gap-triggered resync (7937e4a)
- protocol: chat.ops event + since on chat topic (a807472)
- server: chat.ops delta broadcast with snapshot fallback (32e7725)
- server: ChatOpLog ring buffer with per-chat seq (950cd92)
- server: pure chat meta diff -> ops (d08946c)
- server: record entries.append ops in appendMessage; stamp seq on chat snapshots (1682abd)
- shared: chat op-log types + pure applyChatOps reducer (7522aa6)
Bug Fixes
Section titled “Bug Fixes”- server: replace banned type assertion with typed literal in chat-ops-diff (8c24b49)
Performance Improvements
Section titled “Performance Improvements”- add long-session benchmark harness + baseline (DKR-1) (152cb9d)
- long-session performance — chat.ops delta stream, transcript LRU + tail-read, render windowing (fad3b5d)
- long-session performance — chat.ops delta stream, transcript LRU + tail-read, render windowing (fad3b5d)
- post-change bench numbers + KR verdict (KR1/KR2/KR4 met, KR3 flagged) (019fed9)
- server: JSONL tail-read with byte-offset cursors for cold chat open (KR3) (e6e02e2)
- server: transcript LRU cache + window-only page cloning (3e0dd5d)
- share: content-visibility windowing on shared-session rows (ee8affe)
1.3.1 (2026-07-18)
Section titled “1.3.1 (2026-07-18)”Bug Fixes
Section titled “Bug Fixes”1.3.0 (2026-07-17)
Section titled “1.3.0 (2026-07-17)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”1.2.0 (2026-07-15)
Section titled “1.2.0 (2026-07-15)”Features
Section titled “Features”- events: capture run config + model on turn_started for tracing (#538) (2c08808)
- orchestration: make OrchestrationQueue user-callable (simple, linear, no-gate v1) (#537) (34ac4aa)
Bug Fixes
Section titled “Bug Fixes”1.1.5 (2026-07-13)
Section titled “1.1.5 (2026-07-13)”Bug Fixes
Section titled “Bug Fixes”1.1.4 (2026-07-13)
Section titled “1.1.4 (2026-07-13)”Bug Fixes
Section titled “Bug Fixes”1.1.3 (2026-07-13)
Section titled “1.1.3 (2026-07-13)”Bug Fixes
Section titled “Bug Fixes”1.1.2 (2026-07-12)
Section titled “1.1.2 (2026-07-12)”Bug Fixes
Section titled “Bug Fixes”- composer: swallow Tab auto-repeat keydowns after a snippet expansion (#530) (00b8216)
- subagent: embed live roster in UNKNOWN_SUBAGENT errors and reject guessed ids before delegation (#527) (30bd397)
1.1.1 (2026-07-12)
Section titled “1.1.1 (2026-07-12)”Bug Fixes
Section titled “Bug Fixes”- composer: keep Tab snippet caret in editor by preventing default synchronously (#524) (1d07c2c)
- loop: stall-watchdog timeout, armed-state re-injection, hard tool-block, deterministic worker (#526) (bc32d6f)
1.1.0 (2026-07-11)
Section titled “1.1.0 (2026-07-11)”Features
Section titled “Features”- agent: notification-driven loop orchestration; remove schedule_wakeup (#519) (2cb3470)
- mcp: setup_loop MCP tool with validated template (#522) (3bb70f4)
1.0.1 (2026-07-10)
Section titled “1.0.1 (2026-07-10)”Bug Fixes
Section titled “Bug Fixes”1.0.0 (2026-07-10)
Section titled “1.0.0 (2026-07-10)”⚠ BREAKING CHANGES
Section titled “⚠ BREAKING CHANGES”- claude-pty: Shannon-style TUI transport — drop –print, tail transcript JSONL (#261)
Features
Section titled “Features”- add full-page /workflows view with per-agent transcript drill-in (#468) (#478) (a13cd75)
- agent: inline file downloads via offer_download SDK MCP tool (#42) (20b2d99)
- agent: label stack projects in the Claude system prompt (#425) (a43e805)
- agent: proactive /compact injection before context overflows (#116) (1169e3e)
- auth: persist sessions across restart and browser close (#10) (2734f51)
- bg-tasks: visibility and stop control for background tasks (#38) (416bab5)
- cancel individual subagent run (#96) (b171ddf)
- chat-navbar: show worktree dir in branch label (#69) (6dca7cc)
- chat-ui: show home-relative cwd + branch in navbar label (#388) (74d080a)
- chat-ui: show local skills + slash commands in / picker (#444) (d5e344b)
- chat-ui: show session token total pill in composer (#341) (23872d9)
- claude-pty: allowlist preflight + –tools flag (P3b) (#110) (ba6b440)
- claude-pty: Linux bwrap sandbox parity (P4.1) (#112) (713c1da)
- claude-pty: macOS sandbox-exec wrapper (P4) (#111) (b3a9e12)
- claude-pty: OAuth pool rotation via CLAUDE_CODE_OAUTH_TOKEN (P5) (#114) (65c1542)
- claude-pty: on-disk pid registry to reap crash orphans on next boot (#267) (1817cde)
- claude-pty: P7 — driver toggle, lifecycle, sidebar badges, per-chat permissions (#135) (1742ea7)
- claude-pty: plan-mode exit via Shift+Tab (F1) + getSupportedCommands live list (F2) (#262) (5d941a5)
- claude-pty: PTY core driver (P2 — flag off by default) (#106) (0ece0ba)
- claude-pty: session lifecycle + prompt-too-long recovery (P6) (#122) (9239751)
- claude-pty: Shannon-style TUI transport — drop –print, tail transcript JSONL (#261) (273386c)
- client: render <thinking> blocks as collapsible disclosure (#250) (f91722d)
- codex: auto-relocate ImageGeneration outputs into project (#210) (d1fb494)
- composer: add Tab-expand text snippets (#511) (d93e1c8)
- configurable model catalog (customModels in settings) (#469) (4371f06)
- custom MCP servers in settings (SDK + PTY) (#282) (996b732)
- file-preview: mobile-first universal file preview sheet (#143) (181e60a)
- in-chat file preview via mcp__kanna__preview_file tool (#479) (93056ab)
- kanna-mcp: built-in tool shims (P3a — flag off by default) (#107) (bbaed17)
- Kanna-owned agent self-scheduled wake (ScheduleWakeup + pending-workflow harvest) (#357) (51fd6fa)
- lexical: migrate chat input and messages to Lexical 0.45 (#446) (a5d3619)
- lint: ban side-effect imports in src/shared and src/client (#283) (c5d6934)
- lint: catch DB construction, process.exit, process.env in pure layers (#286) (8977d83)
- lint: ratchet side-effect call sites in src/server (warn + lower-only baseline) (#287) (9ec4c7e)
- mcp-tool-refactor: durable approval protocol + permission-gate (P1 — flag off by default) (#105) (d2b2cce)
- messages: always render file card for local file links (#377) (e864cc6)
- messages: mask OAuth key as primary AccountInfo identifier (#257) (d91f880)
- messages: render mermaid diagrams in transcript markdown (#242) (c606355)
- messages: surface OAuth key in chat AccountInfoMessage (#254) (e24ec3e)
- mobile: swipe to open/close sidebar (#306) (3000d58)
- model-independent chat phase 1 (provider-switching) (#77) (075000b)
- model-independent chat phase 2 (subagent CRUD + @agent mentions) (#81) (07955a8)
- models: add Claude Fable 5 to the Claude provider catalog (#409) (ffd106f)
- models: add claude-opus-4-8 to provider catalog (#335) (8d36fdb)
- notice-banner: extract reusable shell notice primitive (#256) (1d1539e)
- OAuth 2.1 client for HTTP/SSE custom MCP servers (#461) (924ba2e)
- OAuth token pool with automatic rotation on rate-limit (#52) (219ecef)
- oauth-pool: add disabled token status to exclude accounts from pool (#117) (1fb43ae)
- oauth-pool: name contested chat in token-unavailable refusal (#235) (eef731b)
- oauth-pool: per-token concurrency cap (share OAuth across chats) (#275) (9fdbfdd)
- orchestration: durable multi-task orchestration engine (Plan A) (#507) (05a75f1)
- per-turn token cost across SDK/OpenRouter/Codex + cumulative session totals (#460) (5e4c9d7)
- phase 3 subagent orchestration + UI (#83) (bca45b9)
- phase 4 real provider integration for subagents (#86) (52d22ce)
- provider: add OpenRouter as third agentic chat provider (#435) (01b26a8)
- pty: D4 partial — runtime /plan enter via slash command (#174) (f9ab062)
- pty: hide exited instances from status panel + TTL prune (#313) (2efb78e)
- pty: live status panel + cancel/kill actions (#309) (e077d7a)
- pty: phase 1 parity wiring (B2 + B5) (#164) (3781119)
- pty: phase 2 — register kanna MCP server in PTY (B3 + B6) (#168) (aa37c86)
- pty: phase 3 — JSONL event parity (D1 + D2 + D3 + D4) (#169) (f90384d)
- pty: phase 4 — failure handling parity (B4 + D5 + D7) (#170) (85a685d)
- pty: phase 5 — subagent routing + shared prompt + account (D6 + D8 + C1) (#171) (0fa777d)
- pty: phase 6 — SDK ↔ PTY equivalence matrix + doc sweep (#172) (043d82c)
- pty: realtime memory tracking in live status panel (#316) (8148302)
- pty: surface live Claude TUI spinner status in chat header (#389) (ac3b107)
- pty: surface loaded CLAUDE.md / rule files in transcript (#386) (5d4cc52)
- pty: switch to –print stream-json + trust claude as source of truth (#200) (ca62112)
- push: web push notifications for chat state changes (#11) (8ecb9d1)
- remove background tasks panel and related code (#315) (a59079c)
- renderer: linkify text references adjacent to URLs (#456) (794d662)
- SDK↔PTY driver feature parity (keep-alive subagents, workflow panel) (#418) (1742464)
- settings: add global prompt append for Claude + Codex turns (#260) (f700d08)
- settings: subagent CRUD UI (#166) (0f094ab)
- share: derive share URL from request origin, drop tunnel gate (#321) (24599e9)
- share: read-only public session share (#318) (c7a7245)
- sidebar: add stack delete via dropdown + context menu (#79) (f4843a1)
- sidebar: asterism separator between stacks (#85) (002f39e)
- skills: add kanna-debug skill for transcript-driven debugging (f6df21a)
- stacks: Phase 1 — server, events, store, ws-router (#48) (7abeff1)
- stacks: Phase 2 — chat bindings + agent spawn wiring (#50) (2295fc8)
- stacks: Phase 3 — sidebar UI, chat creation, peer strip (#55) (0a680c1)
- stacks: Phase 3 — UI plan (draft, plan-only) (#51) (4f52dac)
- star projects in sidebar (#74) (65c1b33)
- subagent: add run_in_background delegation mode (#420) (a10fc89)
- subagent: keep-alive multi-turn PTY sessions (#338) (deb412b)
- subagent: live UI broadcast + pending tool loading state (#237) (65969ed)
- subagent: main agent delegates via mcp__kanna__delegate_subagent (#205) (47466dc)
- subagent: per-subagent folder restriction (workingDir + allowedPaths) (#404) (f4e5af3)
- subagent: per-subagent trigger mode (auto/manual) (#429) (0a3a405)
- subagent: reactive activity label from latest entries (#231) (08a41a5)
- subagent: rich activity labels + MCP progress notifications (#234) (493ef87)
- timings: chat session timings UI (#28) (2f50b22)
- transcript: anchor subagent runs under their delegate_subagent call (#339) (8e5e445)
- transcript: expandable nested child transcript for native Agent calls (174d011)
- transcript: expandable nested child transcript for native Agent calls (7a504f0)
- transcript: render Claude CLI synthetic API errors as dedicated entry kind (#273) (b2b1585)
- transcript: summary card for native Agent subagent tool calls (69a44a2)
- transcript: summary card for native Agent subagent tool calls (dff35c0)
- transcript: surface Claude thinking blocks as assistant_thinking (61b9f16)
- transcript: surface Claude thinking blocks as assistant_thinking (43860b9)
- transcript: syntax-highlight fenced code blocks in chat messages (#276) (f966b56)
- tunnel: replace bash-detector with agent-callable expose_port tool (#70) (24c6233)
- ui: centralize app bootstrap loading state (#206) (b4ada0e)
- ui: full-app loading overlay during redeploy/update restart (#207) (c967cf2)
- ui: unify AskUserQuestion slide UI across native + pending paths (#229) (a565506)
- update: host-agnostic install with detection + KANNA_UPDATE_COMMAND override (#119) (e9e66b2)
- update: install any release from changelog UI (#208) (8fd44e9)
- uploads: configurable max file size + upload progress UI (#37) (220d590)
- wiki: Kanna documentation site at kanna-wiki.lowbit.link (#249) (01a86a2)
- workflow status panel (PTY disk-watch) (#358) (1ab36a2)
- workflow: live per-agent detail for running runs (journal.jsonl) (#367) (5ac6975)
- workflow: richer per-agent journal detail in drill-in (#372) (8d27627)
- workflow: show in-flight runs as running in the status panel (#363) (be3933d)
- worktrees: server git wrapper (phase 1) (#44) (8c1553c)
Bug Fixes
Section titled “Bug Fixes”- agent: clear stuck Running state after cancel-then-steer (#39) (c951f1c)
- agent: deliver OpenRouter prompts via the SDK session transport (#443) (d826774)
- agent: drop duplicate rate-limit body on trailing error result (#434) (0274e27)
- agent: fail-close OpenRouter turns whose SDK stream stalls before first entry (#441) (7a10c59)
- agent: gate runClaudeSession finally activeTurn cleanup on isCurrentSession (#115) (fad644a)
- agent: keep PTY session alive while a background workflow is running (#359) (8e7af80)
- agent: mirror PTY OAuth-pool account info in SDK driver (#422) (ca347be)
- agent: preserve rotation reservation in closeClaudeSession (#179) (102270c)
- agent: real workflow liveness via live run dir (corrects #359 no-op) (#361) (9707062)
- agent: recreate activeTurn on late canUseTool from SDK self-resume (#148) (4114fc7)
- agent: run the selected OpenRouter model instead of collapsing to default (#437) (f548d4a)
- agent: set claude_code preset with trust context to stop spurious malware refusals (a38ec31)
- agent: surface OpenRouter identity in account_info, not Anthropic source (#436) (9970b04)
- agent: surface SDK background-task completions in the transcript (#453) (353bd26)
- agent: swallow SDK interrupt tail error on cancel (#424) (dfc52a6)
- app-settings: atomic writes prevent OAuth token loss (#60) (7619fb8)
- auto-continue: suppress noisy ‘continue’ bubble on rate-limit recovery (#506) (16ed674)
- bg-tasks: remove duplicate “Background tasks” header (#53) (029c957)
- chat-input: prevent iOS Safari page-jump when tapping file picker (#182) (d8cd8cd)
- chat-input: prevent iOS Safari page-jump when tapping file picker (#192) (e139eb8)
- chat-input: show attach button on desktop (#35) (40c8c8e)
- chat-preferences: persist composer state + use providerDefaults for new chat (#155) (54aa3e0)
- chat-preferences: refresh new-chat composer when settings change (#151) (ad7c3ac)
- chat-ui: align session token readout with flat toolbar (#349) (53a8e98)
- chat-ui: clamp Selection back into textarea on iOS keyboard-trackpad drift (#183) (2b55798)
- chat-ui: keep session token pill visible on mobile (#345) (3f5b30e)
- chat-ui: keep subagent message text selectable (#407) (73f8121)
- chat-ui: make composer toolbar tappable on mobile (#378) (73f1fd4)
- chat-ui: prevent composer toolbar / token readout overlap (#354) (1e429b6)
- chat-ui: prevent iOS cursor-jump during hold-space cursor drag (#180) (cf28ff0)
- chat-ui: stop crash on aborted-stream result with missing body (#439) (3c398f3)
- chat-ui: surface subagent pending question at transcript footer (#432) (ab6d0ac)
- chat: seed composer provider from server snapshot on session reload (#137) (9019c50)
- chat: server-authoritative routing kills duplicate queued bubble (#136) (5354454)
- chat: surface tool and action card errors in UI (8533147)
- chat: transcript not scrollable on mobile for long conversations (#159) (22b273b)
- ci:diag: capture stuck-process stack when bun test hangs (#141) (4d83e9c)
- claude-pty, subagent: adaptive paste-commit wait + clear stale cancel on new turn (#265) (0782da4)
- claude-pty: detect turn end via stop_reason — CLI ≥2.1.x writes no system rows (#411) (8889806)
- claude-pty: fail-close hung turns on stream-end + add lifecycle trace logs (#268) (b321973)
- claude-pty: follow transcript with pure tail-poll, drop fs.watch (#392) (1b6f3f2)
- claude-pty: multi-line paste submit + mtime-floor JSONL discovery (#264) (d9d9052)
- claude-pty: PID registry JSONL discovery + cross-talk hardening (#271) (9b5bbf8)
- claude-pty: plug PTY resource leaks + harden graceful shutdown (#266) (2dd5a16)
- claude-pty: route AskUserQuestion/ExitPlanMode to UI under PTY (#216) (2316725), closes #215
- claude-pty: SIGINT on stop, drain queue after cancel (#220) (f5a76ff)
- claude-pty: TUI prompt submission, turn-end marker, deterministic JSONL path (#263) (57aa777)
- cli-supervisor: skip self-update after UI-triggered restart so rollback sticks (#269) (91d1415)
- client: include subagentRuns in chat-snapshot dedup compare (#245) (76d7b45)
- client: only 404 disables download offer card (#476) (54fbc13)
- codex: render ImageGeneration inline with project URL and populated prompt (#132) (a9d4c39)
- codex: serve absolute-path generated images via /api/local-file (#167) (61aa1de)
- codex: surface image generation + unknown ThreadItems, suppress empty agent messages (#125) (4130ba9)
- compact: finalize PTY proactive /compact turn on compact_boundary (#402) (653c8f5)
- compact: persist proactive-compact circuit breaker + harden audit gaps (#139) (81ed65b)
- compact: protect queued message from accidental dequeue mid-compact (#134) (e1c0c73)
- compact: seed maxTokens from [1m] model id to stop premature compact (#131) (1f7bc42)
- compact: stop cumulative result.usage leaking into usedTokens (#152) (3007810)
- composer: paste/drop images upload to the project, not the chat (#459) (6826647)
- diff-store: harden git spawns and add CI test workflow (#31) (fe874fb)
- downloads: render local-file markdown links as download cards (#75) (67fb665)
- event-store: coalesce context_window_updated in live window (#387) (3f49d69)
- event-store: decouple subagent live progress from global writeChain (#244) (21ea6e9)
- event-store: dedupe appendMessage by messageId (JSONL replay safety) (#109) (b6d5c01)
- event-store: forkChat preserves stack membership (#87) (7f76ac9)
- file-preview: bound scroll region inside dialog for long content (#330) (5d12c76)
- file-preview: restore scroll inside @-triggered file sheet (#305) (c388e5a)
- image-gen: tighten types, fix silent error, dedupe URL builder (#138) (890ad71)
- import Claude session titles (#383) (b7e69c1)
- local-catalog: namespace marketplace skills by real plugin name (#458) (42fa49e)
- local-file-link: treat extension-less paths as editor links (#129) (8a0c867)
- local-projects: enable vertical scroll when projects overflow viewport (#416) (bb721b7)
- mcp-oauth: persist AS metadata so token refresh survives past TTL (#463) (be82004)
- mcp: forward customMcpServers through agent settings view (#353) (7efa965)
- mcp: inject fresh oauth bearer when testing authenticated MCP servers (#465) (b187c39)
- mcp: keep loopback MCP transport alive across idle gaps (#351) (22f8bec)
- mobile: left-edge swipe opens sidebar instead of going back (#406) (cfe4452)
- models: honor custom model catalog when normalizing selections (#472) (9fd134b)
- npm: rename package scope to @cuongtran001 to match npm account (bd2c0d0)
- oauth-pool: detect SDK-wrapped rate-limit and rotate tokens (c0a30a9)
- oauth-pool: keep “In use” badge on single line (#278) (4aa2aa8)
- oauth-pool: persist refusal as transcript result entry (#248) (adbf02d)
- oauth-pool: refuse spawn + rotate on 401 to stop keychain-fallback 401 loop (#123) (99662fc)
- oauth-pool: release token reservation on turn end so idle chats stop blocking (#128) (086d60d)
- oauth-pool: reserve token per chat to prevent concurrent rotation race (#89) (686c6b8)
- oauth-pool: stop turn-end release from leaking the rotation pin; OAuth-only PTY auth (#227) (024e09b)
- oauth-pool: tear down session on token rotation (#72) (9f28a71)
- oauth-pool: TOCTOU-safe hasUsable, ephemeral lease, pure read loop (#177) (561e074)
- permission-gate: force ask for mcp__kanna__ask_user_question / exit_plan_mode (#217) (941f92f), closes #215
- point the dynamic import at
./terminal-pid-registry.adapter. (54270c6) - pty/preflight: fail-closed on throw, real invalidateAll, contract-versioned cache, poll vs sleep (#176) (575011e)
- pty/preflight: narrow TOCTOU window by re-verifying binary sha256 before spawn (#178) (0404680)
- pty/sandbox: symlink resolution, glob surfacing, injection + signal (#175) (378797f)
- pty: bound transcript poll + quiet-period TUI ready gate (#311) (e4b3bed)
- pty: cannot fork PTY-created conversations (session id collision) (#352) (4b3852e)
- pty: close mcp/tmp/tool-callbacks on every exit path (#201) (26a13b8)
- pty: deliver subagent prompt via MCP channel push (fail-fast) (#333) (c93afc3)
- pty: drop credentials.json requirement when OAuth-pool token supplied (#173) (6dc8f37)
- pty: gate follow-up prompt on TUI-ready to stop silent hang (#401) (50bcf85)
- pty: ignore sidechain + background auto-wake lines in transcript parser (#332) (216392b)
- pty: keep session warm while a background Bash task is pending (#379) (3652234)
- pty: read assistant usage from nested message.usage (#344) (c387112)
- pty: stop re-spawn from leaking an invisible PTY child (#375) (a6fdbb0)
- push: include diagnostic delivery logging in release (fb549a9)
- push: skip push when chat is currently open (#41) (f6c6bf2)
- push: use /chat singular route in notification payload (#24) (f7ee018)
- push: use real mailto for VAPID subject (#18) (df5fd48)
- quick-response: unblock Haiku title gen in nested CC sessions (fff7fa4)
- remove PR assets (#482) (2250d2a)
- server: allow HEAD on /api/projects/:id/{files,uploads}/*/content (#194) (330f33a)
- server: dispose fs.watch managers before fallible shutdown awaits (#146) (9460481)
- server: fall back to bundled cloudflared binary (d539bae)
- server: serve arbitrary local files via /api/local-file (#66) (dffbf01)
- session-panel: merge Kanna subagents into system_init.agents (#450) (ba899c8)
- settings/subagents: remove duplicate copy in empty state and list (#212) (55510cb)
- settings: forward globalPromptAppend to agent spawn (#281) (37e9fbd)
- settings: repair push notifications UI overflow (#16) (ac39fcd)
- settings: reset model when switching LLM provider (#452) (6fab63d)
- share: include kind discriminant in share.* ws responses (#323) (a115854)
- share: make share page scroll on overflow (mobile-safe) (#347) (539b8e8)
- share: popover trigger + share-view rendering (#325) (fd896ff)
- share: style share-view with Tailwind + shared markdown components (#327) (3305bb3)
- sidebar: make collapse-all chip a real affordance with semantic icon (#369) (92cc071)
- sidebar: pin collapse-all toggle above scroll list (#356) (abdb32b)
- stacks: render stack chats inside expanded stack section (#71) (d00f6a5)
- stacks: stack chat create row layout on narrow widths (#57) (95d83be)
- subagent: cancel rejects pending resolvers even with no main turn (#94) (9aac71d)
- subagent: clear pendingTool on terminal events + use /api/local-file (#88) (e32db6f)
- subagent: close 5 P1 concurrency / routing bugs (B1–B5) (#199) (0775d69)
- subagent: forward user instruction + scan main reply for mentions (#196) (0745f78)
- subagent: inherit parent chat’s OAuth-pool reservation (#204) (007ece2)
- subagent: resolve delegate_subagent id by id or unambiguous name (#427) (2d89d39)
- subagent: resolver leaks, full restart recovery, harden cap (#93) (7bb3d92)
- subagents: centralize model catalog with customModels merge (#474) (f3a7367)
- terminals: stop dev process leaks on project remove, shell exit, SIGHUP, and crash (#33) (7d872c1)
- test: dispose AppSettingsManager FSWatchers via centralized afterEach (#144) (9b7c0be)
- test: make pushClient tests robust to readonly globalThis.window (#20) (18451f0)
- test: register happy-dom in preload so Radix portals render deterministically (#414) (5981875)
- tests: force NODE_ENV=test via bunfig preload to load React dev bundle (#127) (b38d32f)
- test: update dynamic import after terminal-pid-registry rename (#291) (54270c6)
- tool-callback test: flush background persists before tmpdir cleanup (#113) (dd0387a)
- tool-callback: dedup duplicate AskUserQuestion prompts on long wait (46c4dac)
- tool-callback: dedup duplicate AskUserQuestion prompts on long wait (6f7c0cb)
- tool-callback: live broadcast + stop cancel-on-rotation + drop ask timeout (#343) (0af2ff8)
- tools: normalize mcp__kanna__ask_user_question text→question field (#222) (b11741d)
- tools: peel MCP CallToolResult envelope when hydrating ask_user_question (#225) (fc106c1)
- transcript: drop synthetic ‘No response requested.’ + surface Usage-Policy refusals (#394) (07df860)
- transcript: keep offer_download/image cards out of collapsed tool groups (#455) (fc15009)
- transcript: stop rendering benign synthetic turn-end markers as API errors (#374) (6206239)
- tunnel: hide card when dismissing a proposed tunnel (097cc23)
- ui: align PTY driver banner with floating sidebar chrome (#239) (855b80d)
- ui: normalize mcp__kanna__ask_user_question text→question in pending card (#223) (3610f9b)
- ui: surface question header + chosen option description in ask-user-question card (#329) (fd9acb4)
- update: drop pm2 IPC reload to avoid “Reload in progress” error (0629f04)
- update: instant overlay + per-button loading for install/rollback/redeploy (#213) (e2f0801)
- update: re-deploy installs current version when latest is stale (7deece0)
- uploads: raise Bun maxRequestBodySize to upload max (#45) (68752f4)
- useKannaState: drop optimistic user_prompt when chat.send acks queued (#133) (554b492)
- wiki: editorial home page, WCAG AA gray ramp, Starlight cascade (#252) (ed2acf3)
- workflow-watch: poll fallback for missed parent-arm FSEvents (7f69c20)
- workflow: getRun returns synthetic running run (drill-in no longer flickers) (#365) (243f8fd)
- workflow: stop pending_workflow harvest wake re-arming forever (#381) (5110cbc)
- workflow: surface a live re-run that reused a crashed run’s runId (#370) (bef730e)
- ws-router: strip timings from chat snapshot dedup signature (#90) (ee3548a)
Performance Improvements
Section titled “Performance Improvements”- diff-sidebar: virtualize the changes file list (#510) (8bc882f)
- transcript: stabilize markdown props + memoize message components (#157) (6ed1531)
Reverts
Section titled “Reverts”Miscellaneous Chores
Section titled “Miscellaneous Chores”0.107.0 (2026-07-10)
Section titled “0.107.0 (2026-07-10)”Features
Section titled “Features”0.106.0 (2026-07-10)
Section titled “0.106.0 (2026-07-10)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”Performance Improvements
Section titled “Performance Improvements”0.105.0 (2026-07-04)
Section titled “0.105.0 (2026-07-04)”This is the current version of Kanna after the 2026-07-10 rollback.
- Preview files right in the chat. The assistant can now show a file inline
in the conversation (via the
preview_filetool) so you can read it without leaving the chat. (#479) (93056ab)
0.104.0 (2026-07-03)
Section titled “0.104.0 (2026-07-03)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.103.2 (2026-07-01)
Section titled “0.103.2 (2026-07-01)”Bug Fixes
Section titled “Bug Fixes”0.103.1 (2026-07-01)
Section titled “0.103.1 (2026-07-01)”Bug Fixes
Section titled “Bug Fixes”0.103.0 (2026-07-01)
Section titled “0.103.0 (2026-07-01)”Features
Section titled “Features”0.102.2 (2026-06-30)
Section titled “0.102.2 (2026-06-30)”Bug Fixes
Section titled “Bug Fixes”0.102.1 (2026-06-30)
Section titled “0.102.1 (2026-06-30)”Bug Fixes
Section titled “Bug Fixes”0.102.0 (2026-06-29)
Section titled “0.102.0 (2026-06-29)”Features
Section titled “Features”0.101.0 (2026-06-26)
Section titled “0.101.0 (2026-06-26)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- composer: paste/drop images upload to the project, not the chat (#459) (6826647)
- local-catalog: namespace marketplace skills by real plugin name (#458) (42fa49e)
- settings: reset model when switching LLM provider (#452) (6fab63d)
0.100.0 (2026-06-25)
Section titled “0.100.0 (2026-06-25)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- agent: surface SDK background-task completions in the transcript (#453) (353bd26)
- transcript: keep offer_download/image cards out of collapsed tool groups (#455) (fc15009)
0.99.0 (2026-06-24)
Section titled “0.99.0 (2026-06-24)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.98.0 (2026-06-22)
Section titled “0.98.0 (2026-06-22)”Features
Section titled “Features”0.97.3 (2026-06-20)
Section titled “0.97.3 (2026-06-20)”Bug Fixes
Section titled “Bug Fixes”- agent: deliver OpenRouter prompts via the SDK session transport (#443) (d826774)
- agent: fail-close OpenRouter turns whose SDK stream stalls before first entry (#441) (7a10c59)
0.97.2 (2026-06-20)
Section titled “0.97.2 (2026-06-20)”Bug Fixes
Section titled “Bug Fixes”0.97.1 (2026-06-19)
Section titled “0.97.1 (2026-06-19)”Bug Fixes
Section titled “Bug Fixes”- agent: run the selected OpenRouter model instead of collapsing to default (#437) (f548d4a)
- agent: surface OpenRouter identity in account_info, not Anthropic source (#436) (9970b04)
0.97.0 (2026-06-18)
Section titled “0.97.0 (2026-06-18)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- agent: drop duplicate rate-limit body on trailing error result (#434) (0274e27)
- chat-ui: surface subagent pending question at transcript footer (#432) (ab6d0ac)
0.96.0 (2026-06-17)
Section titled “0.96.0 (2026-06-17)”Features
Section titled “Features”0.95.1 (2026-06-17)
Section titled “0.95.1 (2026-06-17)”Bug Fixes
Section titled “Bug Fixes”0.95.0 (2026-06-17)
Section titled “0.95.0 (2026-06-17)”Features
Section titled “Features”0.94.1 (2026-06-16)
Section titled “0.94.1 (2026-06-16)”Bug Fixes
Section titled “Bug Fixes”- agent: mirror PTY OAuth-pool account info in SDK driver (#422) (ca347be)
- agent: swallow SDK interrupt tail error on cancel (#424) (dfc52a6)
0.94.0 (2026-06-16)
Section titled “0.94.0 (2026-06-16)”Features
Section titled “Features”0.93.0 (2026-06-16)
Section titled “0.93.0 (2026-06-16)”Features
Section titled “Features”0.92.3 (2026-06-12)
Section titled “0.92.3 (2026-06-12)”Bug Fixes
Section titled “Bug Fixes”0.92.2 (2026-06-12)
Section titled “0.92.2 (2026-06-12)”Bug Fixes
Section titled “Bug Fixes”0.92.1 (2026-06-11)
Section titled “0.92.1 (2026-06-11)”Bug Fixes
Section titled “Bug Fixes”0.92.0 (2026-06-09)
Section titled “0.92.0 (2026-06-09)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.91.0 (2026-06-08)
Section titled “0.91.0 (2026-06-08)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.90.1 (2026-06-08)
Section titled “0.90.1 (2026-06-08)”Bug Fixes
Section titled “Bug Fixes”0.90.0 (2026-06-07)
Section titled “0.90.0 (2026-06-07)”Features
Section titled “Features”- transcript: expandable nested child transcript for native Agent calls (174d011)
- transcript: expandable nested child transcript for native Agent calls (7a504f0)
- transcript: summary card for native Agent subagent tool calls (69a44a2)
- transcript: summary card for native Agent subagent tool calls (dff35c0)
Bug Fixes
Section titled “Bug Fixes”- pty: gate follow-up prompt on TUI-ready to stop silent hang (#401) (50bcf85)
- tool-callback: dedup duplicate AskUserQuestion prompts on long wait (46c4dac)
- tool-callback: dedup duplicate AskUserQuestion prompts on long wait (6f7c0cb)
0.89.0 (2026-06-07)
Section titled “0.89.0 (2026-06-07)”Features
Section titled “Features”- transcript: surface Claude thinking blocks as assistant_thinking (61b9f16)
- transcript: surface Claude thinking blocks as assistant_thinking (43860b9)
Bug Fixes
Section titled “Bug Fixes”- transcript: drop synthetic ‘No response requested.’ + surface Usage-Policy refusals (#394) (07df860)
- workflow-watch: poll fallback for missed parent-arm FSEvents (7f69c20)
0.88.1 (2026-06-07)
Section titled “0.88.1 (2026-06-07)”Bug Fixes
Section titled “Bug Fixes”0.88.0 (2026-06-06)
Section titled “0.88.0 (2026-06-06)”Features
Section titled “Features”- chat-ui: show home-relative cwd + branch in navbar label (#388) (74d080a)
- pty: surface live Claude TUI spinner status in chat header (#389) (ac3b107)
0.87.0 (2026-06-06)
Section titled “0.87.0 (2026-06-06)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- event-store: coalesce context_window_updated in live window (#387) (3f49d69)
- import Claude session titles (#383) (b7e69c1)
0.86.0 (2026-06-05)
Section titled “0.86.0 (2026-06-05)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.85.2 (2026-06-04)
Section titled “0.85.2 (2026-06-04)”Bug Fixes
Section titled “Bug Fixes”- pty: keep session warm while a background Bash task is pending (#379) (3652234)
- workflow: stop pending_workflow harvest wake re-arming forever (#381) (5110cbc)
0.85.1 (2026-06-04)
Section titled “0.85.1 (2026-06-04)”Bug Fixes
Section titled “Bug Fixes”0.85.0 (2026-06-04)
Section titled “0.85.0 (2026-06-04)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.84.1 (2026-06-04)
Section titled “0.84.1 (2026-06-04)”Bug Fixes
Section titled “Bug Fixes”0.84.0 (2026-06-04)
Section titled “0.84.0 (2026-06-04)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.83.1 (2026-06-03)
Section titled “0.83.1 (2026-06-03)”Bug Fixes
Section titled “Bug Fixes”0.83.0 (2026-06-03)
Section titled “0.83.0 (2026-06-03)”Features
Section titled “Features”0.82.2 (2026-06-03)
Section titled “0.82.2 (2026-06-03)”Bug Fixes
Section titled “Bug Fixes”0.82.1 (2026-06-03)
Section titled “0.82.1 (2026-06-03)”Bug Fixes
Section titled “Bug Fixes”0.82.0 (2026-06-03)
Section titled “0.82.0 (2026-06-03)”Features
Section titled “Features”- Kanna-owned agent self-scheduled wake (ScheduleWakeup + pending-workflow harvest) (#357) (51fd6fa)
- workflow status panel (PTY disk-watch) (#358) (1ab36a2)
Bug Fixes
Section titled “Bug Fixes”- chat-ui: prevent composer toolbar / token readout overlap (#354) (1e429b6)
- sidebar: pin collapse-all toggle above scroll list (#356) (abdb32b)
0.81.3 (2026-06-03)
Section titled “0.81.3 (2026-06-03)”Bug Fixes
Section titled “Bug Fixes”- chat-ui: align session token readout with flat toolbar (#349) (53a8e98)
- mcp: forward customMcpServers through agent settings view (#353) (7efa965)
- mcp: keep loopback MCP transport alive across idle gaps (#351) (22f8bec)
- pty: cannot fork PTY-created conversations (session id collision) (#352) (4b3852e)
0.81.2 (2026-06-02)
Section titled “0.81.2 (2026-06-02)”Bug Fixes
Section titled “Bug Fixes”0.81.1 (2026-06-02)
Section titled “0.81.1 (2026-06-02)”Bug Fixes
Section titled “Bug Fixes”- chat-ui: keep session token pill visible on mobile (#345) (3f5b30e)
- pty: read assistant usage from nested message.usage (#344) (c387112)
0.81.0 (2026-06-01)
Section titled “0.81.0 (2026-06-01)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.80.0 (2026-05-31)
Section titled “0.80.0 (2026-05-31)”Features
Section titled “Features”0.79.0 (2026-05-30)
Section titled “0.79.0 (2026-05-30)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.78.0 (2026-05-29)
Section titled “0.78.0 (2026-05-29)”Features
Section titled “Features”0.77.3 (2026-05-28)
Section titled “0.77.3 (2026-05-28)”Bug Fixes
Section titled “Bug Fixes”- file-preview: bound scroll region inside dialog for long content (#330) (5d12c76)
- pty: ignore sidechain + background auto-wake lines in transcript parser (#332) (216392b)
- share: style share-view with Tailwind + shared markdown components (#327) (3305bb3)
- ui: surface question header + chosen option description in ask-user-question card (#329) (fd9acb4)
0.77.2 (2026-05-25)
Section titled “0.77.2 (2026-05-25)”Bug Fixes
Section titled “Bug Fixes”0.77.1 (2026-05-25)
Section titled “0.77.1 (2026-05-25)”Bug Fixes
Section titled “Bug Fixes”0.77.0 (2026-05-25)
Section titled “0.77.0 (2026-05-25)”Features
Section titled “Features”0.76.0 (2026-05-24)
Section titled “0.76.0 (2026-05-24)”Features
Section titled “Features”0.75.0 (2026-05-24)
Section titled “0.75.0 (2026-05-24)”Features
Section titled “Features”0.74.0 (2026-05-23)
Section titled “0.74.0 (2026-05-23)”Features
Section titled “Features”- pty: hide exited instances from status panel + TTL prune (#313) (2efb78e)
- remove background tasks panel and related code (#315) (a59079c)
0.73.1 (2026-05-23)
Section titled “0.73.1 (2026-05-23)”Bug Fixes
Section titled “Bug Fixes”0.73.0 (2026-05-23)
Section titled “0.73.0 (2026-05-23)”Features
Section titled “Features”0.72.0 (2026-05-23)
Section titled “0.72.0 (2026-05-23)”Features
Section titled “Features”0.71.0 (2026-05-23)
Section titled “0.71.0 (2026-05-23)”Features
Section titled “Features”- custom MCP servers in settings (SDK + PTY) (#282) (996b732)
- lint: ban side-effect imports in src/shared and src/client (#283) (c5d6934)
- lint: catch DB construction, process.exit, process.env in pure layers (#286) (8977d83)
- lint: ratchet side-effect call sites in src/server (warn + lower-only baseline) (#287) (9ec4c7e)
Bug Fixes
Section titled “Bug Fixes”- file-preview: restore scroll inside @-triggered file sheet (#305) (c388e5a)
- oauth-pool: keep “In use” badge on single line (#278) (4aa2aa8)
- point the dynamic import at
./terminal-pid-registry.adapter. (54270c6) - settings: forward globalPromptAppend to agent spawn (#281) (37e9fbd)
- test: update dynamic import after terminal-pid-registry rename (#291) (54270c6)
0.70.0 (2026-05-22)
Section titled “0.70.0 (2026-05-22)”Features
Section titled “Features”0.69.0 (2026-05-22)
Section titled “0.69.0 (2026-05-22)”Features
Section titled “Features”- oauth-pool: per-token concurrency cap (share OAuth across chats) (#275) (9fdbfdd)
- transcript: render Claude CLI synthetic API errors as dedicated entry kind (#273) (b2b1585)
0.68.1 (2026-05-21)
Section titled “0.68.1 (2026-05-21)”Bug Fixes
Section titled “Bug Fixes”- claude-pty: PID registry JSONL discovery + cross-talk hardening (#271) (9b5bbf8)
- cli-supervisor: skip self-update after UI-triggered restart so rollback sticks (#269) (91d1415)
0.68.0 (2026-05-21)
Section titled “0.68.0 (2026-05-21)”⚠ BREAKING CHANGES
Section titled “⚠ BREAKING CHANGES”- claude-pty: Shannon-style TUI transport — drop –print, tail transcript JSONL (#261)
Features
Section titled “Features”- claude-pty: on-disk pid registry to reap crash orphans on next boot (#267) (1817cde)
- claude-pty: plan-mode exit via Shift+Tab (F1) + getSupportedCommands live list (F2) (#262) (5d941a5)
- claude-pty: Shannon-style TUI transport — drop –print, tail transcript JSONL (#261) (273386c)
- messages: mask OAuth key as primary AccountInfo identifier (#257) (d91f880)
- notice-banner: extract reusable shell notice primitive (#256) (1d1539e)
- settings: add global prompt append for Claude + Codex turns (#260) (f700d08)
Bug Fixes
Section titled “Bug Fixes”- claude-pty, subagent: adaptive paste-commit wait + clear stale cancel on new turn (#265) (0782da4)
- claude-pty: fail-close hung turns on stream-end + add lifecycle trace logs (#268) (b321973)
- claude-pty: multi-line paste submit + mtime-floor JSONL discovery (#264) (d9d9052)
- claude-pty: plug PTY resource leaks + harden graceful shutdown (#266) (2dd5a16)
- claude-pty: TUI prompt submission, turn-end marker, deterministic JSONL path (#263) (57aa777)
0.67.0 (2026-05-20)
Section titled “0.67.0 (2026-05-20)”Features
Section titled “Features”0.66.1 (2026-05-20)
Section titled “0.66.1 (2026-05-20)”Bug Fixes
Section titled “Bug Fixes”0.66.0 (2026-05-20)
Section titled “0.66.0 (2026-05-20)”Features
Section titled “Features”- client: render <thinking> blocks as collapsible disclosure (#250) (f91722d)
- wiki: Kanna documentation site at kanna-wiki.lowbit.link (#249) (01a86a2)
0.65.1 (2026-05-19)
Section titled “0.65.1 (2026-05-19)”Bug Fixes
Section titled “Bug Fixes”- client: include subagentRuns in chat-snapshot dedup compare (#245) (76d7b45)
- oauth-pool: persist refusal as transcript result entry (#248) (adbf02d)
0.65.0 (2026-05-19)
Section titled “0.65.0 (2026-05-19)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.64.0 (2026-05-19)
Section titled “0.64.0 (2026-05-19)”Features
Section titled “Features”- oauth-pool: name contested chat in token-unavailable refusal (#235) (eef731b)
- subagent: live UI broadcast + pending tool loading state (#237) (65969ed)
Bug Fixes
Section titled “Bug Fixes”0.63.0 (2026-05-19)
Section titled “0.63.0 (2026-05-19)”Features
Section titled “Features”- subagent: reactive activity label from latest entries (#231) (08a41a5)
- subagent: rich activity labels + MCP progress notifications (#234) (493ef87)
0.62.0 (2026-05-19)
Section titled “0.62.0 (2026-05-19)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- oauth-pool: stop turn-end release from leaking the rotation pin; OAuth-only PTY auth (#227) (024e09b)
0.61.5 (2026-05-19)
Section titled “0.61.5 (2026-05-19)”Bug Fixes
Section titled “Bug Fixes”0.61.4 (2026-05-18)
Section titled “0.61.4 (2026-05-18)”Bug Fixes
Section titled “Bug Fixes”0.61.3 (2026-05-18)
Section titled “0.61.3 (2026-05-18)”Bug Fixes
Section titled “Bug Fixes”- claude-pty: SIGINT on stop, drain queue after cancel (#220) (f5a76ff)
- tools: normalize mcp__kanna__ask_user_question text→question field (#222) (b11741d)
0.61.2 (2026-05-18)
Section titled “0.61.2 (2026-05-18)”Bug Fixes
Section titled “Bug Fixes”- permission-gate: force ask for mcp__kanna__ask_user_question / exit_plan_mode (#217) (941f92f), closes #215
0.61.1 (2026-05-18)
Section titled “0.61.1 (2026-05-18)”Bug Fixes
Section titled “Bug Fixes”- claude-pty: route AskUserQuestion/ExitPlanMode to UI under PTY (#216) (2316725), closes #215
- update: instant overlay + per-button loading for install/rollback/redeploy (#213) (e2f0801)
0.61.0 (2026-05-18)
Section titled “0.61.0 (2026-05-18)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.60.0 (2026-05-18)
Section titled “0.60.0 (2026-05-18)”Features
Section titled “Features”- ui: full-app loading overlay during redeploy/update restart (#207) (c967cf2)
- update: install any release from changelog UI (#208) (8fd44e9)
0.59.0 (2026-05-18)
Section titled “0.59.0 (2026-05-18)”Features
Section titled “Features”- subagent: main agent delegates via mcp__kanna__delegate_subagent (#205) (47466dc)
- ui: centralize app bootstrap loading state (#206) (b4ada0e)
Bug Fixes
Section titled “Bug Fixes”- pty: close mcp/tmp/tool-callbacks on every exit path (#201) (26a13b8)
- subagent: inherit parent chat’s OAuth-pool reservation (#204) (007ece2)
0.58.0 (2026-05-18)
Section titled “0.58.0 (2026-05-18)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- subagent: close 5 P1 concurrency / routing bugs (B1–B5) (#199) (0775d69)
- subagent: forward user instruction + scan main reply for mentions (#196) (0745f78)
0.57.5 (2026-05-18)
Section titled “0.57.5 (2026-05-18)”Bug Fixes
Section titled “Bug Fixes”0.57.4 (2026-05-17)
Section titled “0.57.4 (2026-05-17)”Bug Fixes
Section titled “Bug Fixes”0.57.3 (2026-05-17)
Section titled “0.57.3 (2026-05-17)”Miscellaneous Chores
Section titled “Miscellaneous Chores”0.57.2 (2026-05-17)
Section titled “0.57.2 (2026-05-17)”Chores
Section titled “Chores”- bump to 0.57.2 to bypass tag clash with the prior v0.57.1 release (v0.57.1 was reverted in #186 but the git tag still points at the old release commit)
0.57.1 (2026-05-17)
Section titled “0.57.1 (2026-05-17)”Bug Fixes
Section titled “Bug Fixes”- chat-input: prevent iOS Safari page-jump when tapping file picker (#182) (d8cd8cd)
- chat-ui: clamp Selection back into textarea on iOS keyboard-trackpad drift (#183) (2b55798)
Reverts
Section titled “Reverts”0.57.0 (2026-05-17)
Section titled “0.57.0 (2026-05-17)”Features
Section titled “Features”- pty: D4 partial — runtime /plan enter via slash command (#174) (f9ab062)
- pty: phase 1 parity wiring (B2 + B5) (#164) (3781119)
- pty: phase 2 — register kanna MCP server in PTY (B3 + B6) (#168) (aa37c86)
- pty: phase 3 — JSONL event parity (D1 + D2 + D3 + D4) (#169) (f90384d)
- pty: phase 4 — failure handling parity (B4 + D5 + D7) (#170) (85a685d)
- pty: phase 5 — subagent routing + shared prompt + account (D6 + D8 + C1) (#171) (0fa777d)
- pty: phase 6 — SDK ↔ PTY equivalence matrix + doc sweep (#172) (043d82c)
- settings: subagent CRUD UI (#166) (0f094ab)
- skills: add kanna-debug skill for transcript-driven debugging (f6df21a)
Bug Fixes
Section titled “Bug Fixes”- agent: preserve rotation reservation in closeClaudeSession (#179) (102270c)
- chat-ui: prevent iOS cursor-jump during hold-space cursor drag (#180) (cf28ff0)
- codex: serve absolute-path generated images via /api/local-file (#167) (61aa1de)
- oauth-pool: TOCTOU-safe hasUsable, ephemeral lease, pure read loop (#177) (561e074)
- pty/preflight: fail-closed on throw, real invalidateAll, contract-versioned cache, poll vs sleep (#176) (575011e)
- pty/preflight: narrow TOCTOU window by re-verifying binary sha256 before spawn (#178) (0404680)
- pty/sandbox: symlink resolution, glob surfacing, injection + signal (#175) (378797f)
- pty: drop credentials.json requirement when OAuth-pool token supplied (#173) (6dc8f37)
0.56.4 (2026-05-16)
Section titled “0.56.4 (2026-05-16)”Bug Fixes
Section titled “Bug Fixes”0.56.3 (2026-05-16)
Section titled “0.56.3 (2026-05-16)”Performance Improvements
Section titled “Performance Improvements”0.56.2 (2026-05-16)
Section titled “0.56.2 (2026-05-16)”Bug Fixes
Section titled “Bug Fixes”0.56.1 (2026-05-16)
Section titled “0.56.1 (2026-05-16)”Bug Fixes
Section titled “Bug Fixes”- chat-preferences: refresh new-chat composer when settings change (#151) (ad7c3ac)
- compact: stop cumulative result.usage leaking into usedTokens (#152) (3007810)
0.56.0 (2026-05-16)
Section titled “0.56.0 (2026-05-16)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”0.55.3 (2026-05-16)
Section titled “0.55.3 (2026-05-16)”Bug Fixes
Section titled “Bug Fixes”0.55.2 (2026-05-16)
Section titled “0.55.2 (2026-05-16)”Bug Fixes
Section titled “Bug Fixes”0.55.1 (2026-05-16)
Section titled “0.55.1 (2026-05-16)”Bug Fixes
Section titled “Bug Fixes”0.55.0 (2026-05-16)
Section titled “0.55.0 (2026-05-16)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- chat: seed composer provider from server snapshot on session reload (#137) (9019c50)
- chat: server-authoritative routing kills duplicate queued bubble (#136) (5354454)
- codex: render ImageGeneration inline with project URL and populated prompt (#132) (a9d4c39)
- compact: persist proactive-compact circuit breaker + harden audit gaps (#139) (81ed65b)
- compact: protect queued message from accidental dequeue mid-compact (#134) (e1c0c73)
- compact: seed maxTokens from [1m] model id to stop premature compact (#131) (1f7bc42)
- image-gen: tighten types, fix silent error, dedupe URL builder (#138) (890ad71)
- local-file-link: treat extension-less paths as editor links (#129) (8a0c867)
- useKannaState: drop optimistic user_prompt when chat.send acks queued (#133) (554b492)
0.54.0 (2026-05-15)
Section titled “0.54.0 (2026-05-15)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- codex: surface image generation + unknown ThreadItems, suppress empty agent messages (#125) (4130ba9)
- oauth-pool: release token reservation on turn end so idle chats stop blocking (#128) (086d60d)
- tests: force NODE_ENV=test via bunfig preload to load React dev bundle (#127) (b38d32f)
0.53.0 (2026-05-15)
Section titled “0.53.0 (2026-05-15)”Features
Section titled “Features”- oauth-pool: add disabled token status to exclude accounts from pool (#117) (1fb43ae)
- update: host-agnostic install with detection + KANNA_UPDATE_COMMAND override (#119) (e9e66b2)
Bug Fixes
Section titled “Bug Fixes”0.52.0 (2026-05-15)
Section titled “0.52.0 (2026-05-15)”Features
Section titled “Features”- agent: proactive /compact injection before context overflows (#116) (1169e3e)
- cancel individual subagent run (#96) (b171ddf)
- claude-pty: allowlist preflight + –tools flag (P3b) (#110) (ba6b440)
- claude-pty: Linux bwrap sandbox parity (P4.1) (#112) (713c1da)
- claude-pty: macOS sandbox-exec wrapper (P4) (#111) (b3a9e12)
- claude-pty: OAuth pool rotation via CLAUDE_CODE_OAUTH_TOKEN (P5) (#114) (65c1542)
- claude-pty: PTY core driver (P2 — flag off by default) (#106) (0ece0ba)
- kanna-mcp: built-in tool shims (P3a — flag off by default) (#107) (bbaed17)
- mcp-tool-refactor: durable approval protocol + permission-gate (P1 — flag off by default) (#105) (d2b2cce)
Bug Fixes
Section titled “Bug Fixes”- agent: gate runClaudeSession finally activeTurn cleanup on isCurrentSession (#115) (fad644a)
- event-store: dedupe appendMessage by messageId (JSONL replay safety) (#109) (b6d5c01)
- subagent: cancel rejects pending resolvers even with no main turn (#94) (9aac71d)
- tool-callback test: flush background persists before tmpdir cleanup (#113) (dd0387a)
0.51.0 (2026-05-14)
Section titled “0.51.0 (2026-05-14)”Features
Section titled “Features”- phase 3 subagent orchestration + UI (#83) (bca45b9)
- phase 4 real provider integration for subagents (#86) (52d22ce)
- sidebar: asterism separator between stacks (#85) (002f39e)
Bug Fixes
Section titled “Bug Fixes”- event-store: forkChat preserves stack membership (#87) (7f76ac9)
- oauth-pool: reserve token per chat to prevent concurrent rotation race (#89) (686c6b8)
- subagent: clear pendingTool on terminal events + use /api/local-file (#88) (e32db6f)
- subagent: resolver leaks, full restart recovery, harden cap (#93) (7bb3d92)
- ws-router: strip timings from chat snapshot dedup signature (#90) (ee3548a)
0.50.0 (2026-05-14)
Section titled “0.50.0 (2026-05-14)”Features
Section titled “Features”0.49.0 (2026-05-13)
Section titled “0.49.0 (2026-05-13)”Features
Section titled “Features”- model-independent chat phase 1 (provider-switching) (#77) (075000b)
- sidebar: add stack delete via dropdown + context menu (#79) (f4843a1)
0.48.0 (2026-05-13)
Section titled “0.48.0 (2026-05-13)”Features
Section titled “Features”- chat-navbar: show worktree dir in branch label (#69) (6dca7cc)
- star projects in sidebar (#74) (65c1b33)
- tunnel: replace bash-detector with agent-callable expose_port tool (#70) (24c6233)
Bug Fixes
Section titled “Bug Fixes”- downloads: render local-file markdown links as download cards (#75) (67fb665)
- oauth-pool: tear down session on token rotation (#72) (9f28a71)
- server: serve arbitrary local files via /api/local-file (#66) (dffbf01)
- stacks: render stack chats inside expanded stack section (#71) (d00f6a5)
0.47.2 (2026-05-13)
Section titled “0.47.2 (2026-05-13)”Bug Fixes
Section titled “Bug Fixes”0.47.1 (2026-05-13)
Section titled “0.47.1 (2026-05-13)”Bug Fixes
Section titled “Bug Fixes”0.47.0 (2026-05-13)
Section titled “0.47.0 (2026-05-13)”Features
Section titled “Features”0.46.1 (2026-05-12)
Section titled “0.46.1 (2026-05-12)”Bug Fixes
Section titled “Bug Fixes”- oauth-pool: detect SDK-wrapped rate-limit and rotate tokens (c0a30a9)
0.46.0 (2026-05-11)
Section titled “0.46.0 (2026-05-11)”Features
Section titled “Features”- OAuth token pool with automatic rotation on rate-limit (#52) (219ecef)
- stacks: Phase 1 — server, events, store, ws-router (#48) (7abeff1)
- stacks: Phase 2 — chat bindings + agent spawn wiring (#50) (2295fc8)
- stacks: Phase 3 — UI plan (draft, plan-only) (#51) (4f52dac)
Bug Fixes
Section titled “Bug Fixes”- bg-tasks: remove duplicate “Background tasks” header (#53) (029c957)
- uploads: raise Bun maxRequestBodySize to upload max (#45) (68752f4)
0.45.0 (2026-05-10)
Section titled “0.45.0 (2026-05-10)”Features
Section titled “Features”- agent: inline file downloads via offer_download SDK MCP tool (#42) (20b2d99)
- bg-tasks: visibility and stop control for background tasks (#38) (416bab5)
- worktrees: server git wrapper (phase 1) (#44) (8c1553c)
Bug Fixes
Section titled “Bug Fixes”0.44.0 (2026-05-08)
Section titled “0.44.0 (2026-05-08)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- agent: clear stuck Running state after cancel-then-steer (#39) (c951f1c)
- chat-input: show attach button on desktop (#35) (40c8c8e)
0.43.2 (2026-05-06)
Section titled “0.43.2 (2026-05-06)”Bug Fixes
Section titled “Bug Fixes”0.43.1 (2026-05-06)
Section titled “0.43.1 (2026-05-06)”Bug Fixes
Section titled “Bug Fixes”0.43.0 (2026-05-06)
Section titled “0.43.0 (2026-05-06)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- agent: set claude_code preset with trust context to stop spurious malware refusals (a38ec31)
0.42.6 (2026-05-05)
Section titled “0.42.6 (2026-05-05)”Bug Fixes
Section titled “Bug Fixes”- quick-response: unblock Haiku title gen in nested CC sessions (fff7fa4)
0.42.5 (2026-05-05)
Section titled “0.42.5 (2026-05-05)”Bug Fixes
Section titled “Bug Fixes”0.42.4 (2026-05-05)
Section titled “0.42.4 (2026-05-05)”Bug Fixes
Section titled “Bug Fixes”- push: include diagnostic delivery logging in release (fb549a9)
0.42.3 (2026-05-05)
Section titled “0.42.3 (2026-05-05)”Bug Fixes
Section titled “Bug Fixes”0.42.2 (2026-05-05)
Section titled “0.42.2 (2026-05-05)”Bug Fixes
Section titled “Bug Fixes”0.42.1 (2026-05-05)
Section titled “0.42.1 (2026-05-05)”Bug Fixes
Section titled “Bug Fixes”0.42.0 (2026-05-04)
Section titled “0.42.0 (2026-05-04)”Features
Section titled “Features”- agent: emit session_commands_loaded on Claude session start (ada47a3)
- agent: expose getSupportedCommands on Claude harness (5416847)
- always-on sidebar RELOAD button + design polish (b341e37)
- auth: persist sessions across restart and browser close (#10) (2734f51)
- auto-continue: auto-resume chats on rate-limit reset (#2) (bd67cd8)
- chat-ui: @ mention file picker (7f23523)
- chat-ui: add SlashCommandPicker component (492a61a)
- chat-ui: skeleton rows while slash commands load (b3a4fba)
- chat-ui: wire slash command picker into ChatInput (41d1d22)
- client: add slash command filter and picker-open utils (5ebb58c)
- client: add slash commands store (e7af522)
- client: add useSlashCommands hook (fc213ed)
- client: populate slash commands store from chat snapshot (65c2510)
- event-store: record session_commands_loaded events (4415aab)
- events: add session_commands_loaded turn event (374e550)
- import: add Claude Code session record types (f5e1f64)
- import: add Import button to sidebar header (0759563)
- import: add importClaudeSessions state hook (5e7e491)
- import: add sessions.importClaude WS command (83219b1)
- import: append new messages when source JSONL changes (f9fe383)
- import: handle sessions.importClaude over WebSocket (52487bc)
- import: map Claude session records to Kanna transcript entries (00706a0)
- import: orchestrate import with dedup and event emission (f131f69)
- import: parse Claude Code session JSONL files (46b96bb)
- import: scan ~/.claude/projects for session files (c6e369f)
- import: surface updated count in import result alert (2529569)
- import: track source file md5 on chats for change detection (02ad85d)
- pm2 update reloader + swappable update strategy (4a36d0b)
- pm2: forward cloudflared token + password via scripts/pm2.env (3c7a250)
- push: web push notifications for chat state changes (#11) (8ecb9d1)
- read-models: expose slashCommands on ChatSnapshot (2846ffb)
- support serving kanna from a subpath (72ead70)
- tunnel: cloudflare quick-tunnel auto-expose (#3) (7a3d365)
- types: add SlashCommand type and ChatSnapshot.slashCommands (e432971)
- user-message: render steer icon left of bubble for mid-turn messages (e251047)
Bug Fixes
Section titled “Bug Fixes”- add chat auto-scroll setting (d314796)
- agent: pre-warm slash commands on chat subscribe (4c4ee81)
- auto-continue: detect rate-limit from stream result text (29ae73c)
- auto-continue: parse minutes in rate-limit reset text (bf0f33e)
- avoid autofocus for existing chat history (8a98fd5)
- chat-ui: align slash picker columns, prevent wrap (0da17a1)
- chat-ui: dismiss picker after accepting a command (321823a)
- chat-ui: show full slash command name, responsive picker (31f2aa5)
- chat: surface tool and action card errors in UI (8533147)
- close mobile sidebar after chat selection (b4b5c6f)
- diff-store: use main as default branch and support Git < 2.38 (c22f2a7)
- import: extract title from array-form user content (026ac34)
- import: harden parser against stat errors and use symmetric timestamp sentinels (18cd8d0)
- keep chat switches pinned to latest message (ad73460)
- npm: rename package scope to @cuongtran001 to match npm account (bd2c0d0)
- pm2: use ./bin/kanna shebang to bypass pm2 require-based fork wrapper (13a6e0c)
- restore chat title fallback generation (40bc694)
- restore kanna client bundle build (38dc79b)
- server: fall back to bundled cloudflared binary (d539bae)
- sidebar: allow touch scroll past project headers (ecb97d8)
- stop forcing transcript autoscroll (cc39984)
- terminal-manager: prevent zsh-newuser-install dialog in tests (ac22810)
- tests: use Object.defineProperty to override read-only globalThis props (aea7eba)
- tunnel: hide card when dismissing a proposed tunnel (097cc23)
- update: drop pm2 IPC reload to avoid “Reload in progress” error (0629f04)
- update: re-deploy installs current version when latest is stale (7deece0)
0.41.0 (2026-05-04)
Section titled “0.41.0 (2026-05-04)”Features
Section titled “Features”0.40.1 (2026-04-30)
Section titled “0.40.1 (2026-04-30)”Bug Fixes
Section titled “Bug Fixes”- tunnel: hide card when dismissing a proposed tunnel (097cc23)
0.40.0 (2026-04-29)
Section titled “0.40.0 (2026-04-29)”Features
Section titled “Features”Bug Fixes
Section titled “Bug Fixes”- chat: surface tool and action card errors in UI (8533147)
- server: fall back to bundled cloudflared binary (d539bae)
0.39.2 (2026-04-29)
Section titled “0.39.2 (2026-04-29)”Bug Fixes
Section titled “Bug Fixes”- npm: rename package scope to @cuongtran001 to match npm account (bd2c0d0)
0.39.1 (2026-04-29)
Section titled “0.39.1 (2026-04-29)”Bug Fixes
Section titled “Bug Fixes”- update: re-deploy installs current version when latest is stale (7deece0)
0.39.0 (2026-04-29)
Section titled “0.39.0 (2026-04-29)”Features
Section titled “Features”- agent: emit session_commands_loaded on Claude session start (ada47a3)
- agent: expose getSupportedCommands on Claude harness (5416847)
- always-on sidebar RELOAD button + design polish (b341e37)
- auto-continue: auto-resume chats on rate-limit reset (#2) (bd67cd8)
- chat-ui: @ mention file picker (7f23523)
- chat-ui: add SlashCommandPicker component (492a61a)
- chat-ui: skeleton rows while slash commands load (b3a4fba)
- chat-ui: wire slash command picker into ChatInput (41d1d22)
- client: add slash command filter and picker-open utils (5ebb58c)
- client: add slash commands store (e7af522)
- client: add useSlashCommands hook (fc213ed)
- client: populate slash commands store from chat snapshot (65c2510)
- event-store: record session_commands_loaded events (4415aab)
- events: add session_commands_loaded turn event (374e550)
- import: add Claude Code session record types (f5e1f64)
- import: add Import button to sidebar header (0759563)
- import: add importClaudeSessions state hook (5e7e491)
- import: add sessions.importClaude WS command (83219b1)
- import: append new messages when source JSONL changes (f9fe383)
- import: handle sessions.importClaude over WebSocket (52487bc)
- import: map Claude session records to Kanna transcript entries (00706a0)
- import: orchestrate import with dedup and event emission (f131f69)
- import: parse Claude Code session JSONL files (46b96bb)
- import: scan ~/.claude/projects for session files (c6e369f)
- import: surface updated count in import result alert (2529569)
- import: track source file md5 on chats for change detection (02ad85d)
- pm2 update reloader + swappable update strategy (4a36d0b)
- pm2: forward cloudflared token + password via scripts/pm2.env (3c7a250)
- read-models: expose slashCommands on ChatSnapshot (2846ffb)
- support serving kanna from a subpath (72ead70)
- tunnel: cloudflare quick-tunnel auto-expose (#3) (7a3d365)
- types: add SlashCommand type and ChatSnapshot.slashCommands (e432971)
- user-message: render steer icon left of bubble for mid-turn messages (e251047)
Bug Fixes
Section titled “Bug Fixes”- add chat auto-scroll setting (d314796)
- agent: pre-warm slash commands on chat subscribe (4c4ee81)
- auto-continue: detect rate-limit from stream result text (29ae73c)
- auto-continue: parse minutes in rate-limit reset text (bf0f33e)
- avoid autofocus for existing chat history (8a98fd5)
- chat-ui: align slash picker columns, prevent wrap (0da17a1)
- chat-ui: dismiss picker after accepting a command (321823a)
- chat-ui: show full slash command name, responsive picker (31f2aa5)
- close mobile sidebar after chat selection (b4b5c6f)
- diff-store: use main as default branch and support Git < 2.38 (c22f2a7)
- import: extract title from array-form user content (026ac34)
- import: harden parser against stat errors and use symmetric timestamp sentinels (18cd8d0)
- keep chat switches pinned to latest message (ad73460)
- pm2: use ./bin/kanna shebang to bypass pm2 require-based fork wrapper (13a6e0c)
- restore chat title fallback generation (40bc694)
- restore kanna client bundle build (38dc79b)
- sidebar: allow touch scroll past project headers (ecb97d8)
- stop forcing transcript autoscroll (cc39984)
- terminal-manager: prevent zsh-newuser-install dialog in tests (ac22810)
- tests: use Object.defineProperty to override read-only globalThis props (aea7eba)
0.35.0 (2026-04-28)
Section titled “0.35.0 (2026-04-28)”Features
Section titled “Features”- agent: emit session_commands_loaded on Claude session start (ada47a3)
- agent: expose getSupportedCommands on Claude harness (5416847)
- always-on sidebar RELOAD button + design polish (b341e37)
- auto-continue: auto-resume chats on rate-limit reset (#2) (bd67cd8)
- chat-ui: @ mention file picker (7f23523)
- chat-ui: add SlashCommandPicker component (492a61a)
- chat-ui: skeleton rows while slash commands load (b3a4fba)
- chat-ui: wire slash command picker into ChatInput (41d1d22)
- client: add slash command filter and picker-open utils (5ebb58c)
- client: add slash commands store (e7af522)
- client: add useSlashCommands hook (fc213ed)
- client: populate slash commands store from chat snapshot (65c2510)
- event-store: record session_commands_loaded events (4415aab)
- events: add session_commands_loaded turn event (374e550)
- import: add Claude Code session record types (f5e1f64)
- import: add Import button to sidebar header (0759563)
- import: add importClaudeSessions state hook (5e7e491)
- import: add sessions.importClaude WS command (83219b1)
- import: append new messages when source JSONL changes (f9fe383)
- import: handle sessions.importClaude over WebSocket (52487bc)
- import: map Claude session records to Kanna transcript entries (00706a0)
- import: orchestrate import with dedup and event emission (f131f69)
- import: parse Claude Code session JSONL files (46b96bb)
- import: scan ~/.claude/projects for session files (c6e369f)
- import: surface updated count in import result alert (2529569)
- import: track source file md5 on chats for change detection (02ad85d)
- pm2 update reloader + swappable update strategy (4a36d0b)
- pm2: forward cloudflared token + password via scripts/pm2.env (3c7a250)
- read-models: expose slashCommands on ChatSnapshot (2846ffb)
- support serving kanna from a subpath (72ead70)
- tunnel: cloudflare quick-tunnel auto-expose (#3) (7a3d365)
- types: add SlashCommand type and ChatSnapshot.slashCommands (e432971)
- user-message: render steer icon left of bubble for mid-turn messages (e251047)
Bug Fixes
Section titled “Bug Fixes”- add chat auto-scroll setting (d314796)
- agent: pre-warm slash commands on chat subscribe (4c4ee81)
- auto-continue: detect rate-limit from stream result text (29ae73c)
- auto-continue: parse minutes in rate-limit reset text (bf0f33e)
- avoid autofocus for existing chat history (8a98fd5)
- chat-ui: align slash picker columns, prevent wrap (0da17a1)
- chat-ui: dismiss picker after accepting a command (321823a)
- chat-ui: show full slash command name, responsive picker (31f2aa5)
- close mobile sidebar after chat selection (b4b5c6f)
- diff-store: use main as default branch and support Git < 2.38 (c22f2a7)
- import: extract title from array-form user content (026ac34)
- import: harden parser against stat errors and use symmetric timestamp sentinels (18cd8d0)
- keep chat switches pinned to latest message (ad73460)
- pm2: use ./bin/kanna shebang to bypass pm2 require-based fork wrapper (13a6e0c)
- restore chat title fallback generation (40bc694)
- restore kanna client bundle build (38dc79b)
- sidebar: allow touch scroll past project headers (ecb97d8)
- stop forcing transcript autoscroll (cc39984)
- terminal-manager: prevent zsh-newuser-install dialog in tests (ac22810)
- tests: use Object.defineProperty to override read-only globalThis props (aea7eba)