本次更新集中补齐统一登录、可信执行证据链、长任务与多模型稳定性,并包含 Studio、CLI、TUI、远程连接和供应商兼容性修复。下面列出 2.20.0 到 2.20.1 的全部合并 PR 与贡献者。
What's Changed
- fix(pricing): bill Chinese public holidays as DeepSeek off-peak (studio) by @nanami-0713 in #10758
- fix(cli): keep fatal crash output of the CLI for the next start by @esengine in #10790
- fix(tui): history recall keeps the draft it replaced by @esengine in #10789
- fix(cli): an ambiguous --resume query names its candidates by @esengine in #10787
- fix(goaleval): read the verdict a thinking model leaves in reasoning by @esengine in #10785
- ci: pin every third-party action to a full-length commit SHA by @esengine in #10779
- feat(skill): add suppress_warnings on studio by @onionviolet in #10795
- fix(cli): point a missing model key at the credentials file, not the shell by @esengine in #10807
- feat(tui): add /version to studio by @onionviolet in #10793
- feat(control): fire the Notification hook for pending ask questions by @scrappylabsai in #10812
- feat(cli): start a fresh session when --continue finds nothing / 功能(cli):--continue 找不到会话时改为开启新会话 by @BuGlessRB in #10815
- feat(tui): drop the scrollbar and code gutter in native mouse mode / 功能(tui):原生鼠标模式下去除滚动条与代码块竖线 by @BuGlessRB in #10816
- fix(studio): build the Linux kernel and update helper without cgo by @esengine in #10810
- fix(session): save the transcript once a turn's prompt is admitted by @esengine in #10824
- fix(tui): fit glyphs a conhost CJK font draws double-width by @esengine in #10827
- fix(studio): relaunch the shell on X11 under Wayland when XWayland is there by @esengine in #10823
- fix(agent): retry once when a tool round ends in a reasoning-only stop by @esengine in #10820
- fix(tui): show dev for missing build version by @onionviolet in #10828
- ci(acknowledgments): open the weekly PR with a token that triggers CI by @esengine in #10841
- docs: port the retired-Wails wording cleanup to studio by @c020627 in #10838
- fix(hooks): run configured tool hooks in subagents, the planner, the guardian and reasonix review by @esengine in #10846
- fix(cli): reasonix review ignores tools and skills the reviewed checkout configures by @esengine in #10850
- feat(tools): multi_edit reports every failing step in one call by @esengine in #10854
- fix(studio): keep the receipt label on one line beside a long command by @esengine in #10855
- fix(studio): a running step moves on its own row, and step rows lose their blank column by @esengine in #10859
- fix(studio): re-read the explorer tree when the window is looked at again by @esengine in #10861
- fix(studio): put the protocol hint below its switcher in a service's detail by @esengine in #10867
- fix(tui): page the transcript with Shift+PgUp/PgDn and paste with Shift+Insert by @esengine in #10873
- ci: run the Windows Go legs without the test result cache by @esengine in #10878
- fix(control): a model switch waits for an in-flight /compact by @esengine in #10880
- feat(studio): reveal explorer entries in the system file manager by @esengine in #10862
- fix(termrender): wrap blockquote text to the width beside its rail by @esengine in #10876
- fix(studio): a progress meter redraws its line instead of growing it by @esengine in #10874
- feat(studio): a folding mode that opens file changes only by @esengine in #10875
- fix(studio): a single tilde reads as a range, not strikethrough by @esengine in #10885
- fix(studio): refresh an open file preview when the file changes on disk by @esengine in #10879
- fix(tui): honor ui.show_turn_usage in the terminal UI by @esengine in #10894
- fix(environment): attribute the reported shell to the bash tool by @esengine in #10895
- fix(tui): copying a selection leaves the code rail behind by @esengine in #10887
- fix(provider): retry a response-header timeout instead of ending the turn by @esengine in #10882
- fix(studio): bind F11 to full screen on Linux and Windows by @esengine in #10899
- fix(evidence): credit a workspace-relative citation of an absolute write by @esengine in #10896
- feat(coordinator): show the planner what the executor did since it last planned by @esengine in #10897
- fix(remote): identify a Windows host whatever its OpenSSH login shell by @esengine in #10906
- fix(serve): list a workspace link as what it resolves to by @esengine in #10881
- feat(config): expand the workspace root in MCP server entries by @esengine in #10903
- fix(config): load a project config under a cloud-drive mount by @esengine in #10900
- fix(web_fetch): dial an allowed address when a host also resolves to a blocked one by @esengine in #10908
- feat(fileref): reach an @ reference by its letters in order by @esengine in #10910
- feat(hook): bracket a foreground task sub-agent with SubagentStart/Stop by @esengine in #10905
- fix(agent): stop aborting turns at the client reasoning byte guard by @esengine in #10913
- test(shell): stop requiring a POSIX shell where the subject is not POSIX by @esengine in #10919
- fix(serve): a source edit reaches the conversation running on it by @esengine in #10915
- fix(acp): save prompt images and blob resources as attachments by @esengine in #10920
- fix(subagent): a bare model name stays on the parent's provider by @esengine in #10928
- fix(model): wait five minutes for a silent model before calling the stream dropped by @esengine in #10901
- fix(cli): approval flags mean the same thing on either side of run by @esengine in #10922
- fix(agent): mark loop-composed instructions as host-authored by @esengine in #10927
- fix(responses): close tool calls the completed response lists by @esengine in #10923
- fix(tools): bound todo_write's level instead of an integer enum by @esengine in #10931
- fix(tui): honour a user-level [statusline].command in the terminal footer by @esengine in #10936
- feat(billing): read OpenRouter's credits endpoint as a wallet by @esengine in #10935
- fix(provider): ignore an endpoint override that only repeats base_url by @esengine in #10937
- fix(encoding): a file is GB18030 only if a write can restore its bytes by @esengine in #10889
- fix(studio): auto-refresh open Markdown previews by @KHG420 in #10829
- chore: drop the committed workgroupassay binary by @esengine in #10939
- fix(serve): give a new provider a key slot nothing else holds by @esengine in #10932
- fix(workspace): keep host-written .reasonix state out of git status by @esengine in #10941
- feat(studio): recover a blank window by reload key or on renderer crash by @esengine in #10940
- feat(acp,serve): expose explicit Goal pause and resume by @esengine in #10943
- test: stop the restart-review and steer tests racing Windows fsync latency by @esengine in #10933
- fix(encoding): read uncut UTF-8 that ends in half a character as UTF-8 by @esengine in #10947
- fix(plugin): decode an MCP server's code-page stderr before reporting it by @esengine in #10911
- fix(model): send x-opencode-session to OpenCode Go by @esengine in #10954
- fix(studio): let a typed "other" answer be given from the keyboard by @esengine in #10916
- fix(delegation): steer write_paths toward file paths over directories by @esengine in #10956
- feat(tui): open an answer's thinking with a click or Ctrl+O in full screen by @esengine in #10917
- fix(studio): name what a copy button copies in its tooltip and text by @esengine in #10926
- fix(studio): show slash completion loading state by @KHG420 in #10869
- feat(theme): let a pack colour bold transcript text by @esengine in #10944
- fix(ask): let a single-choice pick carry a typed note by @esengine in #10958
- feat(studio): hide the wallet balance and session cost behind an eye toggle by @esengine in #10959
- feat(studio): Delete on a focused sidebar session asks to delete it by @esengine in #10960
- fix(tools): attribute out-of-workspace writes to the write scope, not a sandbox by @esengine in #10907
- docs(design): trusted execution layer by @esengine in #10966
- fix(studio): verify TypeSafe models through System One by @KHG420 in #10952
- feat(trusted-state): seal every turn's shadow evidence bundle by @esengine in #10969
- feat(observation): snapshot the workspace around every turn by @esengine in #10971
- feat(verdict): decide each sealed turn from host evidence alone by @esengine in #10974
- fix(studio): show the folder list as loading until the first tree read settles by @esengine in #10963
- fix(studio): open account approval in system browser by @esengine in #10976
New Contributors
- @scrappylabsai made their first contribution in #10812
Full Changelog: studio-v2.20.0...studio-v2.20.1
macOS 已用 Developer ID 签名并公证,打开时不需要清除隔离属性。Windows 包未签名,SmartScreen 会告警:选「更多信息」,再选「仍要运行」。Linux 从 .deb 安装。
三个平台都能自更新:Linux 走自己的包,Windows 运行下一个安装器,macOS 替换自身 bundle。