Skip to content

feat(workbench): switch conversation and editor tabs by worktree - #1039

Merged
xintaofei merged 17 commits into
spacering-net:mainfrom
fengpanhe:workbench
Oct 27, 2026
Merged

xintaofei merged 17 commits into
spacering-net:mainfrom
fengpanhe:workbench

Conversation

@fengpanhe

Copy link
Copy Markdown

Title: feat: add worktree-scoped Workbench mode

Summary

Add an optional Workbench mode that switches conversation and editor tabs together when selecting a worktree folder.

  • Add a Workbench toggle to the status bar, disabled by default.
  • Restore each worktree’s selected conversation and editor tab when switching back.
  • Preserve unsaved changes, editor undo history, and background conversation runtimes.
  • Scope tab closing, reordering, and preview replacement to the active worktree.
  • Keep normal mode available with all open tabs visible.

This change is client-only. Server APIs, persistence schemas, and build configuration remain unchanged.

Screenshots

Before — normal mode After — Workbench mode
image image

Validation

  • 720 test suites / 10,694 tests passed.
  • ESLint and TypeScript checks passed.
  • Next.js static export passed.
  • Regression coverage includes worktree switching, shared dirty buffers, asynchronous file opening, mobile runtime retention, and scoped tab operations.

@fengpanhe

Copy link
Copy Markdown
Author

@xintaofei 辛苦看下这个 worktree 工作台界面的改动,可以把会话 tab 和 编辑器 tab 跟随所属的 worktree 进行隔离,左下角有一个工作台的开关来切换到隔离状态。

就我来说,因为 tab 分不出是哪一个项目/worktree,我很少通过 tab 来切换会话,一般都走侧边栏,这样 tab 和 编辑器都 worktree 隔离可以避免杂乱,误操作。

…nt across worktrees

- Turning Workbench on keeps the current tab and per-group picks; only a
  worktree switch restores a remembered selection, and leaving the mode
  forgets them.
- The active folder follows the active tab inside a scope, so a chat
  conversation keeps its hidden chat folder (chat-mode chrome, terminal);
  an empty scope still owns the folder chrome.
- Closing the active tab focuses its neighbour among the worktree's own
  tabs and groups instead of jumping to the first tab.
- A scope whose folder leaves the workspace moves to the parent repo, a
  remaining tab's worktree, or the first open folder.
- The composer's folder picker moves its own draft (typed prompt and all)
  and the scope follows it once the retarget lands; "inherit from active"
  reads the tab the user is on before any scope switch.
- The tab strip offers only on-screen groups as split targets.
The separate disclosure button exists only in Workbench mode, where the
row button selects the worktree; in normal mode the row button stays the
disclosure control with its inline chevron and explanatory comment.
…tate updaters

- "Close others" / "close all" act on the worktree's references in one
  operation: buffers another worktree still holds only leave this scope,
  the rest close behind a single confirmation, and cancelling closes
  nothing.
- Scope references of closed buffers are dropped after the removal commits
  (including suspended duplicates and dormant-profile duplicates), so a
  replayed updater can no longer orphan a buffer; the selection moves to
  the scope-order neighbour without flashing the first tab.
- Restored browser tabs register their scope outside the updater.
- An open aimed at another worktree no longer takes the current scope's
  selection through a shared browser tab; turning Workbench on keeps the
  file the user is looking at.
Choosing chat mode in the composer's folder picker now carries that draft
(typed prompt and all) into the global scope, like a folder switch does,
and a new chat inherits the agent of the tab the user is on rather than
the global scope's selection.
…ving Workbench

- Restored pages join their folder's scope after the merge commits, and
  any committed buffer that no scope references is adopted, so a page
  restored while a queued close removes its duplicate is never invisible.
- Turning Workbench off keeps the file the scope was showing.
… View options

The PR named its mode "Workbench", which the app already uses for the
route surface (`WorkbenchRoute`). The mode makes a window's conversation
and file tabs follow the selected folder, so the store, helpers, tests
and stored preference now say that (`folder-tabs-store`,
`isTabInScope`, `TabScope`, `workspace:tabs-follow-folder:*`).

