发布日期: 2026-08-29
版本号: v1.21.1

[1.21.1] 版本更新主要包含以下改进:新增土耳其语界面;增强 Git/Worktrees 功能,支持会话移动、未提交变更处理及变更保护;改进 /btw 侧问处理逻辑;优化聊天滚动体验,修复多种场景下的崩溃与冻结问题;提升渲染能力,包括 Markdown 渲染、代码块处理及视觉效果;增强聊天操作,如工具卡片快速打开、模型选择提示、消息复制保留格式等;Composer 粘贴大文本时可转为文件附件;修复模型响应丢失与计时器问题;改进使用统计显示;支持多模型并行运行;优化文件预览与搜索功能;改进面板右键操作;修复计划保存与加载问题;优化浏览器面板与侧边栏显示;增强移动端会话管理;改进设置项持久化与界面;优化小模型请求处理;改进项目文件夹选择与符号链接处理;修复设置/提供者凭据显示问题;改进 Git 状态面板与分支操作;优化更新流程与错误提示;修复桌面端崩溃恢复与启动问题;改进 Windows 下的进程管理;增强服务器配置兼容性;优化 Web/PWA 通知与应用命名;修复 VS Code 扩展启动行为;支持自定义主题加载;新增调试面板请求监控;提升会话切换可靠性与启动清理效率。所有改进均来自社区贡献者。

更新内容 (中文)

