Skip to content Changelog
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)
- 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
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)