What's Changed
- feat: 同一项目的并行会话隔离在各自的 git worktree 中 by @onerentop in #1604
- fix(markdown-table): show overflow scrollbars in preview by @vastsa in #1647
- fix(desktop): open session HTML artifacts from chat and BrowserPreview by @AR307 in #1650
- fix(plugins): notify the renderer after the startup plugin restore by @mai-ming in #1651
- fix(deps): patch vulnerable dependencies by @vastsa in #1656
- fix(plugins): resolve automatic JSX against the host React runtime by @zwqjoy in #1644
- fix(host-runtime): harden workspace diff Git commands by @vastsa in #1658
- fix(host-runtime): disable Git textconv for workspace diffs by @vastsa in #1660
- fix(deps): enforce patched DOMPurify floor by @vastsa in #1659
- fix(agent-runtime): stamp the session id on self-hosted endpoints by @arsonist-g in #1640
- fix(desktop): tidy worktree setup menu by @vastsa in #1662
- fix(images): prevent oversized tool images from breaking sessions by @vastsa in #1663
- fix(desktop): preserve session reading positions across pane eviction by @new-Beginner in #1665
- fix(projects): restore archived projects on activation by @vastsa in #1666
- [Bug] 修复双屏下最大化状态按 F11 全屏导致白屏(最大化/全屏状态互斥) by @anjia0532 in #1667
- fix(agent-runtime): keep restored tool calls on their assistant across system rows by @teshnizi in #1670
- fix(transcripts): tolerate torn non-UTF-8 lines during reads by @Totopo27 in #1668
- fix(transcript): merge the store read after the transcript reload in deleteMessage by @SeanLiu326 in #1675
- fix(desktop): navigate question toasts to their originating chat by @new-Beginner in #1673
- fix(storage): migrate first-run profiles, physical archives, and Windows links by @AR307 in #1671
- fix(providers): ask a plan endpoint for its model list the way it documents by @chengzhi-c in #1680
- fix(session): one rewrite boundary for replacement and revision activation by @SeanLiu326 in #1674
- fix(host-core): keep PowerShell output and native exit codes intact by @AR307 in #1685
- fix(storage): preserve link kinds through Windows migration by @SeanLiu326 in #1688
- fix(providers): probe the resolved endpoint in the connection test by @SeanLiu326 in #1690
- 修复(window):任务栏还原最大化窗口后盖住任务栏(补充 #1655) by @anjia0532 in #1672
- fix(config-sync): strip the Windows extended-length prefix before mapping by @chengzhi-c in #1693
- fix(sessions): exclude automation sessions from empty-slot reuse by @Totopo27 in #1695
- fix(storage): recover missing default profile before startup by @vastsa in #1696
- fix(settings): make market failures retryable by @vastsa in #1697
- fix(provider): suppress DeepSeek reasoning effort by @vastsa in #1701
- fix(host-core): isolate Windows Bash runner jobs by @vastsa in #1703
- feat(composer): 按示例优化任务清单折叠样式 by @vastsa in #1706
- feat(tools): background Bash tasks that outlive the turn by @algerkong in #1683
- feat(composer): show each @ file row's full relative path by @kev17in in #1649
- feat(chat): keep Bash rows visible and add Show thinking toggle by @Tioit-Wang in #1704
- feat(sidebar): add contextual copy submenus by @vastsa in #1710
- feat(sidebar): mark projects with running work on the group header by @Tioit-Wang in #1709
- chore(release): prepare 0.21.0-beta.1 by @vastsa in #1712
- feat(lifecycle): theme quit and close-behavior confirms by @vastsa in #1714
- fix(composer): keep model rows on one line and truncate long names by @vastsa in #1717
- feat(sidebar): show last reply dates in project sessions by @vastsa in #1718
- feat(plugins): add scoped HTML preview API for Browser by @vastsa in #1719
- fix(chat): add HTML open-with destinations by @vastsa in #1713
- fix(host-core): request Windows runner breakaway only when the job allows it by @chengzhi-c in #1716
- fix(todo-dock): clarify checklist disclosure control by @vastsa in #1723
- feat(plugins): add ratings and reviews with installed card grid by @Tioit-Wang in #1727
- feat(todo-dock): sweep the working step and drop per-row chrome by @Tioit-Wang in #1729
- chore(release): prepare 0.21.0-beta.3 by @Tioit-Wang in #1730
- fix(sidebar): refine session rows and todo disclosure by @vastsa in #1734
- feat(composer): open the mode menu instead of cycling the chip by @vastsa in #1737
- fix(sessions): match placeholder session titles case-insensitively by @Totopo27 in #1725
- fix(work-panel): lend width to a reopened sidebar instead of storing it by @AR307 in #1735
- fix(composer): keep finished background tasks out of the composer bar by @vastsa in #1742
- feat(plugins): follow the selected session and reveal work-panel views by @vastsa in #1745
- fix(sidebar): default running activity to count badge by @vastsa in #1749
- feat(plugins): daily review line on marketplace cards by @Tioit-Wang in #1748
- fix(plugins): allow relative paths inside a drive-root workspace by @Frank-zhu2000 in #1739
- fix(sessions): recognize the German, French and Spanish placeholder titles by @SeanLiu326 in #1757
- fix(agent-runtime): discover native sessions in configured sessionDir by @Frank-zhu2000 in #1764
- fix(providers): handle optional client certificate requests by @yixinforu in #1724
- fix(importers): discover Pi auth-only model providers by @IswordSun in #1761
- fix(plugins): keep session follow alive across renderer reloads and inside scope by @SeanLiu326 in #1756
- fix(agent-runtime): route OpenCode Go Claude through Anthropic by @vastsa in #1772
- fix(agent-runtime): retry after compaction without failed assistant by @vastsa in #1773
- fix(work-panel): keep active tab close action visible by @vastsa in #1775
- chore(deps): upgrade Pi kernel packages from 1.1.0 to 1.3.0 by @vastsa in #1786
- feat(macos): make the translucent window surface an opt-in setting by @vastsa in #1788
- fix(macos): keep the translucent window surface on by default by @vastsa in #1790
- feat(plugins): offer one line of composer suggestion from a plugin by @Tioit-Wang in #1785
- feat(transcript): unify turn folding and command preferences by @Tioit-Wang in #1793
- feat(transcript): add display modes and thinking shimmer by @Tioit-Wang in #1798
- fix(composer): search past a truncated file index for @ mentions by @zszz3 in #1787
- fix(chat): open worktree references from the branch copy by @zszz3 in #1780
- fix(transcript): let an unpinned bookmark own the pane reveal by @zszz3 in #1783
- fix(mcp): fail loudly when a server has no DCR endpoint by @muzimu217 in #1791
- fix(e2e): escalate to SIGKILL when the certificate probe hangs by @muzimu217 in #1792
- feat(composer): toggle background task output from the whole row by @vastsa in #1804
- fix(transcript): center running marker by @Tioit-Wang in #1811
- chore(release): v0.21.0-beta.6 by @Tioit-Wang in #1813
- feat(transcript): flatten edit rows and restore group hierarchy by @Tioit-Wang in #1814
- fix(settings): size segmented controls to their content by @vastsa in #1816
- fix(runtime): preserve repeated tool executions and repair Gemini Live setup by @Seraph-x in #1819
- fix(desktop): keep toasts clear of the work panel by @AuhNijGnahz in #1823
- fix(window): 修复窗口恢复后残留置顶导致的窗口遮挡问题 by @xuesecanmeng in #1810
- fix(transcript): keep activity details visible after turns settle by @SunkenCost in #1808
- fix(chat): parse positioned and ambiguous file references safely by @SunkenCost in #1807
- fix(transcript): fall back to the bookmarked offset when its row is unmounted by @muzimu217 in #1800
- fix(agent-runtime): skip expired OS trust anchors when merging the CA set by @ls2023wsw in #1799
- fix(runtime): size the output cap from the folded request transcript by @spacker-343 in #1797
- fix(asktool): keep card drafts across session switches by @liubai0106 in #1776
- fix(tests): keep the launch-resolver and sessionDir suites green on unprivileged Windows by @SeanLiu326 in #1803
- fix(persistence): drop empty assistant rows regardless of status by @liubai0106 in #1778
- fix(settings): keep the last successful market list when a query fails by @muzimu217 in #1751
- fix(work-panel): keep the active tab's close button inside the strip by @muzimu217 in #1769
- fix(agent-runtime): stop stuck tools without hiding side effects by @vastsa in #1829
- fix(agent-runtime): stop waiting for tools host-core cannot cancel by @liubai0106 in #1779
- fix(ci): realign stale store and adapter contracts by @Tioit-Wang in #1832
- feat(chat): show per-turn token usage capsule by @Tioit-Wang in #1818
- feat(chat): rework the top-level turn fold header by @Tioit-Wang in #1817
- feat(chat): show project breadcrumb and inline title editing by @Tioit-Wang in #1831
- chore(release): v0.21.0-beta.7 by @Tioit-Wang in #1835
- fix(agent-runtime): emit extension context before every request by @zszz3 in #1840
- fix(composer): prevent stale submits from restoring old drafts by @vastsa in #1841
- fix(chat): open turn usage popover upward by @Tioit-Wang in #1842
- fix(browser): keep side-panel pages available in background sessions by @vastsa in #1843
- feat(chat): render inline generative UI visualizations by @zszz3 in #1826
- fix: preserve explicit reasoning effort overrides for custom gateways by @Seraph-x in #1846
- feat(chat): scope background tasks to their session and share one dock with todo by @Tioit-Wang in #1844
- chore(release): v0.21.0-beta.8 by @Tioit-Wang in #1854
- fix(transcript): automatically continue restored reading ranges by @new-Beginner in #1850
- fix(provider): send reasoning_effort to official DeepSeek endpoints by @zszz3 in #1849
- fix(chat): 切回缓存会话时保留阅读页,修复误显示【加载后续消息】(#1851) by @zszz3 in #1852
- fix(transcript): 修复思考与轮次的自动折叠及问题徽标排版 by @vastsa in #1859
- fix(composer): keep the task dock collapse across session switches by @vastsa in #1860
- chore(release): v0.21.0 by @vastsa in #1862
New Contributors
- @mai-ming made their first contribution in #1651
- @zwqjoy made their first contribution in #1644
- @arsonist-g made their first contribution in #1640
- @anjia0532 made their first contribution in #1667
- @teshnizi made their first contribution in #1670
- @algerkong made their first contribution in #1683
- @yixinforu made their first contribution in #1724
- @IswordSun made their first contribution in #1761
- @Seraph-x made their first contribution in #1819
- @xuesecanmeng made their first contribution in #1810
- @ls2023wsw made their first contribution in #1799
- @spacker-343 made their first contribution in #1797
- @liubai0106 made their first contribution in #1776
Full Changelog: v0.20.1...v0.21.0