[1.21.1] - 2026-08-29

  • 土耳其语界面: OpenChamber 现已支持土耳其语界面(感谢 @fitzgpt)。
  • Git/工作树: 会话菜单现在可以将一个空闲会话及其子会话移动到现有工作树中。当目标列表打开时,OpenChamber 会发现其他地方创建的工作树,并在转移未提交的更改前询问用户,如果移动中途失败,会安全保留这些更改(感谢 @mattv8)。
  • /btw 辅助问题: btw 会话现在会回答辅助问题,而不是继续执行父会话的计划,并在最后一个已完成的回合处分叉,因此仍处于流式传输中的回复永远不会被继承(感谢 @pocharlies)。
  • 聊天滚动: 当关闭“在流式传输时跟随新内容”时,从对话中间发送消息不再跳转到新消息;中键平移或 Shift+空格键可停止自动跟随(与滚轮效果相同),并且在工具输出框内向上滚动滚轮会滚动该框,而不是滚动聊天(感谢 @pascalandr);在提示框中使用 PageUp/PageDown 键不再移动整个窗口并隐藏标题栏。
  • 聊天不再因以下情况崩溃或冻结: 非常大的工具结果(在渲染前已进行限制)(感谢 @JSap0914);包含 JavaScript 模板字符串的代码块(这可能会导致语法高亮器陷入无限回溯)(感谢 @makeittech);头部被截断的差异(diff)(感谢 @pascalandr);以及包含 Windows 换行符的草稿或撤回的消息(每次访问时都会抛出“选择点超出文档范围”的错误)(感谢 @yulia-ivashko)。
  • 聊天: 页面刷新或第二个客户端连接延迟后,会话不再显得冻结——待处理的权限和问题卡片会重新出现(感谢 @yangyaofei);在关闭代理问题并发送新任务后,会话也不再显得冻结(感谢 @bashrusakh)。
  • 工作状态: 会话成本现在包括其子代理的花费,在上下文计量器下方细分显示,并按子代理显示(感谢 @igorvelho);撤销或重做父会话会使其子代理保持在历史记录的同一点(感谢 @alexandrereyes)。
  • 聊天渲染: 问题提示现在渲染 Markdown(感谢 @pascalandr);紧邻 CJK 或全角标点的裸链接不再吸收该标点(感谢 @gaojunran);内联代码和芯片在所有主题下均清晰可读(感谢 @difagume);已完成的推理块会完整显示,而不是像仍在思考时那样重放,文本选择菜单会保持在视口内,并且用户消息的固定标题不再在回复的前几行淡出(感谢 @makeittech)。
  • 聊天操作: 带有文件路径的工具卡片新增快速打开按钮(感谢 @robertoberto);未选择模型时发送会解释缺少什么(感谢 @rvaldemar);/init 在对话开始后仍保留在斜杠命令自动补全列表中(感谢 @Dawnfz-Lenfeng);复制消息会保留 Markdown 段落、列表和代码块的间距(感谢 @ChangeHow);在字段中输入时忽略 Ctrl/Cmd+数字键,并且手动选择的模型在 Build 和 Plan 之间切换时会保留(感谢 @makeittech)。
  • 编写器: 粘贴大块文本(约 2,000 字符或 25 行)现在会提供将其作为 pasted-context-N.txt 文件附加的选项,而不是充斥输入框,并在光标处留下 [pasted-context-N.txt] 引用;设置 → 聊天可以使其始终附加或始终内联粘贴(感谢 @makeittech)。
  • 聊天: 模型在提问之前写下的文本会立即显示,而不是在活动组中隐藏直到该回合结束(感谢 @makeittech)。
  • 聊天: 当 OpenCode 的回合结束信号丢失时,工作旋转指示器现在会在约一秒内清除,而不是长达十秒(感谢 @makeittech)。
  • 编写器: 输入三个反引号会将光标留在完成的代码围栏内,空输入会保留可见光标,并且平台自动更正行为得以保留(感谢 @franzudev、@TTTPOB 和 @IbrahimKhan12)。
  • 使用量: GitHub Copilot 现在显示一个单一的 AI Credits 窗口,与 Copilot 基于代币的配额匹配,取代了旧的聊天请求和补全窗口(感谢 @jakoss)。
  • 多运行: 组现在可以包含超过五个模型,包括为每个模型创建独立工作树的隔离运行(感谢 @tomzx)。
  • 文件: Markdown 预览现在具有文档内搜索(Ctrl/Cmd+F),支持高亮显示和上一个/下一个,并且在 macOS 触控板上,单击侧边栏树中的文件夹或文件现在可以可靠地打开(之前微小的指针移动可能会导致点击被忽略)(感谢 @makeittech);文件上限从 5,000 行提高到 20,000 行,超过此限制的文件将以完整文件预览打开,而不是被拒绝(感谢 @gaojunran)。
  • 面板: 右键单击编辑器、聊天或浏览器标签页可关闭它、关闭其他、关闭左侧/右侧或关闭所有(感谢 @adavila0703)。
  • 计划: 保存的计划现在可以再次打开其内容,用于聊天、项目路径外的工作树以及重新加载后恢复的标签页,并且在关闭前一刻进行的编辑不再丢失。
  • 浏览器: 当代理在浏览器面板隐藏时捕获页面,现在会先显示面板,而不是导致捕获失败。
  • 侧边栏: 最近行在 Web 和桌面端显示紧凑的时间戳,并且待处理的权限/问题徽章不再被悬停操作覆盖(感谢 @makeittech)。
  • 移动端: 聊天——不属于任何项目的会话——现在显示在项目列表上方的会话表中;打开已经打开的代理会切换到其编辑器,而不是创建副本(感谢 @bashrusakh);Android 连接可以信任用户安装的证书颁发机构,例如本地代理的证书(感谢 @Silvenga)。
  • 设置: 编辑器字体大小在重启后得以保留(感谢 @pascalandr);在关闭窗口前一刻进行的更改会被保存(感谢 @makeittech);数字字段和选择框在大字体大小下不再被裁剪(感谢 @makeittech);刷新 GitHub 帐户状态不再中断页面(感谢 @floze-the-genius);Cloudflare Tunnel 下载链接已修复(感谢 @AyoubAchour);Windows 技能路径现在被正确分类,因此禁用和重复的技能按预期隐藏(感谢 @Ttungx)。
  • 小模型: 请求会发送提供商配置的头信息,例如 API 网关订阅密钥(感谢 @dmitrii-galantsev);配置的 Anthropic 端点在使用时不再重复 /v1,并且没有推理能力的 Google 模型不再接收思考选项(感谢 @mpeter 和 @IngTian)。
  • 项目: 文件夹选择器现在可以一次选择多个目录并一起添加(感谢 @herjarsa)。
  • 文件: 通过工作区内符号链接或项目根目录本身是符号链接而访问的文件现在可以再次打开,而不是因访问错误而失败(感谢 @herjarsa)。
  • 设置/提供商: 保存 API 密钥或登录后,提供商不再显示“凭证缺失”并隐藏其模型,直到你切换出去再切换回来(感谢 @herjarsa)。
  • 项目: 文件夹选择器现在可以输入已经是一个项目的目录并从那里浏览(感谢 @weixiang1862),并且在路径包含非 ASCII 字符(例如 Masaüstü)的项目中,发送、分叉和图像附件功能正常工作(感谢 @fitzgpt)。
  • Git: 状态面板在检出、分支、储藏、合并、变基或重置后会从真实仓库状态刷新,并且从未获取的远程分支会出现在分支列表中(感谢 @makeittech);分支差异范围现在不再基于错误的基础比较从当前分支创建的分支(感谢 @gaojunran);在分支选择器中选取 origin/main 会检出本地分支,而不是分离的 HEAD(感谢 @yulia-ivashko);分支搜索现在会隐藏不匹配的分支(感谢 @bashrusakh)。
  • 更新: “更新 OpenCode”现在不再因简单的“Bad Request”而失败——OpenChamber 会命名要安装的版本,并在被拒绝时显示 OpenCode 的原因——桌面端的“重启以更新”按钮现在会显示安装失败的原因(包括未签名的本地构建),并保持可用以供重试(感谢 @mdatsev 和 @yulia-ivashko)。
  • 桌面端: 崩溃的渲染器窗口现在会自动恢复,显示可见的故障页面,而不是在重复崩溃后进入重新加载循环(感谢 @wqpan);缓慢或交互式的 shell 启动文件不再在 OpenChamber 查找 OpenCode 时延迟启动——每次探测在五秒后放弃,这解决了从 Dock 启动时 Homebrew OpenCode 看似未被检测到的问题(感谢 @mskadu)。
  • Windows: 受管理的 OpenCode 重启现在会清理孤立的监听器和进程树,关闭应用程序会停止 OpenCode,并且计划启动不再因任务计划程序的命令长度限制而失败(感谢 @sergiofspedro、@a0000001 和 @HAHH9527)。
  • 服务器:settings.json 清除其自身的覆盖时,来自环境的 OPENCODE_BINARY 不再被丢弃(感谢 @bashrusakh);通过 OPENCODE_HOST 进行恢复会保留配置的主机和端口(感谢 @colinmollenhour);openchamber connect-url 在桌面应用运行时不再有破坏 settings.json 的风险,这可能会解除所有设备的配对(感谢 @shijie152)。
  • Web/PWA: 通知点击会聚焦现有窗口,并且已安装的应用使用更简短的“OpenChamber”名称(感谢 @bketelsen 和 @greghaynes)。
  • VS Code: 扩展现在在当前工作区文件夹中启动,而不是从存储中恢复的文件夹(感谢 @makeittech)。
  • 主题: 通过符号链接加载的自定义主题现在可以工作(感谢 @divyam234)。
  • 调试: 调试面板(Ctrl/Cmd+Shift+D)新增“请求”选项卡,显示正在进行的请求及其在过去五分钟内的存在时间(感谢 @tomzx)。
  • 可靠性: 快速切换会话不再保存错误的滚动位置,并且日志不再充满非 Git 文件夹的工作树警告(感谢 @herjarsa);Windows 上启动时对残留进程的清理不再阻止服务器启动(感谢 @bashrusakh)。

