Skip to content

Changelog

Changelog

0.108.1 (2026-07-09)

Bug Fixes

  • file-preview: render labeled markdown/mermaid instead of raw text (#498) (69b3b5e)

0.108.0 (2026-07-09)

Features

  • graceful shutdown + crash-resilient turn resume (#493) (d76119a)
  • settings: disable agent teams + advisor to curb token blowup (#496) (6d2fbf8)
  • surface advisor_tool_result blocks as assistant_advisor transcript entries (#495) (67b1904)

0.107.0 (2026-07-09)

Features

  • advisor: friendly 400 message + composer picker hint (#492) (5d59327)
  • teams: auto-collapse Teams panel, expand only while running (#490) (e5de22b)

0.106.0 (2026-07-09)

Features

  • advisor_20260301 tool — per-chat advisor model picker (SDK driver) (#488) (e62d824)
  • Agent SDK native teams — live panel + subagent teammates (#483) (3fb216f)
  • kanna-mcp: accept absolute paths in preview_file/offer_download (#489) (4c476bb)
  • render mermaid blocks in file preview modal (#487) (f2a5459)

Bug Fixes

  • composer: provider switch must carry the provider’s own model (#485) (16b0ede)

0.105.0 (2026-07-04)

Features

  • in-chat file preview via mcp__kanna__preview_file tool (#479) (93056ab)

Bug Fixes

0.104.0 (2026-07-03)

Features

  • add full-page /workflows view with per-agent transcript drill-in (#468) (#478) (a13cd75)

Bug Fixes

  • client: only 404 disables download offer card (#476) (54fbc13)

0.103.2 (2026-07-01)

Bug Fixes

  • subagents: centralize model catalog with customModels merge (#474) (f3a7367)

0.103.1 (2026-07-01)

Bug Fixes

  • models: honor custom model catalog when normalizing selections (#472) (9fd134b)

0.103.0 (2026-07-01)

Features

  • configurable model catalog (customModels in settings) (#469) (4371f06)

0.102.2 (2026-06-30)

Bug Fixes

  • mcp: inject fresh oauth bearer when testing authenticated MCP servers (#465) (b187c39)

0.102.1 (2026-06-30)

Bug Fixes

  • mcp-oauth: persist AS metadata so token refresh survives past TTL (#463) (be82004)

0.102.0 (2026-06-29)

Features

  • OAuth 2.1 client for HTTP/SSE custom MCP servers (#461) (924ba2e)

0.101.0 (2026-06-26)

Features

  • per-turn token cost across SDK/OpenRouter/Codex + cumulative session totals (#460) (5e4c9d7)

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)

Features

  • renderer: linkify text references adjacent to URLs (#456) (794d662)

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)

Features

  • lexical: migrate chat input and messages to Lexical 0.45 (#446) (a5d3619)

Bug Fixes

  • session-panel: merge Kanna subagents into system_init.agents (#450) (ba899c8)

0.98.0 (2026-06-22)

Features

  • chat-ui: show local skills + slash commands in / picker (#444) (d5e344b)

0.97.3 (2026-06-20)

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)

Bug Fixes

  • chat-ui: stop crash on aborted-stream result with missing body (#439) (3c398f3)

0.97.1 (2026-06-19)

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)

Features

  • provider: add OpenRouter as third agentic chat provider (#435) (01b26a8)

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)

Features

  • subagent: per-subagent trigger mode (auto/manual) (#429) (0a3a405)

0.95.1 (2026-06-17)

Bug Fixes

  • subagent: resolve delegate_subagent id by id or unambiguous name (#427) (2d89d39)

0.95.0 (2026-06-17)

Features

  • agent: label stack projects in the Claude system prompt (#425) (a43e805)

0.94.1 (2026-06-16)

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)

Features

  • subagent: add run_in_background delegation mode (#420) (a10fc89)

0.93.0 (2026-06-16)

Features

  • SDK↔PTY driver feature parity (keep-alive subagents, workflow panel) (#418) (1742464)

0.92.3 (2026-06-12)

Bug Fixes

  • local-projects: enable vertical scroll when projects overflow viewport (#416) (bb721b7)

0.92.2 (2026-06-12)

Bug Fixes

  • test: register happy-dom in preload so Radix portals render deterministically (#414) (5981875)

0.92.1 (2026-06-11)

Bug Fixes

  • claude-pty: detect turn end via stop_reason — CLI ≥2.1.x writes no system rows (#411) (8889806)

0.92.0 (2026-06-09)

Features

  • models: add Claude Fable 5 to the Claude provider catalog (#409) (ffd106f)

Bug Fixes

  • chat-ui: keep subagent message text selectable (#407) (73f8121)

0.91.0 (2026-06-08)

Features

  • subagent: per-subagent folder restriction (workingDir + allowedPaths) (#404) (f4e5af3)

Bug Fixes

  • mobile: left-edge swipe opens sidebar instead of going back (#406) (cfe4452)

0.90.1 (2026-06-08)

Bug Fixes

  • compact: finalize PTY proactive /compact turn on compact_boundary (#402) (653c8f5)

0.90.0 (2026-06-07)

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

  • 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)

Features

  • transcript: surface Claude thinking blocks as assistant_thinking (61b9f16)
  • transcript: surface Claude thinking blocks as assistant_thinking (43860b9)

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)

Bug Fixes

  • claude-pty: follow transcript with pure tail-poll, drop fs.watch (#392) (1b6f3f2)

0.88.0 (2026-06-06)

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)

Features

  • pty: surface loaded CLAUDE.md / rule files in transcript (#386) (5d4cc52)

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)

Features

  • messages: always render file card for local file links (#377) (e864cc6)

Bug Fixes

  • chat-ui: make composer toolbar tappable on mobile (#378) (73f1fd4)

0.85.2 (2026-06-04)

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)

Bug Fixes

  • pty: stop re-spawn from leaking an invisible PTY child (#375) (a6fdbb0)

0.85.0 (2026-06-04)

Features

  • workflow: richer per-agent journal detail in drill-in (#372) (8d27627)

Bug Fixes

  • transcript: stop rendering benign synthetic turn-end markers as API errors (#374) (6206239)

0.84.1 (2026-06-04)

Bug Fixes

  • workflow: surface a live re-run that reused a crashed run’s runId (#370) (bef730e)

0.84.0 (2026-06-04)

Features

  • workflow: live per-agent detail for running runs (journal.jsonl) (#367) (5ac6975)

Bug Fixes

  • sidebar: make collapse-all chip a real affordance with semantic icon (#369) (92cc071)

0.83.1 (2026-06-03)

Bug Fixes

  • workflow: getRun returns synthetic running run (drill-in no longer flickers) (#365) (243f8fd)

0.83.0 (2026-06-03)

Features

  • workflow: show in-flight runs as running in the status panel (#363) (be3933d)

0.82.2 (2026-06-03)

Bug Fixes

  • agent: real workflow liveness via live run dir (corrects #359 no-op) (#361) (9707062)

0.82.1 (2026-06-03)

Bug Fixes

  • agent: keep PTY session alive while a background workflow is running (#359) (8e7af80)

0.82.0 (2026-06-03)

Features

  • Kanna-owned agent self-scheduled wake (ScheduleWakeup + pending-workflow harvest) (#357) (51fd6fa)
  • workflow status panel (PTY disk-watch) (#358) (1ab36a2)

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)

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)

Bug Fixes

  • share: make share page scroll on overflow (mobile-safe) (#347) (539b8e8)

0.81.1 (2026-06-02)

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)

Features

  • chat-ui: show session token total pill in composer (#341) (23872d9)

Bug Fixes

  • tool-callback: live broadcast + stop cancel-on-rotation + drop ask timeout (#343) (0af2ff8)

0.80.0 (2026-05-31)

Features

  • transcript: anchor subagent runs under their delegate_subagent call (#339) (8e5e445)

0.79.0 (2026-05-30)

Features

  • subagent: keep-alive multi-turn PTY sessions (#338) (deb412b)

Bug Fixes

  • pty: deliver subagent prompt via MCP channel push (fail-fast) (#333) (c93afc3)

0.78.0 (2026-05-29)

Features

  • models: add claude-opus-4-8 to provider catalog (#335) (8d36fdb)

0.77.3 (2026-05-28)

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)

Bug Fixes

  • share: popover trigger + share-view rendering (#325) (fd896ff)

0.77.1 (2026-05-25)

Bug Fixes

  • share: include kind discriminant in share.* ws responses (#323) (a115854)

0.77.0 (2026-05-25)

Features

  • share: derive share URL from request origin, drop tunnel gate (#321) (24599e9)

0.76.0 (2026-05-24)

Features

  • share: read-only public session share (#318) (c7a7245)

0.75.0 (2026-05-24)

Features

  • pty: realtime memory tracking in live status panel (#316) (8148302)

0.74.0 (2026-05-23)

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)

Bug Fixes

  • pty: bound transcript poll + quiet-period TUI ready gate (#311) (e4b3bed)

0.73.0 (2026-05-23)

Features

  • pty: live status panel + cancel/kill actions (#309) (e077d7a)

0.72.0 (2026-05-23)

Features

0.71.0 (2026-05-23)

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

  • 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)

Features

  • transcript: syntax-highlight fenced code blocks in chat messages (#276) (f966b56)

0.69.0 (2026-05-22)

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)

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)

⚠ BREAKING CHANGES

  • claude-pty: Shannon-style TUI transport — drop —print, tail transcript JSONL (#261)

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

  • 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)

Features

  • messages: surface OAuth key in chat AccountInfoMessage (#254) (e24ec3e)

0.66.1 (2026-05-20)

Bug Fixes

  • wiki: editorial home page, WCAG AA gray ramp, Starlight cascade (#252) (ed2acf3)

0.66.0 (2026-05-20)

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)

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)

Features

  • messages: render mermaid diagrams in transcript markdown (#242) (c606355)

Bug Fixes

  • event-store: decouple subagent live progress from global writeChain (#244) (21ea6e9)

0.64.0 (2026-05-19)

Features

  • oauth-pool: name contested chat in token-unavailable refusal (#235) (eef731b)
  • subagent: live UI broadcast + pending tool loading state (#237) (65969ed)

Bug Fixes

  • ui: align PTY driver banner with floating sidebar chrome (#239) (855b80d)

0.63.0 (2026-05-19)

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)

Features

  • ui: unify AskUserQuestion slide UI across native + pending paths (#229) (a565506)

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)

Bug Fixes

  • tools: peel MCP CallToolResult envelope when hydrating ask_user_question (#225) (fc106c1)

0.61.4 (2026-05-18)

Bug Fixes

  • ui: normalize mcp__kanna__ask_user_question text→question in pending card (#223) (3610f9b)

0.61.3 (2026-05-18)

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)

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)

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)

Features

  • codex: auto-relocate ImageGeneration outputs into project (#210) (d1fb494)

Bug Fixes

  • settings/subagents: remove duplicate copy in empty state and list (#212) (55510cb)

0.60.0 (2026-05-18)

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)

Features

  • subagent: main agent delegates via mcp__kanna__delegate_subagent (#205) (47466dc)
  • ui: centralize app bootstrap loading state (#206) (b4ada0e)

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)

Features

  • pty: switch to —print stream-json + trust claude as source of truth (#200) (ca62112)

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)

Bug Fixes

  • server: allow HEAD on /api/projects/:id/{files,uploads}/*/content (#194) (330f33a)

0.57.4 (2026-05-17)

Bug Fixes

  • chat-input: prevent iOS Safari page-jump when tapping file picker (#192) (e139eb8)

0.57.3 (2026-05-17)

Miscellaneous Chores

  • release 0.57.3 to publish reverted baseline to npm (#190) (5dd8b88)

0.57.2 (2026-05-17)

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)

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

  • restore chat input + version to 0.57.0 state (#186) (cb0495a)

0.57.0 (2026-05-17)

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

  • 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)

Bug Fixes

  • chat: transcript not scrollable on mobile for long conversations (#159) (22b273b)

0.56.3 (2026-05-16)

Performance Improvements

  • transcript: stabilize markdown props + memoize message components (#157) (6ed1531)

0.56.2 (2026-05-16)

Bug Fixes

  • chat-preferences: persist composer state + use providerDefaults for new chat (#155) (54aa3e0)

0.56.1 (2026-05-16)

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)

Features

  • file-preview: mobile-first universal file preview sheet (#143) (181e60a)

Bug Fixes

  • agent: recreate activeTurn on late canUseTool from SDK self-resume (#148) (4114fc7)

0.55.3 (2026-05-16)

Bug Fixes

  • server: dispose fs.watch managers before fallible shutdown awaits (#146) (9460481)

0.55.2 (2026-05-16)

Bug Fixes

  • test: dispose AppSettingsManager FSWatchers via centralized afterEach (#144) (9b7c0be)

0.55.1 (2026-05-16)

Bug Fixes

  • ci:diag: capture stuck-process stack when bun test hangs (#141) (4d83e9c)

0.55.0 (2026-05-16)

Features

  • claude-pty: P7 — driver toggle, lifecycle, sidebar badges, per-chat permissions (#135) (1742ea7)

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)

Features

  • claude-pty: session lifecycle + prompt-too-long recovery (P6) (#122) (9239751)

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)

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

  • oauth-pool: refuse spawn + rotate on 401 to stop keychain-fallback 401 loop (#123) (99662fc)

0.52.0 (2026-05-15)

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

  • 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)

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

  • 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)

Features

  • model-independent chat phase 2 (subagent CRUD + @agent mentions) (#81) (07955a8)

0.49.0 (2026-05-13)

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)

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

  • 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)

Bug Fixes

  • app-settings: atomic writes prevent OAuth token loss (#60) (7619fb8)

0.47.1 (2026-05-13)

Bug Fixes

  • stacks: stack chat create row layout on narrow widths (#57) (95d83be)

0.47.0 (2026-05-13)

Features

  • stacks: Phase 3 — sidebar UI, chat creation, peer strip (#55) (0a680c1)

0.46.1 (2026-05-12)

Bug Fixes

  • oauth-pool: detect SDK-wrapped rate-limit and rotate tokens (c0a30a9)

0.46.0 (2026-05-11)

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

  • bg-tasks: remove duplicate “Background tasks” header (#53) (029c957)
  • uploads: raise Bun maxRequestBodySize to upload max (#45) (68752f4)

0.45.0 (2026-05-10)

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

  • push: skip push when chat is currently open (#41) (f6c6bf2)

0.44.0 (2026-05-08)

Features

  • uploads: configurable max file size + upload progress UI (#37) (220d590)

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)

Bug Fixes

  • terminals: stop dev process leaks on project remove, shell exit, SIGHUP, and crash (#33) (7d872c1)

0.43.1 (2026-05-06)

Bug Fixes

  • diff-store: harden git spawns and add CI test workflow (#31) (fe874fb)

0.43.0 (2026-05-06)

Features

  • timings: chat session timings UI (#28) (2f50b22)

Bug Fixes

  • agent: set claude_code preset with trust context to stop spurious malware refusals (a38ec31)

0.42.6 (2026-05-05)

Bug Fixes

  • quick-response: unblock Haiku title gen in nested CC sessions (fff7fa4)

0.42.5 (2026-05-05)

Bug Fixes

  • push: use /chat singular route in notification payload (#24) (f7ee018)

0.42.4 (2026-05-05)

Bug Fixes

  • push: include diagnostic delivery logging in release (fb549a9)

0.42.3 (2026-05-05)

Bug Fixes

  • test: make pushClient tests robust to readonly globalThis.window (#20) (18451f0)

0.42.2 (2026-05-05)

Bug Fixes

  • push: use real mailto for VAPID subject (#18) (df5fd48)

0.42.1 (2026-05-05)

Bug Fixes

  • settings: repair push notifications UI overflow (#16) (ac39fcd)

0.42.0 (2026-05-04)

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

  • 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)

Features

  • push: web push notifications for chat state changes (#11) (8ecb9d1)

0.40.1 (2026-04-30)

Bug Fixes

  • tunnel: hide card when dismissing a proposed tunnel (097cc23)

0.40.0 (2026-04-29)

Features

  • auth: persist sessions across restart and browser close (#10) (2734f51)

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)

Bug Fixes

0.39.1 (2026-04-29)

Bug Fixes

  • update: re-deploy installs current version when latest is stale (7deece0)

0.39.0 (2026-04-29)

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

  • 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)

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

  • 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)