The switch leaves the status bar for the sidebar's View options menu,
next to the other display choices, since the sidebar is where folders
are selected while it is on.
…der again

Three file-open callbacks defaulted their scope with a call in the
parameter list (`scope = openingScope(...)`). The React Compiler cannot
reorder that, so it skipped the whole `WorkspaceProvider`, and every
compiler lint rule went quiet there. That is why two
`set-state-in-effect` suppressions had started reporting as unused and
were deleted. The default now runs in the function body, the provider
is analyzed again, and both suppressions are back where they were.
The preference is stored per backend and read once, at hydration, so a
window opened earlier kept the old mode until it was reloaded. Once a
window has hydrated it now listens for the stored key to change and
follows it, re-reading the key when the event arrives (a queued event
may carry an older value) and keeping its own folder.
…e folder

All folders shared one split tree, so a folder whose tabs filled only part
of it lost its resize handles, and unsplit-all, dissolve and orientation
changes reached into other folders' arrangements.

Each tab view now has its own group state (layout, assignments,
selection, tile flags): one for normal mode and one per folder. The view
on screen lives in the store's group fields; a folder switch parks it in
`groupViews` and loads the next. A folder's first view is the normal
layout narrowed to its tabs under the same group ids, so turning the mode
on moves no tab. Turning it off restores the normal layout. Hidden tabs
keep rendering in their own view's group shell, and shells come in a
fixed id order, so a folder switch never reparents or moves a live
conversation. Folder views persist in the group blob under `views`.
The top level stays the normal-mode view, and the views parked from the
last session are dropped if the stored mode comes back off.
A draft moved by the composer's folder or chat-mode picker kept its
prompt but could land beside the target folder's own draft, so the
folder showed two "New Conversation" tabs. Turning the mode off did the
same, putting every folder's drafts back into one group.

The moved draft now closes the blank drafts sharing its group in its new
folder, including when the user moved on before the move landed.
Turning the mode off keeps one draft per group: the active one, else one
with text, else the first. A draft whose composer holds text is never
closed, so two drafts can remain but no prompt is lost.
While tabs follow the folder, selecting a folder with no conversation
open left a blank column: no tab strip, no "+", and nothing to say which
folder was on screen, since the sidebar marked it only with
`aria-current`.

The unsplit strip now stays up for an empty folder, with its
new-conversation button (and no maximize, since there is nothing to
maximize). The column shows which folder is empty and offers a new
conversation there, or a new chat for the chat scope. Nothing is opened
unasked, so visiting folders still collects no drafts. The folder on
screen also gets the selected-row tint the conversation cards use.
…s split before its tabs load

Review follow-ups to the folder views and draft tidying:

- A draft counted as blank when it had no saved text, but the composer
  saves on a 300 ms debounce and never saves image attachments. Mounted
  composers now report unsaved content per draft key, and a draft with
  any is kept. The draft on screen is never closed either: the user may
  have switched to it while a moved draft was on its way.
- A folder view projected before the tab set was known (the first
  snapshot failed) dropped the assignments of conversations not loaded
  yet, so their split collapsed when they arrived. The projection now
  keeps everything until the set is known, and the invariant pass
  narrows it.
The composer reported what it holds from an effect, after React
committed it, and a dropped or pasted image counts only once it has
been read. So a draft could look blank to the tab store's tidying for a
moment after a file intake began, or for as long as an upload ran, and
be closed with the file still on its way.

The attachments hook now counts each intake (read, upload, native
picker, clipboard read, OS drop) the moment it starts and calls the
host's `onIntakeStart` synchronously. The composer marks its draft key
as holding content right then, and clears that mark from its committed
state once the last intake has settled.
Review follow-ups to the composer's intake reporting:

- The context-menu paste (and its Ctrl/⌘+Shift+V shortcut) reads the
  clipboard before it hands any image to the counted intake, so a draft
  looked blank while that read was pending. The whole paste is now one
  intake, through the hook's new `beginIntake` for hosts.
