# Changelog ## [v0.6.10] - 2026-05-17 - fix: refresh sidebar child session links (a49908a) - ci: deploy pages from dev (bc50843) - fix: route permission replies through session (75bd8ac) - fix: avoid iOS toolbar bottom gap (d880fac) - fix: keep provider enabled for visible models (2462adf) - fix: show detailed completion time on hover (9ca1ab6) ## [v0.6.9] - 2026-05-16 - fix(terminal): correct clipboard paste behavior (bf6f902) - ci(docker): add image workflow guardrails (da80d45) - fix(docker): avoid qemu frontend builds (2d4d00b) ## [v0.6.8] - 2026-05-16 - fix(diff): keep split word diff text themed (53e1d9a) - feat(docker): add optional host backend access (279ac15) - fix(message): preserve aborted messages with content (86fd11f) ## [v0.6.7] - 2026-05-15 - fix(input): prevent IME confirmation from sending messages (5f4e0bb) - feat(terminal): add scoped clipboard keybindings (2f8a933) ## [v0.6.6] - 2026-05-13 - fix(session): 修复 PR #90 的子目录加载竞态并理顺范围刷新语义 (5360b59) - fix(session): 目录切换时合并活动会话刷新状态 (4aca25d) - feat(file-explorer): 按目录恢复文件树展开状态 (e29498d) ## [v0.6.5] - 2026-05-10 - ui: show bash working directory (48d5b28) - fix: skip shiki fallback for unsupported languages (d4ea3be) ## [v0.6.4] - 2026-05-04 - fix: keep delete change bars continuous (843d861) ## [v0.6.3] - 2026-05-04 - ui: simplify tool diff result headers (a5889a5) - build: reduce bundled asset size (3e4aaa2) - fix: align wrapped diff empty textures (d4b187b) - fix: smooth split session loading (c4f3bb7) ## [v0.6.2] - 2026-05-04 - fix: smooth wrapped diff scrolling (e46d0e5) - fix: center collapsed diff buttons on mobile (9c1c6ef) - fix: keep empty diff buffer textures aligned (3b70696) ## [v0.6.1] - 2026-05-03 - fix: align readonly code gutters with diffs (b9a15d3) - fix: polish diff gutter and separators (2568070) - fix: keep chat bottom spacing comfortable (bc42873) - fix: tighten chat surface bottom spacing (f47dedb) - fix: PWA safe-area double padding on iOS (0b4fa33) ## [v0.6.0] - 2026-05-03 - test: update diff viewer mock for shared data (13d7c04) - fix: stabilize preview tab hover width (f2d0564) - feat: improve file and change previews (7ae977d) - fix: restore scrolling for inline code previews (09d3e96) - perf: share diff data with fullscreen viewer (e3ceef8) - perf: hoist diff viewer data across view modes (4467730) - fix: improve readonly code selection contrast (4955f56) - fix: strengthen empty diff buffer texture (849445f) - fix: add Pierre-style empty diff buffers (16eec59) - fix: adapt line number gutter width (d37f112) - fix: center diff separator icons (db857dc) - fix: port Pierre diff separator styling (789dcf2) - fix: add Pierre-style diff separator expansion (1ce0d3a) - fix: refine handwritten diff collapsed separators (ab9c8a6) - fix: mask readonly code gutters (0a41e2a) - refactor: extract readonly codemirror view (0b81235) - fix: refine code search responsive layout (fc12a33) - fix: anchor code preview search panel (00244e3) - fix: polish code preview search panel (cd4e8d1) - fix: smooth syntax theme switching (1f079e1) - fix: use complete github shiki themes (2fc89fb) - fix: align shiki theme with github syntax colors (e4c171a) - feat: add adaptive shiki theme (6cb720e) - feat: use codemirror for code previews (487cea3) - fix: optimize sidebar transition rendering (06fe9a2) - fix: limit message offscreen unmounting to resize (3986e5f) ## [v0.5.20] - 2026-05-01 - fix: preserve git subdirectory projects (e9646b9) ## [v0.5.19] - 2026-04-29 - fix: tighten sidebar search spacing (8b76cb2) - fix: align desktop titlebar and dialog layout (f5800ba) - fix: align dialog overlay styling (fe3a3cf) - fix: unify right panel tab styling (ca6d697) - fix: align command palette styling (dc67f38) - fix: polish sidebar popover styling (da633ea) - fix: preserve route session during refresh (9d3f0a0) - fix: prevent terminal reconnect loops on global switch (5d0aca2) ## [v0.5.18] - 2026-04-29 - fix: tighten pane focus and interaction regressions (c800e44) - fix: prevent route sync from overwriting focused panes (fa44f13) ## [v0.5.17] - 2026-04-28 - fix: keep session actions tied to visible focus (0e16597) - ci: update GitHub artifact actions (d9e49c6) ## [v0.5.16] - 2026-04-28 - fix: hide session actions after mouse selection (1d6b4be) - ci: upgrade GitHub Actions Node runtimes (ff10d7b) ## [v0.5.15] - 2026-04-28 - fix: restore model selector typography scaling (121b762) ## [v0.5.14] - 2026-04-28 - fix: close the remaining review regressions (58a03dc) - fix: clear lint regressions and selector focus artifacts (1b85707) - fix: preserve injected desktop titlebar controls (7e60acf) - fix: reveal session row actions on keyboard focus (a568535) - fix: ignore hidden controls during menu dismissal (2db0cd0) - fix: normalize menu focus target detection (c981584) - fix: harden menu close paths against hidden targets (c1ac600) - fix: make portal menus inert only after close (f82b285) - fix: route tab exits through real control order (ce3ad2d) - fix: keep selector focus stable during keyboard actions (6fbefae) - fix: finish keyboard flows for selection popups (110cb06) - fix: complete keyboard navigation for selection menus (ce247ee) - fix: stabilize stacked dialog and toolbar menu focus (3d3c542) - fix: align keyboard paths across dialogs and selectors (8f7b01f) - fix: tighten follow-up focus and visibility behavior (7618593) - fix: close the remaining interaction accessibility gaps (f634223) - fix: polish remaining high-traffic control semantics (5c88ad0) - fix: resolve remaining session and dialog correctness issues (7bde507) - fix: tighten menu and diff accessibility (399471d) - fix: finish button semantics in project controls (c05d5c9) - fix: improve semantic buttons in settings and sidebar (3a1b5bf) - fix: harden session updates and menu interactions (1d673df) - fix: update context usage immediately after compaction (df01835) ## [v0.5.13] - 2026-04-27 - fix: restore drag and drop in secondary desktop windows (36d489e) ## [v0.5.12] - 2026-04-27 - fix: create the Android main window explicitly (1c20510) ## [v0.5.11] - 2026-04-26 - fix: defer desktop windows until the first frame is ready (1b1e186) - fix: remove titlebar separator that misaligns with sidebar border (ed14752) - fix: prevent overlay sidebars from being obscured by desktop titlebar (8b20d80) - feat: add titlebar actions — back/forward, open project, settings, new window (65abc23) - fix: keep fullscreen viewers below desktop chrome (40e1ef4) ## [v0.5.10] - 2026-04-26 - feat: add manual terminal labels and restore state (b42a90d) - fix: align terminal PTY handling with upstream (093f2f2) - fix: avoid macOS traffic light overlap in fullscreen headers (a5a3554) ## [v0.5.9] - 2026-04-23 - fix: harden live tool timing updates (d6c963a) - feat: resolve issue #74 running tool durations (54490f3) - feat: store calibrated server time locally (f35c4ab) - feat: handle server.connected event timestamps (0e77075) - refactor: extract shared ticking clock hook (1b0c626) ## [v0.5.8] - 2026-04-21 - fix: polish sidebar session and notification layout (51b22f2) - refactor: modularize settings backup snapshots (a9d59c6) - fix: reset project dialog state on reopen (b344278) - feat: add settings backup import and export (93ad2ab) - fix: rebalance obsidian surface contrast (0837734) - fix: separate system notification settings from sound config (ccc80e4) - feat: add separate system notification controls (3236d14) - feat: add Dracula theme preset (7623377) - fix: persist model selection across session restore (d8eb318) - fix: shrink launcher icon mark further for masked shells (4f3e99f) - fix: reduce app icon mark scale and drop custom Android splash (2552342) - fix: remove unsupported Android splash attr from canary build (21ea11a) - fix: shrink Android app icon foreground and add native splash theme (8325bfc) - feat: redesign app icons for desktop and Android (527d423) ## [v0.5.7] - 2026-04-19 - fix: anchor toasts to the content area beneath desktop titlebar (fe15280) ## [v0.5.6] - 2026-04-19 - chore: sync Tauri app icons from web opencode.svg (f792218) - polish: slim desktop titlebar down to minimal app chrome (375e8d1) - feat: add platform-aware desktop titlebar foundation (43fa2da) - fix: prevent model selector from jumping to wrong provider on split (5b33360) ## [v0.5.5] - 2026-04-18 - fix: remove redundant *Single i18n keys — let i18next handle count=1 natively (9385ef8) - style: match pane drop highlight radius to pane shell (rounded-lg) (f8acac2) - feat: enable drag-to-split on active session list items (ac20b7b) ## [v0.5.4] - 2026-04-18 - polish: pane drop overlay — drop text labels, harden edge cases (2be4c13) - perf: keep pane drop overlay state out of ChatPane re-render path (17025ad) - feat: drag sessions onto chat pane to split or replace (e413864) - fix: add keyboard shortcuts to question dialogs (send keybinding to submit, Escape to skip) (dc83e0e) - fix: narrow shell tool detection to exact 'sh' match across all matchers (f534454) - Update zh-CN usage stats labels to English (074878e) - fix: distinguish file writes in tool summary (2f25e93) - fix: refine message tool summary wording (1d41542) - fix: guard session error without sessionID (2166183) ## [v0.5.3] - 2026-04-17 - style: use distinct icons for settings tabs (9b2adb1) - fix: sanitize exported CSS snippet filenames safely (139725c) - fix: adapt token usage ring track to all themes (75f2ad4) - refactor: derive theme previews from preset tokens (720c426) - feat: add reusable CSS overrides for themes (eba9d1d) - refactor: split settings into agent and workspace tabs (b38ac6b) - feat: add configurable message completion timestamps (2f01c56) - feat: add model visibility settings (731efdd) - style: improve glass effect - thicker base, blur(22px), saturate(200%) (bd27ce1) - feat(themes): 新增Sakura、Ocean、Obsidian三款预设主题 (bfa449c) - feat(settings): 添加自定义CSS模板管理功能 (79db9f4) ## [v0.5.2] - 2026-04-15 - test: fix streamed event mock typing (92627ee) - fix: preserve UTF-8 text in streamed markdown updates (8d89ce4) - feat: add release update checks with about entry (closes #33) (e29a842) - fix: preserve files and changes panel state across tab switches (closes #63) (3d57dc9) - fix: allow pin toggle on selected model in desktop model selector (96e0ab2) - fix: remove mobile 16px font-size override so input matches message stream (9e1eb6e) ## [v0.5.1] - 2026-04-13 - feat: show agent and model name in step finish info (closes #61) (7299319) - fix: restore line-height lost during font system migration (3d83f3b) - fix: split diff view losing syntax highlighting when word diff is active (9f281ec) - feat: tune default font sizes to match opencode official UI proportions (29c6f76) - feat: unified typography system with CSS variables and per-axis font scale sliders (4533b15) ## [v0.5.0] - 2026-04-13 - feat: add keep-screen-awake toggle in appearance settings (Wake Lock API) (3a6a13c) - fix: update inline code test to match simplified style (no border/bg) (edc4beb) - fix: simplify inline code style and add persistent underline to links (7f2cd73) - fix: allow share URL to scroll horizontally on mobile (d049ce0) - fix: ensure bottom padding in PWA standalone for devices without Home Indicator (eb8682c) - fix: use replaceState on mobile to prevent session history stacking (ceed83d) ## [v0.4.9] - 2026-04-11 - fix: prevent model restoration from overriding user selection during streaming (0c799e3) - fix: return 404 for /api on frontend-only image (b07a30e) - fix: align UI hook dependencies with live state (63a2b87) - refactor: remove dead UI cleanup leftovers (5b82694) - fix: remove unused resolveAlias function in shiki module (81d5fdb) - perf: lazy-load shiki languages and optimize Tauri release profile (1be34e0) - fix: PTY WebSocket auth fails behind reverse proxy (4bbb3c5) - fix: prevent session fetch storm on SSE reconnect in SessionContext (ae26e6c) - refactor: unify SSE and PTY into a single transparent bridge (73e638f) - fix: use tungstenite message variants for PTY bridge (6210294) - fix: bridge Tauri mobile PTY through native client (e33bde5) ## [v0.4.8] - 2026-04-10 - feat: queue follow-up messages behind active turns (90756e3) - fix: GPT apply_patch diff not rendering and error messages invisible in chat (6d6f81d) - fix: align prompt history cursor navigation (4dd2bf4) - fix: tighten session alerts and mobile code copy (8e02c0a) ## [v0.4.7] - 2026-04-09 - fix: update command test to mock sdk instead of removed http module (f7521bc) - fix: patch sdk migration review findings (e45b2b5) - refactor: collapse remaining sdk helper types (c9d2a74) - refactor: align remaining api models with sdk (f9c9272) - refactor: align user message model fields with sdk (e427ccd) - refactor: align event types with sdk (826cd49) - refactor: tighten message part guards (b83098f) - refactor: align tool part types with sdk (cecab44) - refactor: align event payload adapters with sdk (d9ffe50) - refactor: tighten sdk adapters and message conversions (a5aa326) - refactor: align config and skill types with sdk (4eed10c) - refactor: trim remaining sdk type wrappers (bfa0bde) - refactor: collapse API types onto sdk definitions (e5e7305) - refactor: replace API type wrappers with sdk aliases (89d42ac) - fix: finish sdk migration cleanup (a90d0aa) - fix: align API layer with official opencode sdk (ae4308c) - fix: eliminate UI flicker, merge duplicate effects, avoid object mutation (a6e4cc1) - fix: stabilize git workspace recents and worktree actions (abd0ee5) ## [v0.4.6] - 2026-04-07 - fix: keep active child sessions visible across projects (9d8a725) - fix: polish folder recents load more control (cbb1d59) - fix: fade changes stats as one line (f05f8af) - fix: compact changes panel header (231904f) ## [v0.4.5] - 2026-04-06 - fix: refine changes menu spacing (ad48921) - feat: sync file explorer status with change modes (b655d50) - fix: align undo state with visible messages (752cae6) - fix: clear command drafts after dispatch (4851435) - fix: show history compacted messages (cc7d980) - fix: simplify changes panel mode switch (ceb721b) - feat: add git and branch review modes (71a8c0d) - feat: add git setup and current-turn session changes (769f3ab) ## [v0.4.4] - 2026-04-06 - fix: keep edit mode checkboxes compact on mobile (3d7c342) - feat: support shift-select in recents edit mode (6181f5f) - style: refine edit mode selection visuals (c7ca524) - feat: add batch edit mode for sidebar recents and rewrite folder drag-sort (a1326d5) - fix: persist panel layout and terminal positions (e1aeea8) ## [v0.4.3] - 2026-04-05 - fix: improve pane navigation and sidebar drag affordances (a3dd889) - fix: keep input focus after sending (161e7b8) - fix: render bash tool commands inline (b6a6db2) - fix: remove sidebar footer divider (d6e59b9) - fix: prefer pointer outline interaction on hybrid devices (a20ebc0) ## [v0.4.2] - 2026-04-03 - fix: switch folder recents to the clicked directory (d579407) - fix: support sticky ctrl+alt combos in mobile terminal keyboard (4d9c5b3) - fix: use tauri plugin-opener for external links in terminal and MCP auth (9b80bf3) - fix: add background tint and equal spacing to plain code block copy button (102b5d4) - fix: prevent global mode from being overridden by pane directory sync (b7a665c) ## [v0.4.1] - 2026-04-03 - fix: disable split-pane entry points on small touch screens (3c1a607) ## [v0.4.0] - 2026-04-03 - fix: align request dialogs with the input dock width (59b5962) - perf: fix memo-defeating patterns in message rendering pipeline (f678d36) - fix: stabilize ChatPane tree structure across fullscreen toggle (79b28f1) - fix: preserve DOM across pane fullscreen toggle and hide split button in fullscreen (13c7f5e) - fix: keep split resizing off the render path (750dd50) - fix: normalize panel PTY restoration and dedupe terminal tabs (d1b4565) - feat: add pane fullscreen mode and refine split header actions (cf959e0) - fix: remove split container transition side effects (5332f61) - fix: stabilize split-pane header interactions (6631e01) - refactor: streamline split-pane chrome and transitions (cdb4a8b) - fix: avoid first-frame tool expansion flicker on session switch (a71dea2) - refactor: finish pane-first cleanup and auto-approve wiring (8af9e57) - fix: unify router state and focused-pane directory sync (2cbb177) - refactor: remove legacy focused-session compatibility layer (e4d0616) - refactor: unify chat shell around focused pane state (e45dd17) - fix: sidebar selectedSessionId follows focused pane in split mode (a82abaf) - fix: isolate per-pane state — fullAutoMode, agent selection, session eviction, clearSession (18bc9af) - fix: prevent duplicate SSE subscriptions in split-pane mode (e15ad08) - feat: add split-pane UI with full-parity ChatPane, SplitContainer, PaneHeader, SplitToolbar (3af6b14) - refactor: parameterize useChatSession for multi-instance support (1b37d8d) - refactor: make session infrastructure multi-instance ready (e0ce47d) - fix: hide assistant fork action when no text can be copied (f734462) - fix: keep composer action blur out of transform layers (6eb3bf0) ## [v0.3.8] - 2026-03-31 - feat: add fullscreen button to file preview and changes diff preview (9e4ca2d) - feat: enable fork from assistant messages to preserve AI replies (f2a0079) - refactor: unify floating component shadows to a consistent two-tier system (shadow-sm / shadow-lg) (1cf526e) - chore: upgrade dependencies (vite 8, i18next 26, lucide-react 1.x, etc.) (41498bf) - fix: adjust ModelSelector padding so scrollbar doesn't overlap list content (e7d6e4f) - refactor: unify ModelSelector into a single component for both PC and mobile (5b81638) - fix: sync session title to messageStore on SSE update for real-time header refresh (b74bb6a) - fix: align mobile header toggle spacing (1052826) ## [v0.3.7] - 2026-03-28 - fix: remove double border on attachment meta when no content preview (d29a2f4) - fix: hide floating actions (undo/redo/permission) during todo panel swap (a3a7231) - fix: apply glass effect to mobile collapsed capsule (2075818) - fix: fallback fetch after send to prevent missing user message on SSE drop (e2138df) - fix: skip overlay scrollbar on elements with no-scrollbar class (506cf24) - feat: child sessions displayed under parent in sidebar with toggle for always-show (97ce7d8) - feat: add diff toggle for folder recents (a1ed95e) - fix: wire compact model selector to global shortcut (d14fb42) ## [v0.3.6] - 2026-03-28 - test: add chatViewport mock to InputBox and InputToolbar tests (7eb80ac) - fix: remove unused let binding in overlayScrollbar (ab9eaba) - feat: add horizontal overlay scrollbar support (ad8d21d) - refactor: rewrite outline index with visual config, focus-based interaction and entry windowing (18bccf9) - fix: align compact model selector trigger (480dd04) - refactor: centralize chat viewport state (8512fcb) - fix: improve coarse pointer support in desktop UI (4cfc8e5) ## [v0.3.5] - 2026-03-27 - fix: use previous stable tag for release changelog (b00cff7) - fix: load chat header title from session detail (0b8443c) - fix: stabilize chat history loading scroll behavior (87190c6) - fix: animate todo panel swap without layout jank (ca8a672) - feat: add frosted glass toggle in appearance settings (662070c) - fix: apply overlay scrollbar to textarea, hide all native scrollbars (5dce51f) - fix: frosted glass not rendering in Tauri production build & overlay scrollbar positioning (96e72c1) - feat: replace native scrollbars with global overlay scrollbar system (da09781) - refactor: simplify @ and / menus with cleaner layout and unified style (f5bddec) - refactor: redesign ModelSelector for glass aesthetic (33a9dd2) - refactor: unify frosted glass system with CSS utility classes (0e459f9) - style: introduce frosted glass effect to all floating surfaces (ae10178) - fix: remove extra padding from message toggles (4eb916a) ## [v0.3.4] - 2026-03-24 - fix: align markdown copy buttons with header text (80e59ce) - fix: render markdown images without streamdown wrapper controls (650851f) - fix: remove code size-based rendering limits (42171e7) - fix: remove contain-intrinsic-size that caused scroll jank (7942144) ## [v0.3.3] - 2026-03-24 - fix: resolve TypeScript errors in MarkdownRenderer for release (1abcdf1) - fix: exclude task tool from compact inline permission mode (5f39aff) - style: remove left accent line from TaskRenderer, restore badge status colors (1cb6044) - style: refine TaskRenderer visual hierarchy (263b74b) - fix: show tool description from input while running, not just after completion (b65d16e) - fix: reduce excessive right padding in expanded reasoning content (885668d) - fix: panel dropdown menu hover overflow — use inset padding with rounded items (02653bf) - fix: table copy button pinned outside scroll, mobile always-visible copy buttons (2cdef17) - style: unify tool output header height to h-8 (32px) (c566b1a) - style: unify message flow border-radius to a tighter 3-tier system (4a8a89f) - refactor: redesign markdown code blocks, tables, and inline code styles (11f6222) ## [v0.3.2] - 2026-03-24 - fix: align fullscreen diff test mocks with typed children (fdf1a74) - fix: restore release validation after fullscreen refactor (ef2d755) - fix: adjust outline index spacing for visual balance (fb98097) - refactor: unify fullscreen components into generic FullscreenViewer (9e6d8ed) - refactor: redesign settings UI with section-based layout and cleaner primitives (478351a) ## [v0.3.1] - 2026-03-23 - fix: unify chevron arrow direction - collapsed points right, expanded points down (3557e5a) - feat: compact inline permission - hide duplicate content when tool body already renders (63d571b) - refactor: redesign descriptive steps summary - merge categories, per-category errors, truncation (870f490) - fix: move diff stats next to title and remove exit code from descriptive steps (74e69c0) - fix: deferred permission unmount and multi-select question answer parsing (a8dc9bd) - fix: auto-expand readable tools that finish instantly in immersive mode (06dd4d4) ## [v0.3.0] - 2026-03-22 - fix: lint warnings, error tool diff stats, descriptive steps partial error coloring (ea53836) - feat: add diff stats summary to descriptive steps, fix write tool diff display (ce29807) - fix: immersive mode keeps non-readable tool groups collapsed even during execution (be61de2) - fix: resolve lint errors and remove unused eslint-disable directives (6037d19) - feat: add immersive mode with smart tool expand/collapse (0d4252d) - fix: skip QuestionRenderer when user dismissed or error (2029584) - feat: add QuestionRenderer with InlineQuestion-style read-only answered view (207f0c6) - fix: allow long bash commands to wrap in terminal view (8a7ddfd) - simplify: BashRenderer remove buttons, click command to copy, inline exit code (72186b5) - refactor: BashRenderer with fixed bottom bar, exit code, fullscreen, mobile-friendly buttons (cb7bb70) - fix: restore height limit and fullscreen button in compact mode (8f8689d) - feat: add BashRenderer with terminal style, Shiki highlighting, ANSI color support (856d74d) - feat: descriptive steps default collapsed, show output status on tool row (b25a0f2) - refactor: unify InlinePermission with tool output style, remove unused inline variant (ac510d7) - feat: add compact tool output mode (hide input, no collapse, no height limit) (1036133) - feat: add descriptive tool steps mode (d7e153f) - refactor: remove ambient tool mode and make inline requests opt-in (06034a2) ## [v0.2.10] - 2026-03-21 - feat: restore forked prompts in the composer (0792cf6) - fix: keep folder recents aligned with live updates (a0c8899) - fix: improve long duration formatting (62e6d94) ## [v0.2.9] - 2026-03-19 - fix: preserve custom audio when switching to builtin sounds (57119da) - fix: resolve all eslint warnings across codebase (4b31da3) - feat: add notification sound system with per-event configuration (b6019e2) - perf: defer offscreen chat message rendering (52d8ba8) - refactor: unify file and changes preview panels (9f315d8) ## [v0.2.8] - 2026-03-18 - fix: wrap panel tab label case blocks (d353b80) - feat: expand right panel resize range (3e67623) - feat: add tabbed session changes workspaces (ace0259) - feat: add tabbed file preview workspaces (ffad629) - fix: stabilize mobile terminal toolbar layout (1eb23b7) - feat: refine mobile terminal extra keys behavior (6e04254) - feat: add mobile extra keys toolbar for terminal (Termux-style) (2b185ac) - feat: show collapsed folder activity status (0bd1378) - feat: mark completed sessions as unread in recents (90cf8c3) ## [v0.2.7] - 2026-03-18 - feat: add markdown reasoning display mode (20fa476) - fix: avoid action overlap in folder recents on mobile (83b40b9) - feat: animate folder recents expansion (1b8ea13) - fix: preserve folder recents expansion across tab switches (058c289) - fix: limit streaming layout animation to bottom-follow mode (95c6aca) - fix: restore reasoning thinking shimmer transition (5c631c8) - feat: refine reasoning markdown presentation (71a012a) - fix(chat): extract formatDuration to shared formatUtils (c405092) - fix(chat): preserve aborted turn durations (13633fb) - feat: add diff gutter style setting (markers vs change bars) (4c5e7b8) - fix(i18n): improve permission dialog labels for request/rule clarity (e3730d5) - refactor: replace react-markdown with Streamdown for streaming-optimized markdown rendering (fcf3307) - refactor: extract useResponsiveMaxHeight hook for shared viewport-aware sizing (1993eb8) - fix: make ContentBlock maxHeight responsive to viewport size (b584071) - fix: resolve drag-to-reorder race condition causing stale closures (b08a763) ## [v0.2.6] - 2026-03-17 - refactor: redesign folder recents with drag-to-reorder and compact session items (88b4139) - fix: resolve bugs introduced by Python-to-Rust router migration (335b82e) - refactor: migrate gateway router from Python to Rust (290087f) - Feature: Add ability for router to read config from environment variables (bddc46b) - refactor: create new Rust project opencodeui-router (dd96377) - Update image previews in README.md (be84586) - fix: 服务器编辑/删除按钮始终可见 (0037a17) ## [v0.2.5] - 2026-03-16 - fix: 修复胶囊按钮和弹窗 header 图标与文字对齐 (a65e34e) - fix: 工具 icon 光晕不再被父容器裁切 (c946f19) - fix: 移动端设置 tab 选中态被 overflow 裁切 (027fcf9) - refactor: 设置界面优化 — 修复双滚动条、服务器编辑/删除确认 (ec75fad) - fix(i18n): 保留开发者工具常见英文术语不翻译 (f4a6022) - fix(i18n): 修正中文翻译质量 (f2bd269) - feat: add full i18n support with react-i18next (en + zh-CN) (bcd9850) ## [v0.2.4] - 2026-03-16 - fix: 会话级 Full Auto 恢复原有行为 — 只在当前所在页面的 session 生效,切走后不再自动放行 (e98bd4e) - fix: Full Auto 全局模式在 SSE 事件层拦截,确保非当前会话的权限请求也能自动放行 (1046837) - feat: Full Auto 三态模式 — 单击循环 off/会话级(黄)/全局(红),会话级只放行当前会话,全局放行所有,纯内存刷新即清 (db95fc7) - fix: 去掉 steps header 入场动画,保持与其他元素一致不做特殊处理 (1e725a5) - fix: 虚拟滚动横向滚动条修复 — 去掉 probe 元素改用 scrollWidth 历史最大值追踪,SplitDiffView proxy scrollbar 加 gutter 占位对齐 (beee631) ## [v0.2.3] - 2026-03-15 - fix: probe 最长行选取改用 monoDisplayWidth 估算渲染宽度,CJK/全角字符按双倍计,修复含中文注释时横向滚动不到位 (d1fb35a) - Revert "fix: probe 元素去掉 overflow:hidden 修复横向滚动不到位 — hidden 在两个方向截断内容导致 scrollWidth 偏小" (0e5353f) - fix: probe 元素去掉 overflow:hidden 修复横向滚动不到位 — hidden 在两个方向截断内容导致 scrollWidth 偏小 (c9788fc) - fix: lint warnings — ref 写入移入 useEffect,CodePreview 提取 tokens 避免 render 期间读 ref,修复 CodePreview 测试,清理多余依赖和 eslint-disable (96955f7) - fix: 消除胶囊⇄输入框切换闪烁 — FloatingActions 改为同一 DOM 切换定位避免 remount,胶囊去掉入场动画和防抖回归纯 UI (bc3cc0c) - fix: 移动端胶囊⇄输入框过渡优化 — 胶囊退场不延迟避免与输入框重叠闪烁,收起方向加 120ms 防抖消除滚动边界抖动 (4060e83) - refactor: 统一动画体系 — UndoStatus 去自带动画改由 PresenceItem 控制,CollapsedCapsule 从 CSS animate-in 换成 usePresence,PresenceItem 加 shrink-0 防挤压,清理 CSS 死代码 (5106ac0) - fix: probe 元素精确撑开 scrollWidth 修复横向滚动不到位,去掉 backdrop-blur (0f3b764) - Revert "fix: 代码预览/diff 横向滚动重构 — CodePreview/UnifiedDiffView 改原生滚动+sticky gutter,SplitDiffView 用 probe 元素精确撑宽,去掉 backdrop-blur" (9d12d72) - fix: 代码预览/diff 横向滚动重构 — CodePreview/UnifiedDiffView 改原生滚动+sticky gutter,SplitDiffView 用 probe 元素精确撑宽,去掉 backdrop-blur (9e37646) - feat: usePresence hook + 浮动按钮/权限框/提问框入场退场动画 — 命令式 animate() 零额外 bundle (fb8c59f) - fix: 消息流底部间距增大,为浮动按钮预留空间 (7f32fa2) - fix: 删除 Output 的 Running... 文字,Input/Output spinner 统一无文字对齐 (e8c409e) - fix: 单工具调用始终 compact 布局,消除流结束时的缩进跳变 — SmoothHeight 平滑过渡 + steps header 入场动画 (031502f) - fix: 代码预览和 diff 行号背景色统一 — gutter 去掉硬编码背景,继承父容器颜色 (9ef8223) ## [v0.2.2] - 2026-03-15 - ci: 恢复 codegen-units=1 减小产物体积,Rust cache 按平台隔离,精简工作流 (5018e3b) - chore: 清理 suppressAutoScroll 死代码 (d47085e) - fix: loadMore 不跳变 — 去掉 inner wrapper,消息反序直接作为 flex 子元素,prepend 时临时禁用 content-visibility (657e7a4) - refactor: 用 column-reverse 替代 ResizeObserver 实现原生 stick-to-bottom (591a8eb) - refactor: DiffView 复用 DiffViewer 组件,删除 150 行重复 diff 渲染代码 (e78d987) ## [v0.2.1] - 2026-03-14 - refactor: 用 ResizeObserver 替代 RAF 轮询实现流式自动滚动 (10d9e6a) - fix: 空消息不参与可见列表,消除 abort 时的滚动跳变 (9dbaa4d) ## [v0.2.0] - 2026-03-14 - feat: RECENTS 列表标记活跃 session 状态 (closes #25) (98ecce9) - fix: motion animate() 类型歧义 — 改用 motion/mini 单签名 API 解决 tsc -b TS2769 (7927bcf) - fix: 移除 ContentBlock loading skeleton 骨架条,避免输出短于占位时的负增长跳变 (f6db986) - feat: 消息入场生长动画 — 用户和助手消息统一从 height 0 平滑展开 (ce055fb) - fix: SmoothHeight 激活时锁定 outer 高度,修复动画不触发的问题 (e5f6cf5) - feat: 命令式 animate() 动画方案 — 高性能 + 零 React 组件开销 (4481aba) - fix: 修复流结束后闪烁回弹问题 (192944e) - fix: 修复流式文本不实时渲染的问题,移除 useSmoothStream (005b6bf) - refactor: 连续助手消息分组渲染,共享容器浑然一体 (cfadad0) - Revert "fix: 复制按钮始终占位,避免 text 到达时布局跳变" (1af197a) - fix: 移除未使用的 hasMoreHistory 解构变量,修复 TS6133 编译错误 (cf9419b) - fix: 复制按钮始终占位,避免 text 到达时布局跳变 (d51e7a8) - fix: 移除 'Beginning of conversation' 常驻提示,仅保留加载中 spinner (11484c6) ## [v0.1.18] - 2026-03-13 - ci: 加速 release 编译 — Rust 多线程 codegen + Android 双架构并行 (2398c54) - fix: FloatingActions 高度抖动、滚动按钮误显示 (466f4ea) - refactor: gutter/content 分离架构 + 水平滚动独立化 + FullscreenViewer 确定高度 (e327e59) - perf: streaming 渲染地基优化 — rAF 滚动、delta 批量化、布局稳定性 (f689910) ## [v0.1.17] - 2026-03-11 - fix: update CodePreview test mock to use useSyntaxHighlightRef (a10075f) - fix: move history loading indicator below top spacing so it's visible (4cfc71c) - fix: remove MAX_HISTORY_MESSAGES cap and restore loading UI (43d2273) - perf: reduce sidebar resize lag with CSS containment and DOM-only sidebar drag (63bc0c5) - fix: enable virtual scrolling in CodePreview by adding height constraint (43c9e3a) - fix: mobile input collapses when tapping FloatingActions buttons (a777334) - refactor: simplify loadMore pagination and remove prependedCount (8614df4) - refactor: rewrite messageStore and ChatArea, remove IndexedDB cache layer (eecdeaf) - refactor: remove loading spinners/skeletons and reduce scroll-related re-renders (eb7ebff) ## [v0.1.16] - 2026-03-11 - fix: scroll jitter after streaming ends caused by content-visibility height mismatch (765052a) - fix: stop auto-scroll jitter when user scrolls slightly during streaming (171a62e) ## [v0.1.15] - 2026-03-10 - fix: default revertSteps to 0 in FloatingActions (400fbb4) - chore: bump version to 0.1.15 (3f57df2) - fix: slow scroll during streaming causes jitter by pulling user back to bottom (860683e) - fix: isFocused stuck after toolbar button click prevents capsule collapse (aaaa727) - refactor: extract FloatingActions and CollapsedCapsule components from InputBox (273bd98) - refactor: extract useInputHistory hook from InputBox (d920da9) - refactor: extract useAttachmentRail hook from InputBox (2150d82) - refactor: extract useMobileCollapse hook from InputBox (c5fd39b) - fix: mobile input capsule state not resetting on session switch + blur collapsing on toolbar interaction (474938e) ## [v0.1.14] - 2026-03-10 - fix: session switch scroll + eliminate all content flicker during load (d823799) - fix: infinite history loading loop + stabilize observer + cleaner scroll-to-bottom (fe28777) - fix: smooth shimmer gradient + disable browser scroll restoration + multi-frame scroll-to-bottom (2144260) - fix: shimmer highlight sweep + remove unused visibleMessageIds state (ae767ca) - fix: outline click retract, prepend scroll preservation, cross-message merge continuation (e3ca11a) - fix: desktop label click navigation + mobile passive touch events in OutlineIndex (f35f758) - refactor: rewrite OutlineIndex with clean fisheye engine (1057c1c) - refactor: replace react-virtuoso with native scroll + content-visibility (2dc550a) - fix: correct shimmer animation direction (left-to-right) and use linear timing (16bc419) - fix: endsWithTool skips empty reasoning/text so cross-message tool merging works correctly (fdedbcd) - style: replace thinking breath-bar with shimmer text animation in italic mode (1bed06b) ## [v0.1.13] - 2026-03-10 - fix: SSE reconnect race conditions and stale timeout constant (7614d53) - test: add unit tests for HTTP module and Tauri environment detection (79b77af) - chore: eliminate all 8 lint warnings (0 errors, 0 warnings) (b312bb6) - fix: URL-encode query string values in buildQueryString (f6a434e) - fix: add AbortController-based timeout to HTTP request() (7962278) - fix: pending permission/question cache supports multiple requests per session (b421172) - fix: SSE parser now handles CRLF line endings and multi-line data correctly (d4553d5) - chore: remove dead storage key exports (WIDE_MODE, THEME_MODE, SIDEBAR_WIDTH, MODEL_VARIANT_PREFIX) (2901c99) - refactor: replace bare console.error with unified error handlers across 14 files (7a0c86c) - refactor: move theme/wideMode into themeStore, eliminate prop drilling through Sidebar and SettingsDialog (9c8b2d7) - refactor: split messageStore into store, types, and React hooks layers (caef036) - refactor: extract App.tsx hooks (useViewportHeight, useCancelHint, useCloseServiceDialog) (2dd70e3) - refactor: split SidePanel into focused sidebar components (673db54) - refactor: extract InputBox utility functions to input/inputUtils.ts (a1c0eee) - refactor: split SettingsDialog into focused component files (72f5ed4) - refactor: consolidate duplicated formatting functions into utils/formatUtils.ts (a981c89) - refactor: deduplicate diff content extraction (fad37d4) - refactor: extract ModalShell to unify modal overlay infrastructure (ae9f96e) - chore: remove unnecessary eslint-disable in logger.ts (118740c) - chore: clean up dependencies (0c50ac0) - refactor: add dev-only logger, replace bare console.log with logger.log (91fc303) - refactor: remove dead code files (test-shiki.ts, editorUtils.ts, toolUtils.ts) (3a3f37a) ## [v0.1.12] - 2026-03-09 - fix: preserve changelog ordering during release prep (039b906) - chore: ignore generated tauri assets in lint (071e2db) - fix: keep slash command composer responsive (42cdcf6) - fix: restore cross-platform Tauri app handling (6b84717) - perf: replace std default hasher with rapidhash (c6d5bdb) - refactor: reorganize the file structure of Tauri backend (fa5edf6) - perf: refactor OpenDirectoryState with papaya HashMap to reduce lock contention (6efd2a0) - perf: optimize ServiceState.child_pid with AtomicU32 to reduce Mutex contention (a42df0b) - perf: optimize SseState implementation - replace Mutex+Hashmap with papaya library to reduce contention and improve performance (f586a84) ## [v0.1.11] - 2026-03-08 - feat: add an optional folder-style Recent view while preserving the original session row details and per-folder ordering controls - feat: aggregate Active sessions across all saved projects instead of limiting the list to the currently selected directory ## [v0.1.10] - 2026-03-08 - fix: harden session message sync and failed sends (b788dce) - chore: add validated release preparation flow (010ffbe) - docs: consolidate v0.1.9 release notes (79113da) ## [v0.1.9] - 2026-03-08 - fix: restore message attachment expand animation (2975fe3) - fix: streamline composer attachment rail interactions (99db58a) - fix: constrain expanded attachments and preserve composer blank lines (dd2d7ba) - fix: harden composer attachment rail scrolling (b2bac29) ## [v0.1.7] - 2026-03-08 - fix: truncate tool description overflow in tool call row (3782c67) - fix: tighten mobile model menu and attachment width (60b34a2) - fix: preserve utf-8 across tauri stream chunks (1dcb15a) ## [v0.1.6] - 2026-03-07 - fix: restore tauri mobile file attachments (ffe3398) ## [v0.1.5] - 2026-03-07 - chore: keep tauri config formatted on release (48f6045) - fix: sync settings version with app release (b815d18) - chore: format release workflow (aef533b) - ci: add build validation workflow (491a544) - other: add "zed/\*" as ignored file (8f32b7d) ## [v0.1.4] - 2026-03-07 - fix: split frontend and api slash commands (bdb2e33) - fix: support clipboard fallback in insecure contexts (edf4dd0) - fix: align slash command descriptions (9d84a78) ## [v0.1.3] - 2026-03-07 - chore: restore release workflow formatting (73a41a4) - perf: split code preview from file explorer (b94bfc5) - perf: lazy load optional panels and split vendor chunks (9e0f7d6) - chore: add test baseline and clean lint debt (0d5f175) - chore: establish lint and formatting baseline (762786d) - fix: shorten input footer disclaimer copy (d691b7b) - chore: automate lockfile updates in release script (e678349) ## [v0.1.2] - 2026-03-07 - fix: scope active session state to the current directory (2503c6b) ## [v0.1.1] - 2026-03-07 Patch release focused on chat input polish, session list consistency, and smoother permission handling. ### Fixes - Restored collapsed input dock bottom spacing - Kept the session list in sync across directory filters and live updates - Returned gracefully to a new chat after deleting the currently open session - Aligned the todo popover with the input dock for desktop and mobile - Removed extra polling from permission/question flows and synced reply state immediately ### Improvements - Preloaded `@` root listing and `/` command data when entering a session to reduce first-open lag ## [v0.1.0] - 2026-03-05 First stable release of OpenCodeUI. ### Features - Drag-and-drop file attachment support (desktop & mobile) - Material file icons for file/folder display - File @mention from explorer sidebar - Context breakdown visualization in sidebar - Live retry status display with expand/collapse - Attachment detail viewer with copy/save functionality - Capability-based file attachment upload ### Fixes - Aligned capsule thinking chevron with italic/tool toggle arrows - Stabilized Tauri desktop file drag-and-drop handling - Fixed multiple task windows rendering the latest child session - Eliminated scroll jank from high-frequency re-renders - Fixed mobile overflow in project and diff headers - Fixed sidebar notification/session meta row overflow - Fixed attachment pill truncation and compact tool layout ### Improvements - Migrated all icons to lucide-react - Unified message part spacing and alignment - Added Docker support with material icons build step