更新内容 (原始)

[1.21.1] - 2026-08-29

  • Turkish interface: OpenChamber can now be used in Turkish (thanks to @fitzgpt).
  • Git/Worktrees: session menus can now move an idle session and its sub-sessions into an existing worktree. OpenChamber discovers worktrees created elsewhere when the target list opens, asks before transferring uncommitted changes, and keeps those changes safe if a move fails partway (thanks to @mattv8).
  • /btw side questions: a btw session now answers the side question instead of carrying on with the parent’s plan, and forks at the last completed turn so a reply that is still streaming is never inherited (thanks to @pocharlies).
  • Chat scrolling: with “Follow new content while streaming” off, sending from the middle of a conversation no longer jumps to the new message; a middle-button pan or Shift+Space stops auto-follow like the wheel does, and an upward wheel inside a tool output box scrolls that box instead of the chat (thanks to @pascalandr); PageUp/PageDown in the prompt box no longer shifts the whole window up and hides the title bar.
  • Chat no longer crashes or freezes on: very large tool results, which are capped before rendering (thanks to @JSap0914); a code block with JavaScript template strings, which could send the syntax highlighter into endless backtracking (thanks to @makeittech); a diff with a truncated header (thanks to @pascalandr); and a draft or recalled message containing Windows line endings, which threw “Selection points outside of document” on every visit (thanks to @yulia-ivashko).
  • Chat: a session no longer looks frozen after a page reload or a late second client — pending permission and question cards come back (thanks to @yangyaofei) — nor after dismissing the agent’s questions and sending a new task (thanks to @bashrusakh).
  • Work status: the session cost now includes what its subagents spent, split under the context meter and shown per subagent (thanks to @igorvelho), and undoing or redoing a parent session keeps its subagents at the same point in history (thanks to @alexandrereyes).
  • Chat rendering: question prompts render Markdown (thanks to @pascalandr); bare links next to CJK or full-width punctuation no longer absorb it (thanks to @gaojunran); inline code and chips are readable in every theme (thanks to @difagume); a completed reasoning block shows in full instead of replaying as if still thinking, the text-selection menu stays inside the viewport, and the sticky user-message header no longer fades over the first lines of the reply (thanks to @makeittech).
  • Chat actions: tool cards with a file path get a quick-open button (thanks to @robertoberto); sending without a selected model explains what is missing (thanks to @rvaldemar); /init stays in slash-command autocomplete after the conversation starts (thanks to @Dawnfz-Lenfeng); copying a message keeps Markdown paragraph, list, and code-block spacing (thanks to @ChangeHow); Ctrl/Cmd+digit is ignored while typing in a field, and a manually chosen model survives switching between Build and Plan (thanks to @makeittech).
  • Composer: pasting a large block of text (about 2,000 characters or 25 lines) now offers to attach it as a pasted-context-N.txt file instead of flooding the input, with a [pasted-context-N.txt] reference left at the caret; Settings → Chat can make it always attach or always paste inline (thanks to @makeittech).
  • Chat: the text the model writes before asking a question is shown right away instead of staying hidden in the Activity group until the turn ends (thanks to @makeittech).
  • Chat: when the turn-ending signal from OpenCode is lost, the working spinner now clears within about a second instead of up to ten (thanks to @makeittech).
  • Composer: typing three backticks leaves the caret inside the completed code fence, empty inputs keep a visible caret, and platform autocorrect behavior is preserved (thanks to @franzudev, @TTTPOB, and @IbrahimKhan12).
  • Usage: GitHub Copilot now shows a single AI Credits window, matching Copilot’s token-based quota, in place of the old Chat Requests and Completions windows (thanks to @jakoss).
  • Multi-Run: groups can now contain more than five models, including isolated runs that create one worktree per model (thanks to @tomzx).
  • Files: the Markdown preview has an in-document search (Ctrl/Cmd+F) with highlighting and next/previous, and clicking a folder or file in the sidebar tree opens it reliably on macOS trackpads, where a tiny pointer move used to swallow the click (thanks to @makeittech); files up to 20,000 lines open in the full-file preview instead of being rejected at 5,000 (thanks to @gaojunran).
  • Panels: right-click an editor, chat, or browser tab to close it, close others, close left/right, or close all (thanks to @adavila0703).
  • Plans: saved plans open with their content again for chats, worktrees outside the project path, and tabs restored after a reload, and an edit made right before closing is no longer lost.
  • Browser: when the agent captures a page while the browser panel is hidden, the panel is revealed first instead of the capture failing.
  • Sidebar: Recent rows show a compact timestamp on web and desktop, and pending permission/question badges are no longer covered by the hover actions (thanks to @makeittech).
  • Mobile: Chats — sessions that belong to no project — now appear in the sessions sheet above the project list; opening an already-open agent switches to its editor instead of duplicating it (thanks to @bashrusakh); Android connections can trust user-installed certificate authorities, such as a local proxy’s (thanks to @Silvenga).
  • Settings: the editor font size survives a restart (thanks to @pascalandr); a change made right before closing the window is saved (thanks to @makeittech); number fields and selects no longer clip at large font sizes (thanks to @makeittech); refreshing GitHub account state no longer interrupts the page (thanks to @floze-the-genius); the Cloudflare Tunnel download link is fixed (thanks to @AyoubAchour); Windows skill paths are classified correctly, so disabled and duplicate skills are hidden as intended (thanks to @Ttungx).
  • Small model: requests send the provider’s configured headers, such as an API-gateway subscription key (thanks to @dmitrii-galantsev); a configured Anthropic endpoint is used without a doubled /v1, and Google models without reasoning no longer receive a thinking option (thanks to @mpeter and @IngTian).
  • Projects: the folder picker can select several directories at once and add them together (thanks to @herjarsa).
  • Files: files reached through a symlink inside the workspace, or under a project root that is itself a symlink, open again instead of failing with an access error (thanks to @herjarsa).
  • Settings/Providers: after saving an API key or signing in, the provider no longer shows “Credentials missing” with its models hidden until you switch away and back (thanks to @herjarsa).
  • Projects: the folder picker can enter a directory that is already a project to browse from there (thanks to @weixiang1862), and sending, forking, and image attachments work in projects whose path has non-ASCII characters, such as Masaüstü (thanks to @fitzgpt).
  • Git: the status panel refreshes from real repository state after checkout, branch, stash, merge, rebase, or reset, and remote branches that were never fetched appear in branch lists (thanks to @makeittech); the Branch diff scope no longer compares against the wrong base for branches created from the current branch (thanks to @gaojunran); picking origin/main in the branch selector checks out the local branch instead of a detached HEAD (thanks to @yulia-ivashko); branch search hides non-matching branches (thanks to @bashrusakh).
  • Updates: “Update OpenCode” no longer fails with a bare “Bad Request” — OpenChamber names the release to install and shows OpenCode’s reason when refused — and the desktop “Restart to Update” button shows why an install failed, including an unsigned local build, and stays available to retry (thanks to @mdatsev and @yulia-ivashko).
  • Desktop: a crashed renderer window recovers automatically, with a visible failure page instead of a reload loop after repeated crashes (thanks to @wqpan); a slow or interactive shell startup file no longer stalls startup while OpenChamber looks for OpenCode — each probe gives up after five seconds, which is what left a Homebrew OpenCode looking undetected from a Dock launch (thanks to @mskadu).
  • Windows: managed OpenCode restarts clean up orphaned listeners and process trees, closing the app stops OpenCode, and scheduled startup no longer fails on Task Scheduler’s command length limit (thanks to @sergiofspedro, @a0000001, and @HAHH9527).
  • Server: an OPENCODE_BINARY from the environment is no longer discarded when settings.json clears its own override (thanks to @bashrusakh); recovery through OPENCODE_HOST keeps the configured host and port (thanks to @colinmollenhour); openchamber connect-url no longer risks tearing settings.json while the desktop app runs, which could unpair every device (thanks to @shijie152).
  • Web/PWA: notification clicks focus an existing window, and the installed app uses the shorter “OpenChamber” name (thanks to @bketelsen and @greghaynes).
  • VS Code: the extension starts in the current workspace folder instead of one restored from storage (thanks to @makeittech).
  • Themes: custom themes loaded through symlinks now work (thanks to @divyam234).
  • Debug: the debug panel (Ctrl/Cmd+Shift+D) has a Requests tab showing in-flight requests and their age over the last five minutes (thanks to @tomzx).
  • Reliability: switching sessions quickly no longer saves the wrong scroll position, and the log no longer fills with worktree warnings for non-Git folders (thanks to @herjarsa); startup cleanup of leftover processes no longer blocks the server on Windows (thanks to @bashrusakh).

下载链接