- An intake that starts and settles before React renders leaves
  `intakePending` false both times, so the composer's report never re-ran
  and the mark set at the start kept a blank draft protected for good.
  The hook now also bumps `intakeRevision` on every start and settle,
  and the composer re-reports on it.
@xintaofei

Copy link
Copy Markdown
Collaborator

codeg work task 439 is done — #1039 (272 files, +43116/-5167).

@xintaofei
xintaofei merged commit fa13205 into spacering-net:main Oct 27, 2026
13 checks passed
xintaofei added a commit that referenced this pull request Oct 28, 2026
This release brings folder-specific tabs and split layouts, HTML previews in replies, native MiniMax Code support and OpenCode 2 integration, alongside easier model selection, more flexible task delivery and improved usage reporting.

## New

- **Tabs can follow the selected folder**: enable “Tabs follow folder” in the sidebar’s View options to switch conversations, files and split layouts together while preserving drafts, unsaved edits and running conversations. (#1039, @fengpanhe)
- **HTML/CSS cards and charts can appear directly in replies**: enable “Chat HTML rendering” in Settings → Appearance to preview static HTML alongside Markdown, including during streaming, and switch back to the source when needed. (#1041, @ana52070)
- **MiniMax Code joins the built-in agents**, connecting to your installed `mcode` with its existing login and provider settings, with support for MCP tools and multi-agent delegation. (#1028, @xy3xy3)
- **Model fields can fetch and list your provider’s models directly**, with search, refresh and retry controls for Claude Code, Gemini CLI, OpenCode and other supported agents.
- **Codex model management is gathered into one section**, where you can choose the built-in or provider list, select models and refresh automatically while retaining the last working list if a refresh fails.
- **Tasks ready for review can open pull requests on GitHub, GitLab and Gitea/Forgejo**, including tasks created without an issue, with the option to keep the task open and push later changes to the same request.
- **ZCode supports unified Skills management**, including browsing, editing, importing and installing skills through codeg’s settings. (#1021, @jackie-cqz)

## Improved

- **OpenCode moves to 2.2.0**, with updated provider connections, permissions, MCP and plugin management that preserve comments in JSONC configuration files.
- **OpenCode conversations show form questions, scripts and background sub-agent progress**, and saved conversations include the newer database’s compaction records, command exit codes and media attachments.
- **Claude Code moves to claude-agent-acp 0.98.0**, with dedicated monitor steps showing the watched command or address, plus progress and trigger details for work started by background tasks or scheduled wakeups.
- **Claude Code’s sandbox network permission cards name the destination host**, making it easier to decide whether to allow a connection.
- **Codex moves to codex-acp 2.3.0**, reducing the wait to reopen a fork’s parent conversation to about a minute and improving saved tool output and error messages.
- **Cline, CodeBuddy, Kimi Code, Grok, Cursor, Antigravity, ZCode and Command Code are updated**, with compatibility adjustments for their current tools and configuration.
- **Bundled Superpowers skills move to v7.0.1**, adding session diagnostics for repeated work, plan drift and unusual costs, alongside improved planning, execution, review and standalone skill compatibility.
- **Hermes conversations offer model selection grouped by provider and a mode selector**, restoring your choices when you reopen the conversation.
- **Creating a task from a message opens the editor over the current conversation**, with the message and project filled in so you can save without leaving what you were reading.
- **The activity timeline uses clearer grey backgrounds, text hierarchy and icon spacing**, with a collapse action at the bottom of expanded steps that brings their header back into view.
- **Command rows explain outcomes such as no matches, false conditions, differing files and timeouts**, while command output stays folded by default.
- **TRAE CLI usage comes from its native records and includes sub-agent consumption**, giving conversations and usage reports more complete token totals. (#1019, @fengpanhe)

## Fixed

- **Antigravity’s native questions appear as interactive cards**, with selected answers preserved after reopening and historical multi-select, written-in and skipped answers displayed correctly. (#1043, @ana52070)
- **OpenCode 2 delegations display as sub-agent tasks with the correct conversation links**, including after reopening and when several delegations run in parallel. (#1020, @Liang-HZ)
- **Files with Chinese or other non-ASCII names, and renamed files, show correct change counts and diff previews** in the Changes panel and task details. (#1022, @MaxFreedomPollard)
- **Usage and Manage Conversations filters include custom agents and show their current names**, making their conversations and consumption easier to find. (#1029, @Adam-Dalloul)
- **Conversations using the official Claude adapter retain reported per-prompt usage and costs after reopening**, including custom agents, whose linked native sessions are also skipped during new imports to avoid duplicate usage counts. (#1048, @Adam-Dalloul)
- **Conversations retain their recorded duration even without token data**, and reported turn usage is preserved when a Remote Control message ends the reply.
- **A Codex reply that continues after automatic context compaction stays together in history**, instead of splitting into separate replies with duplicate activity headers and footers.
- **Claude advisor results remain visible after reopening**, in both the main conversation and sub-agent conversations.
- **A Kimi Code conversation that is busy in another client reports that it is in use**, instead of switching the conversation to a new empty session.
- **Dragging agents to reorder them in Settings keeps the list in place**, while selecting another agent still scrolls it into view. (#1033, @xyalter)
- **Agents that depend on installation scripts, including Hermes Agent, install correctly with npm 12.**
- **Fixed a Windows issue where ending an agent session could leave Git Bash with a missing temporary directory**, causing later commands to fail.
- **The macOS desktop app avoids the system’s low-swap suspension**, which could leave every conversation unresponsive while the agents kept running.
- **Multi-agent tool calls stop waiting when codeg remains unresponsive**, preventing them from hanging indefinitely.

## Note

- **OpenCode now requires version 2.0 or later**, so upgrade any 1.x installation before opening conversations and use plugins compatible with OpenCode 2.
- **OpenCode 2 does not support SSE MCP servers**, so use streamable HTTP when the server offers it, or leave OpenCode out of that server’s assignments.
- **The macOS standalone server now retains Full Disk Access and other privacy permissions across future updates**, but moving from an older build to this release requires granting those permissions once more.

-----------------------------

# 发布版本 0.41.0

这一版加入了按文件夹切换标签页和分屏布局、对话内 HTML 预览、MiniMax Code 原生支持和 OpenCode 2 适配,同时改进模型选择、任务交付和用量统计。

## 新增

- **标签页可以跟随当前文件夹切换**——在侧栏「视图选项」中开启「标签页跟随文件夹」,即可一起切换各文件夹的会话、文件和分屏布局,并保留草稿、未保存的修改和正在运行的对话。(#1039,@fengpanhe)
- **AI 回复中的 HTML/CSS 卡片和图表可以直接预览**——在「设置 → 外观」开启「聊天 HTML 渲染」,即可在流式回复中查看与 Markdown 混排的静态 HTML,并随时切回源码。(#1041,@ana52070)
- **新增内置智能体 MiniMax Code**,可连接已安装的 `mcode`,沿用已有登录和供应商配置,并支持 MCP 工具与多智能体委派。(#1028,@xy3xy3)
- **模型输入框可以直接获取并列出供应商提供的模型**,支持搜索、刷新和失败重试,适用于 Claude Code、Gemini CLI、OpenCode 等智能体。
- **Codex 的模型集中在同一处管理**,可切换内置或供应商列表、勾选模型并自动刷新,刷新失败时保留上次可用的列表。
- **待验收的任务可以直接创建 GitHub、GitLab 和 Gitea/Forgejo 的拉取请求**,无需先关联 Issue,也可以在交付后保留任务,继续处理并更新同一个 PR。
- **ZCode 接入统一的技能管理**,可以在 codeg 设置中查看、编辑、导入和安装技能。(#1021,@jackie-cqz)

## 改进

- **OpenCode 升级到 2.2.0**,供应商连接、权限、MCP 和插件管理均适配新版,并保留 JSONC 配置文件中的注释。
- **OpenCode 会话支持展示表单提问、脚本执行和后台子智能体进度**,历史会话也能读取新版数据库中的压缩记录、命令退出码和媒体附件。
- **Claude Code 升级到 claude-agent-acp 0.98.0**,监控任务会单独展示正在监听的命令或地址,后台任务和定时唤醒触发的工作也能查看进度与触发原因。
- **Claude Code 的沙箱联网授权会明确显示目标主机**,方便确认当前请求要连接哪里。
- **Codex 升级到 codex-acp 2.3.0**,分叉后重新打开父会话的等待时间缩短至约一分钟,历史工具输出和错误提示也更易读。
- **同步更新 Cline、CodeBuddy、Kimi Code、Grok、Cursor、Antigravity、ZCode 和 Command Code**,并适配新版工具记录和配置行为。
- **内置 Superpowers 技能更新到 v7.0.1**,新增会话诊断来分析重复工作、计划偏离和异常开销,同时改进计划编写、执行、审核及技能单独安装的兼容性。
- **Hermes 会话支持按供应商分组选择模型和切换运行模式**,重新打开会话后会恢复之前的选择。
- **从消息创建任务时,编辑窗口直接在当前对话上打开**,自动带入消息内容和所属项目,保存任务无需离开正在阅读的会话。
- **执行过程采用更清晰的灰色背景、文字层次和图标间距**,展开的步骤列表底部可一键收起,并自动回到对应标题。
- **命令结果会直接说明「无匹配」「条件不成立」「有差异」「超时」等含义**,命令输出默认保持收起,按需展开查看。
- **TRAE CLI 用量统计改为读取原生记录,并计入子智能体消耗**,会话和用量报表中的 token 总量更加完整。(#1019,@fengpanhe)

## 修复

- **Antigravity 的原生提问会显示为可直接回答的交互卡片**,重新打开后仍能看到已选答案,历史中的多选、自填和跳过记录也能正确展示。(#1043,@ana52070)
- **OpenCode 2 的委派会正确显示为子智能体任务并关联对应会话**,重新打开或同时委派多个任务时也能正确查看。(#1020,@Liang-HZ)
- **中文等非 ASCII 文件名和重命名文件能正确显示增删行数与差异预览**,覆盖「变更」面板和任务详情。(#1022,@MaxFreedomPollard)
- **用量统计和「管理会话」的筛选包含自定义智能体,并显示当前名称**,查找对应会话和消耗更方便。(#1029,@Adam-Dalloul)
- **使用官方 Claude 适配器的会话会保留每轮返回的用量与费用**,自定义智能体也适用,新导入时还会跳过已关联的原生会话,避免重复统计。(#1048,@Adam-Dalloul)
- **没有 token 数据的会话仍会保留已记录的执行耗时**,远程控制消息结束当前回复时,也不会丢失本轮已报告的用量。
- **Codex 在自动压缩上下文后继续生成的回复,回看时会保持完整**,不会再拆成两条并重复显示执行过程和统计。
- **Claude 顾问模型的回答会保留在历史中**,重新打开主会话或子智能体会话后都能查看。
- **Kimi Code 会话被其他客户端占用时会正确提示**,不会再误建空会话并切换过去。
- **在设置中拖动智能体排序时,列表不会再突然跳回当前选中项**,切换智能体时仍会自动滚动到对应位置。(#1033,@xyalter)
- **使用 npm 12 也能正确安装 Hermes Agent 等依赖安装脚本的智能体。**
- **修复 Windows 上结束智能体会话后,Git Bash 临时目录失效的问题**,避免后续命令因找不到临时目录而失败。
- **修复 macOS 因交换空间耗尽而挂起 codeg 的问题**,避免智能体仍在运行、所有会话却一起失去响应。
- **多智能体工具调用在 codeg 长时间失去响应时会结束等待**,避免一直卡住。

## 注意

- **OpenCode 现在要求 2.0 及以上版本**,请先升级已有的 1.x 安装再打开会话,并换用兼容 OpenCode 2 的插件。
- **OpenCode 2 不支持 SSE 类型的 MCP 服务器**,如果服务器提供 streamable HTTP,请改用该方式,否则不要为该服务器选择 OpenCode。
- **macOS 独立服务器版在后续更新中可以保留「完全磁盘访问」等隐私权限**,但从旧版首次升级到本版时,需要重新授予一次权限。
xintaofei added a commit that referenced this pull request Oct 28, 2026
This release brings folder-specific tabs and split layouts, HTML previews in replies, native MiniMax Code support and OpenCode 2 integration, alongside easier model selection, more flexible task delivery and improved usage reporting.

## New

- **Tabs can follow the selected folder**: enable “Tabs follow folder” in the sidebar’s View options to switch conversations, files and split layouts together while preserving drafts, unsaved edits and running conversations. (#1039, @fengpanhe)
- **HTML/CSS cards and charts can appear directly in replies**: enable “Chat HTML rendering” in Settings → Appearance to preview static HTML alongside Markdown, including during streaming, and switch back to the source when needed. (#1041, @ana52070)
- **MiniMax Code joins the built-in agents**, connecting to your installed `mcode` with its existing login and provider settings, with support for MCP tools and multi-agent delegation. (#1028, @xy3xy3)
- **Model fields can fetch and list your provider’s models directly**, with search, refresh and retry controls for Claude Code, Gemini CLI, OpenCode and other supported agents.
- **Codex model management is gathered into one section**, where you can choose the built-in or provider list, select models and refresh automatically while retaining the last working list if a refresh fails.
- **Tasks ready for review can open pull requests on GitHub, GitLab and Gitea/Forgejo**, including tasks created without an issue, with the option to keep the task open and push later changes to the same request.
- **ZCode supports unified Skills management**, including browsing, editing, importing and installing skills through codeg’s settings. (#1021, @jackie-cqz)

## Improved

- **OpenCode moves to 2.2.0**, with updated provider connections, permissions, MCP and plugin management that preserve comments in JSONC configuration files.
- **OpenCode conversations show form questions, scripts and background sub-agent progress**, and saved conversations include the newer database’s compaction records, command exit codes and media attachments.
- **Claude Code moves to claude-agent-acp 0.98.0**, with dedicated monitor steps showing the watched command or address, plus progress and trigger details for work started by background tasks or scheduled wakeups.
- **Claude Code’s sandbox network permission cards name the destination host**, making it easier to decide whether to allow a connection.
- **Codex moves to codex-acp 2.3.0**, reducing the wait to reopen a fork’s parent conversation to about a minute and improving saved tool output and error messages.
- **Cline, CodeBuddy, Kimi Code, Grok, Cursor, Antigravity, ZCode and Command Code are updated**, with compatibility adjustments for their current tools and configuration.
- **Bundled Superpowers skills move to v7.0.1**, adding session diagnostics for repeated work, plan drift and unusual costs, alongside improved planning, execution, review and standalone skill compatibility.
- **Hermes conversations offer model selection grouped by provider and a mode selector**, restoring your choices when you reopen the conversation.
- **Creating a task from a message opens the editor over the current conversation**, with the message and project filled in so you can save without leaving what you were reading.
- **The activity timeline uses clearer grey backgrounds, text hierarchy and icon spacing**, with a collapse action at the bottom of expanded steps that brings their header back into view.
- **Command rows explain outcomes such as no matches, false conditions, differing files and timeouts**, while command output stays folded by default.
- **TRAE CLI usage comes from its native records and includes sub-agent consumption**, giving conversations and usage reports more complete token totals. (#1019, @fengpanhe)

## Fixed

- **Antigravity’s native questions appear as interactive cards**, with selected answers preserved after reopening and historical multi-select, written-in and skipped answers displayed correctly. (#1043, @ana52070)
- **OpenCode 2 delegations display as sub-agent tasks with the correct conversation links**, including after reopening and when several delegations run in parallel. (#1020, @Liang-HZ)
- **Files with Chinese or other non-ASCII names, and renamed files, show correct change counts and diff previews** in the Changes panel and task details. (#1022, @MaxFreedomPollard)
- **Usage and Manage Conversations filters include custom agents and show their current names**, making their conversations and consumption easier to find. (#1029, @Adam-Dalloul)
- **Conversations using the official Claude adapter retain reported per-prompt usage and costs after reopening**, including custom agents, whose linked native sessions are also skipped during new imports to avoid duplicate usage counts. (#1048, @Adam-Dalloul)
- **Conversations retain their recorded duration even without token data**, and reported turn usage is preserved when a Remote Control message ends the reply.
- **A Codex reply that continues after automatic context compaction stays together in history**, instead of splitting into separate replies with duplicate activity headers and footers.
- **Claude advisor results remain visible after reopening**, in both the main conversation and sub-agent conversations.
- **A Kimi Code conversation that is busy in another client reports that it is in use**, instead of switching the conversation to a new empty session.
- **Dragging agents to reorder them in Settings keeps the list in place**, while selecting another agent still scrolls it into view. (#1033, @xyalter)
- **Agents that depend on installation scripts, including Hermes Agent, install correctly with npm 12.**
- **Fixed a Windows issue where ending an agent session could leave Git Bash with a missing temporary directory**, causing later commands to fail.
- **The macOS desktop app avoids the system’s low-swap suspension**, which could leave every conversation unresponsive while the agents kept running.
- **Multi-agent tool calls stop waiting when codeg remains unresponsive**, preventing them from hanging indefinitely.

## Note

- **OpenCode now requires version 2.0 or later**, so upgrade any 1.x installation before opening conversations and use plugins compatible with OpenCode 2.
- **OpenCode 2 does not support SSE MCP servers**, so use streamable HTTP when the server offers it, or leave OpenCode out of that server’s assignments.
- **The macOS standalone server now retains Full Disk Access and other privacy permissions across future updates**, but moving from an older build to this release requires granting those permissions once more.

-----------------------------

# 发布版本 0.41.1

这一版加入了按文件夹切换标签页和分屏布局、对话内 HTML 预览、MiniMax Code 原生支持和 OpenCode 2 适配,同时改进模型选择、任务交付和用量统计。

## 新增

- **标签页可以跟随当前文件夹切换**——在侧栏「视图选项」中开启「标签页跟随文件夹」,即可一起切换各文件夹的会话、文件和分屏布局,并保留草稿、未保存的修改和正在运行的对话。(#1039,@fengpanhe)
- **AI 回复中的 HTML/CSS 卡片和图表可以直接预览**——在「设置 → 外观」开启「聊天 HTML 渲染」,即可在流式回复中查看与 Markdown 混排的静态 HTML,并随时切回源码。(#1041,@ana52070)
- **新增内置智能体 MiniMax Code**,可连接已安装的 `mcode`,沿用已有登录和供应商配置,并支持 MCP 工具与多智能体委派。(#1028,@xy3xy3)
- **模型输入框可以直接获取并列出供应商提供的模型**,支持搜索、刷新和失败重试,适用于 Claude Code、Gemini CLI、OpenCode 等智能体。
- **Codex 的模型集中在同一处管理**,可切换内置或供应商列表、勾选模型并自动刷新,刷新失败时保留上次可用的列表。
- **待验收的任务可以直接创建 GitHub、GitLab 和 Gitea/Forgejo 的拉取请求**,无需先关联 Issue,也可以在交付后保留任务,继续处理并更新同一个 PR。
- **ZCode 接入统一的技能管理**,可以在 codeg 设置中查看、编辑、导入和安装技能。(#1021,@jackie-cqz)

## 改进

- **OpenCode 升级到 2.2.0**,供应商连接、权限、MCP 和插件管理均适配新版,并保留 JSONC 配置文件中的注释。
- **OpenCode 会话支持展示表单提问、脚本执行和后台子智能体进度**,历史会话也能读取新版数据库中的压缩记录、命令退出码和媒体附件。
- **Claude Code 升级到 claude-agent-acp 0.98.0**,监控任务会单独展示正在监听的命令或地址,后台任务和定时唤醒触发的工作也能查看进度与触发原因。
- **Claude Code 的沙箱联网授权会明确显示目标主机**,方便确认当前请求要连接哪里。
- **Codex 升级到 codex-acp 2.3.0**,分叉后重新打开父会话的等待时间缩短至约一分钟,历史工具输出和错误提示也更易读。
- **同步更新 Cline、CodeBuddy、Kimi Code、Grok、Cursor、Antigravity、ZCode 和 Command Code**,并适配新版工具记录和配置行为。
- **内置 Superpowers 技能更新到 v7.0.1**,新增会话诊断来分析重复工作、计划偏离和异常开销,同时改进计划编写、执行、审核及技能单独安装的兼容性。
- **Hermes 会话支持按供应商分组选择模型和切换运行模式**,重新打开会话后会恢复之前的选择。
- **从消息创建任务时,编辑窗口直接在当前对话上打开**,自动带入消息内容和所属项目,保存任务无需离开正在阅读的会话。
- **执行过程采用更清晰的灰色背景、文字层次和图标间距**,展开的步骤列表底部可一键收起,并自动回到对应标题。
- **命令结果会直接说明「无匹配」「条件不成立」「有差异」「超时」等含义**,命令输出默认保持收起,按需展开查看。
- **TRAE CLI 用量统计改为读取原生记录,并计入子智能体消耗**,会话和用量报表中的 token 总量更加完整。(#1019,@fengpanhe)

## 修复

- **Antigravity 的原生提问会显示为可直接回答的交互卡片**,重新打开后仍能看到已选答案,历史中的多选、自填和跳过记录也能正确展示。(#1043,@ana52070)
- **OpenCode 2 的委派会正确显示为子智能体任务并关联对应会话**,重新打开或同时委派多个任务时也能正确查看。(#1020,@Liang-HZ)
- **中文等非 ASCII 文件名和重命名文件能正确显示增删行数与差异预览**,覆盖「变更」面板和任务详情。(#1022,@MaxFreedomPollard)
- **用量统计和「管理会话」的筛选包含自定义智能体,并显示当前名称**,查找对应会话和消耗更方便。(#1029,@Adam-Dalloul)
- **使用官方 Claude 适配器的会话会保留每轮返回的用量与费用**,自定义智能体也适用,新导入时还会跳过已关联的原生会话,避免重复统计。(#1048,@Adam-Dalloul)
- **没有 token 数据的会话仍会保留已记录的执行耗时**,远程控制消息结束当前回复时,也不会丢失本轮已报告的用量。
- **Codex 在自动压缩上下文后继续生成的回复,回看时会保持完整**,不会再拆成两条并重复显示执行过程和统计。
- **Claude 顾问模型的回答会保留在历史中**,重新打开主会话或子智能体会话后都能查看。
- **Kimi Code 会话被其他客户端占用时会正确提示**,不会再误建空会话并切换过去。
- **在设置中拖动智能体排序时,列表不会再突然跳回当前选中项**,切换智能体时仍会自动滚动到对应位置。(#1033,@xyalter)
- **使用 npm 12 也能正确安装 Hermes Agent 等依赖安装脚本的智能体。**
- **修复 Windows 上结束智能体会话后,Git Bash 临时目录失效的问题**,避免后续命令因找不到临时目录而失败。
- **修复 macOS 因交换空间耗尽而挂起 codeg 的问题**,避免智能体仍在运行、所有会话却一起失去响应。
- **多智能体工具调用在 codeg 长时间失去响应时会结束等待**,避免一直卡住。

## 注意

- **OpenCode 现在要求 2.0 及以上版本**,请先升级已有的 1.x 安装再打开会话,并换用兼容 OpenCode 2 的插件。
- **OpenCode 2 不支持 SSE 类型的 MCP 服务器**,如果服务器提供 streamable HTTP,请改用该方式,否则不要为该服务器选择 OpenCode。
- **macOS 独立服务器版在后续更新中可以保留「完全磁盘访问」等隐私权限**,但从旧版首次升级到本版时,需要重新授予一次权限。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants