升级日志

记录每次变化、发布时间,以及升级后该核对什么。

这份页面是 imux 的公开发布记录。它追踪当前产品线、官网上线、多语言站点扩展,以及替换当前构建前应该检查的操作说明。

当前发布线
v2.4.1

imux 当前稳定版本为 v2.0.2;替换现有安装前确认 build 171。v2.0.2 把「在 explorer 里点一下文件」这件事彻底带回 imux —— 不论是侧边栏点击、把文件拖到空白 pane,还是从 Finder 走「打开方式 → imux」,文件都会在 workspace 里打开,不再跳出去丢给 TextEdit / Preview / Office。两条入口:文本类(txt/md/json/js/html/htm/php/xml/yaml/toml/csv + 源码/配置文件,8 MB 以内)走原有的 `FilePanel`,可读可改;其它一切 —— 图片、PDF、压缩包(ZIP/TAR/…)、音视频、**Microsoft Office 文档(doc/docx/xls/xlsx/ppt/pptx)**、以及超过 8 MB 的大文件 —— 都进入新增的 `PreviewPanel`,由 macOS `QLPreviewView` 原生渲染(只读,多格式)。智能分流逻辑落在 `Workspace.openLocalFileURL`(抽到 `Sources/Workspace+Preview.swift` 以保持 `Workspace.swift` 不破 baseline 文件大小天花板),Finder 拖放、应用内拖拽、pane drop 共用同一入口。`Info.plist` 把 imux 声明为每一个渲染器**实际支持**的 UTI 的 viewer/editor —— image/pdf/archive/audio/video/Office 全部对应到真实承接面,不再有「声明了能开但 loader 拒收」的占位坑。`PreviewPanel` 通过现有 `SessionFilePanelSnapshot`(`panelType` 字段区分 file vs preview)双向持久化,恢复窗口时 QuickLook 表面原样回来,schema 没动。新增 6 个 `PreviewPanelRoutingTests` case 钉住 editor/preview 分流(txt/json/md → editor;png/zip → preview;9 MB log → preview)。v2.0.2 同时合并 v2.0.1 的 Feedback composer endpoint 修复:`FeedbackComposerSettings.defaultEndpoint` 现在默认指向 `https://www.iccjk.com/api/feedback`(之前是空串,导致应用内「发送反馈」快捷键在没设置 `ICC_FEEDBACK_API_URL` 环境变量的情况下抛 `invalidEndpoint`)。v2.0.1 把 Agent Context Inspector 从「观察台」升级为「指挥台」:在已选中的 Clavue / Claude Code / Codex 实时 session 上点「续问 →」,弹出两步式确认 modal(撰写 → 复核 → 发送),用户确认后整条动作被写入 append-only、HMAC 链式签名的审计日志(`~/.imux/audit/inspector/<YYYY-MM-DD>.jsonl`),密钥落在 macOS Keychain `com.imux.audit.hmac.v1`,离线核验脚本 `scripts/audit-replay-verify.{sh,swift}` 可重放整条链。imux 自己**永远不写**上游 provider 的 jsonl —— ClavueBridge 通过 `<session>.inbound.fifo` 写一行 JSON,由 Clavue 的主循环把它当作正常 user turn append;ClaudeCodeBridge / CodexBridge 在上游 CLI 暴露 IPC 之前,共用 ClipboardInboxBridge(写到 `~/.imux/inbox/<provider>/<session>.txt` + 剪贴板,modal 文案明确说明这是「半自动」)。三道新的 audit gate 把契约钉死:`check-inspector-readonly`(Bridge/ 子目录由 `--exclude-bridge` 排除)、`check-inspector-bridge-policy`、`check-audit-append-only`。21 个新 `inspector.write.*` xcstrings 三语齐(en / zh-Hans / zh-Hant)。宿主侧 `iccApp.body` 通过 `InspectorSidebarMount` 一行接入;折叠态仍然只占 8 px 状态条。v1.15.2 落地了持久 PTY 守护进程的 Phase 1(`iccd-local` 守护进程二进制 + Swift 客户端 + 单测),但 GUI 还**没有**走该路径(feature flag `PersistentPtyDaemonEnabled` 默认 OFF,surface 侧 reattach 留到下个版本)—— 今天退出 imux 仍然会 SIGHUP 子进程,scrollback 里的 Clavue 对话需要重启后用 `clavue --continue` 重新拉起;provider 自己的 jsonl 历史(`~/.clavue/projects/**`)保留。v1.15.2 同时上线只读的 Agent Context Inspector 模块,把 Claude / Codex / Clavue 会话状态暴露到侧边栏,但**绝不写**任何上游 provider 的 session 存储 —— `~/.clavue/projects/**`、`~/.claude/projects/**`、`~/.codex/sessions/**` 是明令禁止的写入目标,由新增的 `check-inspector-readonly` 守护门和原有五道 freeze-growth gate 一起强制。窗口在「上次会话」基础上恢复,并使用稳定的首帧尺寸,保存好的布局不再先闪一下默认几何再修正。终端面板的 scrollbar 改为一直可见(与 VS Code 对齐);`ExecutionHeader` 给长跑 agent 步骤加上了 Codex 风格 spinner。同一构建包含可靠性修复:`BodyEvalCounter` 遥测不再把 Swift `String` 喂给 C `%s` 占位符(消除了一个仪器路径上的崩溃);locale-stable 测试套件重写为断言结构不变量而不是本地化文本(CI 现在与机器 locale 无关都能通过);`SSHConfigLoader.load(rootURL:)` 的解析行为被一条 pin 测试钉住,未来 parser 改动会以测试失败的形式浮出。v1.13.1 是 v1.13.0 之上的 hotfix,修复两个 SSH 重连 bug:(1) `configureRemoteConnection` 现在接受 `isReconnect` 标记,重连远程工作区时不再触发 `seedInitialRemoteTerminalSessionIfNeeded` —— 后者会在终端发出 `clear_screen`,把 scrollback 里正在进行的 Clavue 对话整页擦掉;(2) 当工作区拥有托管的终端 SSH 会话、且 daemon 握手以 `failed to query remote platform: Connection timed out during banner exchange` 失败时,工作区现在显示橙色「远程服务不可用」warning(与其它辅助服务降级一致),而不再是红色「SSH 错误」banner。watchdog 自动重连路径自动继承新分支。v1.13.0 给远程侧边栏行加上「已保存凭据」/「最近连接」徽章,并把 SSH 工作区作为快速重连入口持久化进会话快照。v1.12.4 修复了 libghostty 点击/选择路径上的 use-after-free 崩溃:cherry-pick 上游 ghostty-org/ghostty#12463(commit `28f4676b5`)到 Ghostty fork pin。v1.12.3 修复 sidebar→终端 拖放。v1.12.2 带来 SCM Phase 15:sidebar 新增 VS Code 风格 Source Control 面板。v1.12.1 修复了终端面板鼠标交互回归。v1.12.0 加固了用户主动「检查更新」路径。v1.11.6 移除第三方 Sentry 崩溃 SDK,改为本地诊断记录器加上自建崩溃收集端点:上报到我们自己的 `https://www.iccjk.com/api/error-reports`,使用匿名 per-install UUID。崩溃和运行时警告默认写到本地磁盘,只有在设置里「发送匿名遥测」开启时才会上传。

应该怎么读 imux 的版本发布

把升级日志当成操作文档,而不仅仅是宣传页。好的发布记录应该帮助你判断是马上采用、先验证,还是等当前任务结束后再更新。

1. 先把公开版本当作稳定线

公开版本应该被视为可用于真实工作的稳定线。升级动作应该有节奏,而不是看到新构建就立即覆盖。

  • 替换应用前先确认当前版本号。
  • 团队或项目集群尽量统一到同一批准构建。
  • 根据升级日志判断当前时机是否适合重要任务。

2. 看影响面,不只看标题

重点关注会改变操作面的内容,例如文件处理、SSH 行为、监督器流程、模型设置和打包行为。

  • 优先看工作流变化,再看外观变化。
  • 确认远程行为、路由或设置持久化是否变化。
  • 把发布说明映射到你当前正在推进的任务上。

3. 用一条干净路径做升级验证

每次升级后,至少要在一个受控本地工作区和一个受控远程工作区中验证,确认无误后再作为默认日常版本。

  • 打开一个本地仓库,确认编辑与保存正常。
  • 连接一台 SSH 主机,确认远程浏览符合预期。
  • 验证通过后,再把关键任务迁移到新版本。
发布历史
2026年5月28日

本地文件在 imux 内部打开(编辑器 / QuickLook 预览),声明 Office UTI

v2.0.2

imux v2.0.2 把「在 explorer 里点一下文件」这件事彻底带回 imux —— 不论是侧边栏点击、把文件拖到空白 pane,还是从 Finder 走「打开方式 → imux」,文件都会在 workspace 里打开,不再跳出去丢给 TextEdit / Preview / Office。两条入口:文本类(txt/md/json/js/html/htm/php/xml/yaml/toml/csv + 源码/配置文件,8 MB 以内)走原有的 `FilePanel`,可读可改;其它一切 —— 图片、PDF、压缩包(ZIP/TAR/…)、音视频、**Microsoft Office 文档(doc/docx/xls/xlsx/ppt/pptx)**、以及超过 8 MB 的大文件 —— 都进入新增的 `PreviewPanel`,由 macOS `QLPreviewView` 原生渲染(只读,多格式)。智能分流逻辑落在 `Workspace.openLocalFileURL`(抽到 `Sources/Workspace+Preview.swift` 以保持 `Workspace.swift` 不破 baseline 文件大小天花板),Finder 拖放、应用内拖拽、pane drop 共用同一入口。`Info.plist` 把 imux 声明为每一个渲染器**实际支持**的 UTI 的 viewer/editor —— image/pdf/archive/audio/video/Office 全部对应到真实承接面,不再有「声明了能开但 loader 拒收」的占位坑。`PreviewPanel` 通过现有 `SessionFilePanelSnapshot`(`panelType` 字段区分 file vs preview)双向持久化,恢复窗口时 QuickLook 表面原样回来,schema 没动。新增 6 个 `PreviewPanelRoutingTests` case 钉住 editor/preview 分流(txt/json/md → editor;png/zip → preview;9 MB log → preview)。v2.0.2 同时合并 v2.0.1 的 Feedback composer endpoint 修复:`FeedbackComposerSettings.defaultEndpoint` 现在默认指向 `https://www.iccjk.com/api/feedback`(之前是空串,导致应用内「发送反馈」快捷键在没设置 `ICC_FEEDBACK_API_URL` 环境变量的情况下抛 `invalidEndpoint`)。

  • 点击 → 在 imux 内部打开:explorer 把本地文件路由到我们的编辑器(文本类)或新的 QuickLook 承载的 `PreviewPanel`(二进制),不再跳出系统默认 app。
  • PreviewPanel 覆盖图片、PDF、压缩包、音视频、Microsoft Office(doc/docx/xls/xlsx/ppt/pptx),全部走 macOS `QLPreviewView` —— 只读、多格式、原生渲染。
  • 智能分流落在 `Workspace.openLocalFileURL`(抽到 `Sources/Workspace+Preview.swift`),Finder 拖放、拖到 pane、Open With → imux 共用同一入口。
  • `Info.plist` 的 UTI 声明对齐渲染器实际能力 —— image/pdf/archive/audio/video/Office 不再有「声明能开但拒收」的占位坑。
  • Session 持久化通过 `SessionFilePanelSnapshot`(`panelType` 字段区分 file vs preview)复用,schema 没动。
  • 新增 6 个 `PreviewPanelRoutingTests` case 钉住 editor/preview 分流;相关全量单测套件(122 个 case)通过。
  • 合并 v2.0.1 的 follow-up:Feedback composer endpoint 默认 `https://www.iccjk.com/api/feedback`,恢复应用内「发送反馈」快捷键,无需再设 `ICC_FEEDBACK_API_URL`。
  • 发布构建 171,DMG SHA256 `2b05ed4e6877fccca8ccbb0004c64e830b1f4527d5962df479ff38c482df590c`,GitHub release / appcast / latest.json / 网站下载别名同步。
2026年5月27日

Inspector v1.16 — 写权限授权流上线

v2.0.1

imux v2.0.1 落地 Inspector v1.16 写管道:Agent Context Inspector 从「观察台」升级为「指挥台」—— 在已选中的 Clavue / Claude Code / Codex 实时 session 上点「续问 →」会弹出两步式 modal(撰写 → 复核 → 发送),用户确认后整条动作被写入 append-only、HMAC 链式签名的审计日志(`~/.imux/audit/inspector/<YYYY-MM-DD>.jsonl`),HMAC 密钥落在 macOS Keychain `com.imux.audit.hmac.v1`,离线核验脚本 `scripts/audit-replay-verify.{sh,swift}` 含 5 道 fixture(合法链 / 篡改 payload / 断 prev_hmac / 错 key / 缺 flag)。Provider 自家 jsonl 仍然永远不被 imux 写:ClavueBridge 通过 `<session>.inbound.fifo` 写一行 JSON,由 Clavue 主循环把它当作 user turn append;ClaudeCodeBridge / CodexBridge 在上游 CLI 暴露 IPC 之前共用 `ClipboardInboxBridge`(写 `~/.imux/inbox/<provider>/<session>.txt` + 剪贴板,modal 文案明确「半自动」)。UI 落在 `Sources/Inspector/Bridge/InspectorWriteModal.swift`(compose → review → send,8 KB 文本框上限,远程 session 灰禁并显示 banner —— 留给 v1.17)。宿主接入 API:`InspectorWriteSession.makeDefault(home:)` 构造完整组合(Keychain + 3 个 bridge + adapter),`View.inspectorWriteSheet(session:)` 把 host wiring 缩到一行;`iccApp.body` 的 `WindowGroup` 现在用 `@StateObject` 持有 `AgentContextStore` + `InspectorWriteSession`,`InspectorSidebarMount` 在 sidebar `.supervisor` 切片顶部以 8 px 折叠状态条挂载在 `SupervisorPaneView` 之上。三道新 audit gate 把契约钉死:`check-inspector-readonly`(Bridge/ 由 `--exclude-bridge` 排除)、`check-inspector-bridge-policy`(Bridge/ 写动作只允许 `~/.imux/audit/` + `~/.imux/inbox/` + fifo)、`check-audit-append-only`(audit-writer 接口钉到 `InspectorAuditLog.swift` 一个调用点)。21 个新 `inspector.write.*` xcstrings 三语齐(en / zh-Hans / zh-Hant)。

  • Inspector 从只读升为读+写:续问通过 provider 自己的输入通道注入,imux 永远不直接写 agent 的 jsonl。
  • Append-only HMAC 链式审计日志(`~/.imux/audit/inspector/<YYYY-MM-DD>.jsonl`)+ Keychain 密钥(`com.imux.audit.hmac.v1`)+ 离线重放核验(`scripts/audit-replay-verify.{sh,swift}`)。
  • 两步式确认 modal(撰写 → 复核 → 发送),8 KB 文本框上限,远程 session 灰禁并提示(v1.17 范围)。
  • ClavueBridge 通过 `<session>.inbound.fifo` 写入;ClaudeCodeBridge / CodexBridge 在上游 CLI 暴露 IPC 前共用 `ClipboardInboxBridge`。
  • 宿主接入完成:`iccApp.body` 持有 `AgentContextStore` + `InspectorWriteSession`;`InspectorSidebarMount` 从 `supervisorSidebarPane()` 挂载,折叠态 8 px 状态条置于 `SupervisorPaneView` 顶部。
  • 三道新 audit gate:`check-inspector-readonly`(Bridge/ 排除)、`check-inspector-bridge-policy`、`check-audit-append-only`。21 个新 `inspector.write.*` 文案三语齐。
  • 发布 build 170,SHA256 `040d04726a609fbf138b210e0c38683be7aeed9f4a42981ecd7f141e0b4d348c`,已贯通 GitHub、appcast、latest.json、官网下载路径。
2026年5月25日

持久 PTY 守护进程 Phase 1(仅 daemon + 客户端,GUI 尚未接入);只读 Agent Context Inspector;窗口从上次会话恢复

v1.15.2

头条变更:imux 落地了持久 PTY 守护进程的 **Phase 1**(`iccd-local` 二进制 + Swift 客户端 `Sources/Pty/` + 单元测试),但 GUI **尚未**把终端面板路由到守护进程。Feature flag `PersistentPtyDaemonEnabled` 默认 **OFF**,surface 侧的 reattach 接线(Workspace + GhosttyTerminalView + SessionPersistence.restore)排在下一个版本。当前版本退出 imux 仍然会 SIGHUP 子进程 —— 终端面板里跑的 Clavue / Claude / Codex 会话需要在重启后用 `clavue --continue` 这类命令重新拉起;provider 自己的 jsonl 历史(`~/.clavue/projects/**`)保留不动。同步上线的 Agent Context Inspector 模块把 Claude / Codex / Clavue 会话状态暴露到 sidebar,但按设计是**只读**的:`~/.clavue/projects/**`、`~/.claude/projects/**`、`~/.codex/sessions/**` 是明令禁止的写入目标,由新增的 `check-inspector-readonly` audit gate 与原有五道 freeze-growth gate 共同强制。窗口状态从上次会话恢复,并使用稳定的首帧尺寸,保存好的布局不再先闪一下默认几何再修正。终端面板的 scrollbar 改为一直可见(与 VS Code 对齐),`ExecutionHeader` 给长跑 agent 步骤加上 Codex 风格 spinner。同一构建包含可靠性修复:`BodyEvalCounter` 遥测不再把 Swift `String` 喂给 C `%s` 占位符(消除了一个仪器路径上的崩溃);locale-stable 测试套件重写为断言结构不变量而非本地化文本(CI 与机器 locale 无关都能通过);`SSHConfigLoader.load(rootURL:)` 的解析行为被一条 pin 测试钉住,未来 parser 改动会以测试失败的形式浮出。

  • 持久 PTY 守护进程**仅 Phase 1**:`iccd-local` 二进制、`Sources/Pty/` Swift 客户端、单测落地。Feature flag `PersistentPtyDaemonEnabled` 默认 OFF;GUI 终端面板仍然在 app 生命周期内 spawn shell,退出时 SIGHUP。
  • Reattach 路径(Workspace + GhosttyTerminalView 接线 + SessionPersistence.restore 走守护进程)排在下一版本。在此之前,重启后请重新拉起 agent CLI。
  • Agent Context Inspector 模块按契约只读:`~/.clavue/projects/**`、`~/.claude/projects/**`、`~/.codex/sessions/**` 是禁止的写入目标,由新增的 `check-inspector-readonly` audit gate 强制。
  • 窗口从上次会话恢复,并使用稳定的首帧尺寸;保存好的布局不再先闪一下默认几何再修正。
  • 终端面板 scrollbar 改为一直可见(与 VS Code 对齐);`ExecutionHeader` 给长跑 agent 步骤加上 Codex 风格 spinner。
  • 可靠性修复:`BodyEvalCounter` 不再因 Swift `String` → C `%s` 不匹配崩溃;locale-stable 套件改为断言结构不变量;`SSHConfigLoader.load(rootURL:)` 解析行为被回归测试钉住。
  • build 168 已发布,SHA256 `41a0f9fb485c7de05efa53704339eba705c03b8592f15cacfc779511816cd58b` 在 GitHub、appcast、latest.json、官网下载别名间全部一致。
2026年5月19日

远程重连 hotfix:保留 scrollback、降级仅 daemon 失败的红色 banner

v1.13.1

针对用户反馈的两个 v1.13.0 SSH 重连 bug 的 hotfix。(1) 远程工作区重连不再清空终端 scrollback。`Workspace.configureRemoteConnection` 现在接受 `isReconnect: Bool = false` 标记,`reconnectRemoteConnection()` 传 `true` 调用时跳过 `seedInitialRemoteTerminalSessionIfNeeded`(这一步会向终端发 `clear_screen`),重连过程中 scrollback 里正在进行的 Clavue 对话整段保留。watchdog 自动重连走的是同一个 `reconnectRemoteConnection()`,所以自动继承本次修复。(2) 当工作区拥有托管的终端 SSH 会话、且 daemon 引导失败时,banner 由红色「SSH 错误」降级为橙色「远程服务不可用」。`applyRemoteConnectionStateUpdate` 在检测到 `.serviceUnavailable` 且工作区有非空 `terminalStartupCommand`(托管终端 SSH 会话的标记)时,走与其它辅助服务降级一致的橙色 warning 通道,而不再把它当作底层 SSH 实际并没发生的硬失败展示。22 行 surgical patch 修在 `Sources/Workspace.swift`;无 API 变更,无新增文件。五道 freeze-growth audit gate(localization / observables / file-size / hot-path purity / control-mainsync)全过;`TabManagerSessionSnapshot`、`RemoteReconnectWatchdogPolicy`、`RemoteHostHistoryStore` 测试套件全绿。

  • `configureRemoteConnection(_:, isReconnect:)` 在重连时跳过 `seedInitialRemoteTerminalSessionIfNeeded`,不再发 `clear_screen`,Clavue 对话状态在重连过程中得以保留。
  • `applyRemoteConnectionStateUpdate` 把托管终端 SSH 会话上的 `.serviceUnavailable` 降级为橙色「远程服务不可用」warning,与其它辅助服务降级风格一致。
  • watchdog 自动重连路径通过 `reconnectRemoteConnection()` 自动继承两项修复,无需单独维护一条 watchdog 代码路径。
  • build 162 已发布,SHA256 `2df32d59ffb9cd96484035a5e86ab81178b6fd5729f058f69d222fb9ae1d195d` 在 GitHub、appcast、latest.json、官网下载别名间全部一致。
2026年5月19日

远程侧边栏:已保存凭据 / 最近连接徽章,SSH 工作区快速重连入口

v1.13.0

远程侧边栏行现在直接显示两个操作信号:当 Keychain 里有凭据记录时显示 `saved` 徽章;当本地 host 历史里有成功连接记录时显示 `最近连接` 时间戳。两者都从既有的本地服务(`RemoteCredentialStore` 和 `RemoteHostHistoryStore`)派生,不引入任何新的 daemon 流量,打开侧边栏的成本与之前一致。同一个版本把活动的 SSH 工作区作为快速重连入口持久化进会话快照 —— imux 下次启动时,恢复出来的远程工作区拥有足够的上下文(`destination` / 身份 / `terminalStartupCommand` / 最后访问目录)去做一键重连,而不是被当成普通本地面板。快照 schema 向前兼容:旧版本忽略新字段,恢复策略仍把每次远程恢复当 best-effort 处理。

  • 远程侧边栏行直接显示 `saved`(Keychain)/ `最近连接`(host 历史)徽章,不用打开设置就能挑对主机。
  • 活动的 SSH 工作区作为快速重连入口写入会话快照;下次启动时保留远程身份、最后目录、启动命令。
  • 两个信号都从既有本地存储读取,不引入新的 socket round-trip 或 daemon 流量。
  • build 161 已发布,SHA256 `16aa89bea4a212e77aa760e2e78cf90fddb58ff5b383311fb67034bb46c1d313` 在 GitHub、appcast、latest.json、官网下载别名间全部一致。
2026年5月17日

Ghostty 点击崩溃修复:processLinks 调用前补 renderer 状态锁

v1.12.4

头条修复:libghostty 终端核心不再在用户点击(或释放点击)一段链接区域时 use-after-free。Cherry-pick 上游 ghostty-org/ghostty#12463(commit `28f4676b5`)到我们的 Ghostty fork pin —— `mouseButtonCallback` 现在调用 `processLinks` 之前会先 `lock()` 住 `renderer_state.mutex` 并 `defer` 解锁,满足 995e4e375 已经写入但当时调用点没遵守的前置条件。今天本地 `~/.local/state/ghostty/crash/` 里抓到两份新鲜 `.ghosttycrash` 信封(`7d95ca1a-…` 15:45 + `dd5207cf-…` 15:37),都是 `1.3.0-HEAD+bc9be90`、`ReleaseFast`、renderer=metal、font=coretext,minidump 异常都是 `EXC_BAD_ACCESS @ 0x6ed07ff8` —— 一个被回收的 slab 脏地址,正是 `processLinks` 读到 `processOutput` 刚 prune 掉的 scrollback page 的典型签名。因为我们没有 `manaflow-ai/ghostty` 的推送权限,submodule URL 临时切到 `mycode699/ghostty` 的 `cmux-renderer-mutex-fix` 分支(HEAD `9b9c587ac`,仅在 `bc9be90a2` 之上 2 行 diff);上游 PR 已合并,这只是 hold-the-line pin。本次发版没有修改任何 imux Swift 代码。

  • Cherry-pick 上游 ghostty mutex fix (#12463):`mouseButtonCallback` 现在持有 `renderer_state.mutex` 后再调用 `processLinks`,消除与 `processOutput` 的 use-after-free 竞争。
  • 解决在 `1.3.0-HEAD+bc9be90`、renderer=metal、font=coretext 上点击/划选时出现的 `EXC_BAD_ACCESS @ 0x6ed07ff8`(今天本地抓到两份信封)。
  • Submodule pin 从 `manaflow-ai/ghostty@bc9be90a2` 切到 `mycode699/ghostty cmux-renderer-mutex-fix@9b9c587ac`(仅 2 行 diff);imux 自身 Swift 代码未改。
  • 发布 build 160,并将 SHA256 `22d8b0293b09de4737214fc6fb7ae0a60ca33d0cc78aba30acb9ed710777847d` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月17日

Sidebar→终端 拖放修复;远程弹窗布局;ghostty 崩溃导入

v1.12.3

头条修复:从本地或远程文件资源管理器侧边栏拖一个文件到终端面板,现在能可靠地把路径插入终端输入框。问题根因是 SwiftUI `.onDrag` 行在拖拽过程中大部分时间处于 AppKit drag-tracking loop,期间 `NSApp.currentEvent?.type` 通常是 `.appKitDefined` 而非 `*MouseDragged`,于是 `DragOverlayRoutingPolicy.shouldCaptureFileDropOverlay` 在 hitTest 阶段就直接拒掉了 in-app 拖拽,从未到达终端目标 — 在 v1.12.2 的现象是:光标显示拖拽图标,但放下时什么都没发生。Overlay 现在会在 dragging pasteboard 上携带应用内 marker 时(`.iccPromisedFileURL` 或 `ExplorerConversationDragTransfer.pasteboardType`)放行 hitTest;这两种 marker 只会由活动的 in-app 拖拽源写入,普通 `.fileURL` 仍然要求真正的 drag-mouse 事件,避免被 Finder pasteboard 过期数据劫持。同一个版本把 `TerminalImageTransferPlanner.prepareDrop` 的 `.string` fallback 改为先 shell-escape,远程 sidebar 拖拽含空格的路径(如 `/srv/data/has space.txt`)不再被 shell 拆开。Open Remote Workspace 弹窗的目录列表把已填充分支包到 `ScrollView` + `LazyVStack`,并加了对应 `clipShape`,超出 220pt 边界的条目会在 frame 内滚动而不再穿过下方 Toggle / 脚注 / 工具栏。最后,libghostty 的 `*.ghosttycrash` sentry-native 崩溃信封在启动时被新增的 `GhosttyCrashImporter` 导入:扫描 `~/.local/state/ghostty/crash/` 中没有 `*.imported` 标记的信封,读取前 256 KB 拿到 `event_id` / 时间戳 / release / `debug_id`,再以 `.error` 级别 + `ghostty_crash` category 写入 `DiagnosticsStore`,走与原生 imux warning 同一条 `/api/error-reports` 通道(受 `TelemetrySettings.enabledForCurrentLaunch` 限制;原 `.ghosttycrash` 文件永不被删除,因为离线 minidump 排查仍然需要它)。

  • Sidebar→终端 拖放重新工作:in-app 拖拽不会再被 overlay 的 hitTest gate 拒掉。
  • 远程 sidebar 拖拽含空格路径会先 shell-escape,避免 shell token 被拆开。
  • Open Remote Workspace 弹窗的目录列表会在 220pt frame 内滚动;溢出的条目不再穿透下方 chrome。
  • libghostty `.ghosttycrash` 信封在启动时被导入并经 `DiagnosticsStore` + `/api/error-reports` 上报;原文件保留供离线 minidump 排查。
  • 发布 build 159,并将 SHA256 `63da8d7c50ea8df53c303ce1c639aa16d025a5db5421d441265bca6aaae982e8` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月16日

SCM Phase 15:内置 Source Control 面板;远程目录探测体验改进

v1.12.2

头条特性:sidebar 新增 VS Code 风格的 Source Control 面板,由新的 Git 集成层(`GitStatusService` / `GitSCMViewModel` / `GitFileDecoration` / `GitWorktreeWatcher`)驱动文件装饰与实时状态。`SidebarSourceControlPanel` / `SidebarSourceControlMount` 在 host 层完成 `isInsideWorkTree` 探测;非 repo 工作区直接 `watcher.stop()`,不污染 view-model。`ContentView` 切到 `GitSCMSidebarHost`,旧的 `SourceControlSidebarPaneView` 仍保留以兼容 `TabManagerUnitTests`。本地文件浏览器 sidebar 顶部新增可折叠 Source Control 区段。同时改善了远程 SSH 目录探测:`SidebarExplorers` 的 SSH 启动脚本改用 `SSH_ASKPASS` helper 取代旧的 `expect` 路径,让 plain 与密码两路 ssh 命令行保持一致;reconnect loop、`ControlMaster` 复用、两次失败停、`ServerAliveInterval` 与 scrollback 保留全部维持原状。`StrictHostKeyChecking=accept-new` + `NumberOfPasswordPrompts=1` 锁死交互;`OpenRemoteWorkspaceSheet` 显示连接阶段(`RemoteDirectoryBrowser.Phase` / `FailureKind`),host key 旋转时给出可直接复制的 `ssh-keygen -R` 建议(`RemoteDirectoryProbeProcess.refineProbeError`)。

  • Sidebar 新增 VS Code 风格 Source Control 面板,文件装饰与 worktree 状态实时刷新。
  • 本地浏览器 sidebar 顶部新增可折叠的 Source Control 区段。
  • 非 repo 工作区自动停掉 worktree watcher,不进入 view-model 初始化。
  • 远程 SSH 目录探测改用 `SSH_ASKPASS` helper,统一 plain / 密码命令行;reconnect loop、`ControlMaster` 复用、两次失败停、scrollback 保留全部不变。
  • Open Remote Workspace 弹窗显示连接阶段;host key 轮换时给出可直接复制的 `ssh-keygen -R` 命令。
  • 发布 build 158,并将 SHA256 `4caeac08b0e7c0f928e315a173992ce2c50e75f0d8451dbe2aa420a94922c42f` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月15日

恢复终端鼠标交互;远程 SSH 体验合并

v1.12.1

头条修复:终端面板的划选拖拽、右键上下文菜单(Copy / Paste / Split Horizontally / Split Vertically)、点击聚焦都能正常工作了。预路由的鼠标事件守卫之前会拒绝 superview 链落在 AppKit theme frame 而不是 `window.contentView` 的命中,但 `WindowTerminalPortal` 在 contentView 不是 `NSGlassEffectView` 时(即所有 macOS 14/15 + 未启用液态玻璃的 macOS 26)合法地把终端宿主装成 contentView 的兄弟节点(挂在 theme frame 下)。守卫现在把 contentView 和它的 theme-frame superview 都视为合法附着点。回归范围:v1.11.4 到 v1.12.0。该版本同时合并了远程 SSH 单次认证连接(探针与终端会话共享一个 OpenSSH ControlMaster,密码 / 2FA 主机只问一次)、应用内密码弹窗(带可选 Keychain 保存,取代系统级 SSH_ASKPASS 弹窗)、远程侧边栏行点击直接连接(Option 点击在新窗口)+ 工作区复用、前台通知不再短暂清空当前终端/对话区直到切换标签页。

  • 在 macOS 14/15 与未启用液态玻璃的 macOS 26 上,终端面板的划选、右键菜单、点击聚焦全部恢复。
  • 单次认证 SSH 连接:探针与终端共用同一个 OpenSSH ControlMaster,密码 / 2FA 主机只需输入一次。
  • 应用内密码弹窗(可勾选保存到 Keychain)替代系统级 SSH_ASKPASS 弹窗;进程内临时存储让探针与终端复用同一份密码。
  • 点击远程侧边栏的主机行直接连接(Option 点击新建窗口)。重新打开已连接过的主机会聚焦已有 workspace,不再新建副本。
  • 前台通知不再让当前终端 / 对话区在切换标签前短暂空白。
  • 发布 build 157,并将 SHA256 `97229d0465178cb97f40ec1af54a11edfa082b96c511758781e794333f459813` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月14日

用户主动「检查更新」加固

v1.12.0

这个版本加固用户主动触发的「检查更新」路径。手动检查会清掉 Sparkle 的 staged-rollout 桶,避免分阶段灰度静默压制用户主动触发的检查;启动时与每次手动检查时记录一份更新设置的诊断快照;每次访问 appcast 之后记录一行本地 build 与最新 `sparkle:version` 的对比,让日志能直接看出是否真的下发了更新。

  • 用户主动「检查更新」前清掉 Sparkle 的 staged-rollout 桶,让手动检查不再被分阶段灰度抑制。
  • 启动时与每次手动检查时记录一份更新设置诊断快照(feed URL、跳过版本、自动检查状态、rollout 桶)。
  • 每次访问 appcast 后记录一行本地 build 与最新 `sparkle:version` 的对比,从日志能直接看出是否下发了更新。
  • 发布 build 156,并将 SHA256 `737b012200cfa9f66d2b3612120e2537fc2012fc689f74c21d30785add67fb22` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月14日

终端 portal resize 跟随修复

v1.11.9

这个版本修复 terminal portal 回归:分屏或窗口几何尺寸变化后,终端 surface 可能保留旧 frame 或 hit-test 边界,直到后续刷新才恢复。现在 portal-hosted terminal 会及时同步几何尺寸,同时保持拖拽 resize 立即生效。

  • 外部几何变化后同步 portal-hosted terminal frame,不再依赖双重延迟 dispatch 的布局刷新。
  • interactive 分屏/窗口拖拽 resize 路径保持立即同步,不引入第二次迟到 resize 或输入卡顿。
  • 发布 build 155,并将 SHA256 `2ddfa229b492fe6c750dde914677ca0fc106b045da6bfcb79448ef22a5a828bc` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月12日

网站修复:法律页面不再被 308 重定向到 locale 根

v1.11.7

imux 在 `www.iccjk.com` 上的纯网站补丁。Next.js 16 在升级时把 `middleware.ts` 改名为 `proxy.ts`,遗留的重定向集合还列着 `privacy-policy`、`terms-of-service`、`eula`,但这些路径现在已经由 `app/[locale]/(legal)/…/page.tsx` 直接渲染,旧规则把它们短路回 locale 根。从 `web/proxy.ts` 中删除这三条,恢复 locale-aware Next 路由。本次发布不包含 macOS app 改动。

  • 从 `web/proxy.ts` 的遗留 308 重定向集合中删掉 `privacy-policy`、`terms-of-service`、`eula`,让专属法律页面正常返回。
  • macOS app 表面无行为变化:与 v1.11.6 二进制等价,仅做版本号/build 升级,让 Sparkle appcast 和官网元数据与已部署的网站修复对齐。
  • 发布 build 153,并将 SHA256 `b5c02ffb3b53b00d7937dcd9a5120cc048ca7f8be0c24be0e80ddbdbf99aff35` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月12日

本地诊断记录器 + 自建崩溃收集端点

v1.11.6

这个版本移除了第三方 Sentry SDK,改为本地诊断记录器加上自建崩溃收集端点。崩溃和运行时警告默认写到本地磁盘上,只有在「发送匿名遥测」开启时,相同事件才会上报到我们自己的端点。

  • 用本地诊断记录器替换第三方 Sentry 崩溃 SDK。崩溃和运行时警告以 JSON 形式写入 `~/Library/Application Support/imux/diagnostics/<yyyy-MM-dd>/`,方便离线附到工单里。设备上不再运行任何第三方 SDK。
  • 新增自建崩溃收集端点。在「发送匿名遥测」开启时(默认开,可在设置里关掉),相同事件会以匿名 per-install UUID 上报到我们自己的 `https://www.iccjk.com/api/error-reports`。不上传邮箱、license key 或硬件标识。
  • 在设置里关掉「发送匿名遥测」会同时停止上传和 PostHog 事件。本地诊断文件保留在磁盘上,由你自己决定何时删除。
  • 发布 build 152,并将 SHA256 `39fa230952d35ce7b33a169eb3d30def09ed6a1d5458da928d164c38236ad585` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月11日

侧边栏 SSH 路径模块化 + 可选的热点路径采样器

v1.11.5

这个版本把侧边栏的远程 SSH 路径加固成一组单独可测的模块,让远程工作区频繁变动时资源管理器仍然流畅;同时引入一个可选的热点路径采样器,在 CI 中按测得的 P95 预算守每次按键和 socket 派发延迟。

  • 加固侧边栏的远程 SSH 路径:实时远程目录内容(无本地镜像)和本地↔远程的复制粘贴 pasteboard 现在分别是独立、可单独测试的模块。增删或重连远程工作区时资源管理器仍然流畅。
  • 新增可选的 `ICC_HOTPATH_SAMPLER=1` 采样器,采集每次按键的终端 refresh、v2 socket 派发、主线程切换和 session 恢复耗时。CI 用 `scripts/perf-budget.txt` 的 P95 阈值把关。不设这个环境变量时用户感知零变化。
  • 发布 build 151,并将 SHA256 `863889e86a200ed7b6411ab403277584eafc05400c8f2a54455456c6c3a4170a` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月10日

macOS 26.2 鼠标路由栈溢出崩溃修复

v1.11.4

这个版本修复了 macOS 26.2 / build 149 上观察到的一个 P0 栈溢出崩溃(事件号 `0A9291F4-1C32-4E12-AE19-D21A0E0E08CE`)。在 portal/split 重建期间,落到一个已经脱离 hosting view 的中键 / 侧键拖动可能让 AppKit 的鼠标路由器陷入 87000 帧的 `_objc_msgForward` 自循环。

  • 加固 AppKit 鼠标路由抵御 `_routeOtherMouseDraggedEvent` → `_nextResponderForEvent:` → `NSHostingView.hitTest` 自循环。新增的预路由结构健康检查会在 AppKit 路由器接管之前丢弃命中视图已脱离 content view 或带环 responder chain 的鼠标事件。
  • 在 `NSWindow.sendEvent` 入口加纵深防御重入计数:同一个 `NSEvent` 实例的鼠标路由事件再次进入 `sendEvent` 会被丢弃,让其它能穿过窗口 swizzle 的相关循环也无法无限递归。
  • 两道防线只作用于鼠标路由事件(`*MouseDown`/`*MouseUp`/`*MouseDragged`)。键盘、滚动、鼠标移动事件不受影响。
  • 发布 build 150,并将 SHA256 `4028b9ae8eb0a37ce2e9b468086b47a64edb5169fcfe1703d50847d4c67c06eb` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月9日

远程 SSH 工作区跨重启不再丢身份

v1.11.3

这个版本把远程 SSH 工作区的身份信息持久化到会话快照里。退出 imux 再次打开后,远程工作区会以远程身份重新出现,自动重连到上次的服务器和上次的目录。重连完成后,一个一次性横幅会询问是否要重启退出前正在跑的 agent 面板。

  • 远程 SSH 工作区重启后会保持远程身份。会话快照现在保存 SSH 目标、端口、身份文件、ssh 选项、终端启动环境/命令以及你在远端最后访问的目录,启动时通过现有的重连流程自动恢复。
  • 恢复完成后顶部出现一个轻量横幅:「重新启动之前的 agent?」一键重启退出前正在跑的 Codex / Claude Code / Clavue 面板,每个 pane 重新启一个干净的 shell。或者关掉横幅跳过。
  • 敏感内容(中继 token)和每次连接动态分配的传输字段(relay/proxy 端口、控制 socket)一律不写入快照,每次重连都会重新协商。旧版本写出的快照仍然兼容:没有新 remote 字段的工作区会按本地工作区加载,行为不变。
  • 发布 build 149,并将 SHA256 `6973d2124f6fbe2085d8038188e66c8f9434309963dff0a42af9b0210b2929b2` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月8日

VS Code 级别的文件管理器、会话恢复和稳定性修复

v1.11.2

这个版本补齐了文件管理器与 VS Code 的最大体验差距,并完成了一次重要的稳定性 + 会话恢复升级。文件双向拖拉、⌘P 快速打开、重开面板自动恢复 claude / codex 对话历史。

  • 新增 ⌘P 快速打开(Quick Open)—— 本地与远程 SSH 工作区都支持。VS Code 风格 fuzzy 评分(连续匹配、边界加分、CamelCase、basename-exact 大奖),浮动面板含 ↑/↓/Enter/Esc 完整键盘,匹配字符高亮;索引器自动跳过 .git、node_modules、DerivedData 等 build/依赖目录。
  • 新增多行选择(⌘+点击切换、Shift+点击范围)覆盖本地和远程侧边栏,配套批量操作(复制 N 个路径 / 插入 N 个引用 / 删除 N 个)。多行拖动通过 AppKit drag session 把所有选中文件一次性给到 Finder、终端等接收方。
  • 新增本地行内重命名(⌘⇧↩)—— 常用场景不再弹出表单。新增空格键 Quick Look 触发 macOS 原生文件预览。
  • 新增 Finder ↔ 侧边栏双向拖拉:本地默认复制、按 ⌘ 移动;远程单文件走 SSH stdin 上传,目录递归走流式 tar 管道。配套传输进度横幅,区分进行中 / 完成 / 失败。
  • 新增按(workspace, surface)持久化的 session-id —— 重新打开面板自动恢复 claude / codex 之前的对话。SSH 工作区连接时自动把 wrapper 推送到远端 ~/.icc/bin/,让远程 claude / codex 也走同一套会话恢复机制。SSH 终端 scrollback 现在跨重连保留。
  • 修复一个 P0 主线程栈溢出问题:FileDropOverlayView(拖拉文件叠加层)与 MarkdownPanel 在 portal/split 重建后存在 NSResponder 递归引发的崩溃。新增 superview 链 liveness 检查、有界 responder 环检测、窗口拆解时清缓存。
  • 修复远端密码被换之后 SSH 自动重连一直撞错密码导致账号被锁的问题:现在连续两次认证失败就退出自动重连。SSH expect 助手新增密码不回显防御。
  • 重构控制面(v2 计划 S1 阶段):新增 Sources/Control/Envelope 和 Router 骨架,把约 31 个 v2 socket 方法迁到 handler 文件并通过 CommandRegistry 注册;HotPathSampler 作为 v2 计划 §5 性能预算的采集底座落地。
  • 发布 build 148,并将 SHA256 `fb9ac228e517f11ac6d000e53f655b423f43183416e6f62bb2a0a4b9d02a7171` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月3日

远程 SSH 稳定性、工作流就绪度与顶部栏细节更新

v1.10.14

这个补丁版本让远程 SSH 工作区在重连时更稳定,限制大段历史重放,并在启用编排自动化前提供可检查的工作流契约就绪度。

  • 加固远程 SSH 激活流程,在重连边界清理旧终端历史,并从远程终端中移除继承来的 scrollback 重放环境。
  • 减少本地终端恢复时的历史重放量,并禁用远程 SSH 终端重放,避免大量历史导致界面卡死或反复加载。
  • 新增 `WORKFLOW.md` 和 `IMUX_WORKFLOW.md` 的工作流契约解析、验证诊断和设置就绪度展示。
  • 新增更完整的远程 SSH 诊断与恢复动作,包括复制重连命令、打开 SSH 配置、helper/proxy 状态、端口和近期日志。
  • 修复重复顶部栏按钮:可见控制保留在自定义右上角顶部栏,旧 AppKit accessory chrome 会被隐藏。
  • 发布 build 140,并将 SHA256 `cea2c107ceed485b130a3b7db4d0742cd1a7a63efadf9279126e4196c12e5e51` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月2日

本地化、远程资源管理器与侧边栏产品细节更新

v1.10.13

这个补丁版本让界面更接近中文优先默认体验,同时改善远程工作区可理解性和侧边栏收起后的识别度。

  • 扩大应用控件本地化覆盖,尤其是之前容易回退到英文的 Git 管理和工作区操作。
  • 优化左右侧边栏收起后的提示、顶部栏控制和高密度导航,让最小化轨道依然清晰可见。
  • 修复 SSH 连接后远程资源管理器显示问题,侧边栏现在应显示远程目录,而不是回退到本地路径。
  • 细化浏览器面板和顶部栏行为,并记录后续需要继续处理的功能、交互和编排冲突。
  • 发布 build 139,并将 SHA256 `2ea04f7f1f59a29d6048d10b0e9874072da36c684a1b6b8e8e3a574884593b93` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年5月1日

CLI 目标安全与编排规划更新

v1.10.12

这个补丁版本要求会修改状态的 CLI 命令使用明确或 caller 作用域上下文,让后台自动化更安全,同时发布下一阶段编排路线图。

  • 加固 workspace、pane、panel、surface、browser、markdown、notification 和 flash 相关 CLI 目标选择,避免修改命令静默回退到当前选中工作区。
  • 明确 caller-relative workspace/tab 使用说明,破坏性 workspace-action 示例现在都会显示显式 workspace 目标。
  • 改善关闭窗口和最后一个 surface 的处理,让 pane、tab 和 window 回收更可预测。
  • 新增 Symphony 产品档案、分阶段集成计划、工作流契约草案和版本升级规划文档。
  • 发布 build 138,并将 SHA256 `0dd95151e7b2d502337dc351416b32e806bf206f5c9f5294de52495e79c444b9` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年4月30日

设置就绪度与打包更新

v1.10.11

这个补丁版本加强 imux 内部的设置与工作流基础,同时收紧终端运行环境打包和标签页操作本地化。

  • 新增设置就绪度与工作流库基础,让 imux 更清楚地呈现前置条件、配置状态和可复用工作区流程。
  • 明确可复用工作流的使用模型:小型命令配方、agent 提示词配方、验证配方,以及项目专属工作流文件。
  • 统一 app shell、通知、浏览器和文件面板里的共享 IMUX 控件与状态呈现。
  • 更可靠地打包 Ghostty shell integration,并加固发布签名、appcast 生成、本地发布环境配置和 Bonsplit patch 应用。
  • 补齐 Bonsplit 标签页右键菜单本地化,包括简体中文和繁体中文字符串。
  • 发布 build 137,并将 SHA256 `4e88a72dea33c1c618604b2a2f3589b4403946422de853e9e8dfc5951bf14db1` 对齐到 GitHub、appcast、latest.json 和官网下载别名。
2026年4月29日

Clavue 启动 API 配置更新

v1.10.10

这个补丁版本让 Clavue 和 Codex 启动 API 配置更清楚、更容易测试,并且不再把可选通知钩子当作启动前置条件。

  • Clavue 官方 API 配置显示改为 `https://www.clavue.com`,第三方模式继续使用 Anthropic 兼容默认端点。
  • 新增更清楚的官方/第三方标签、一行 API URL 输入、使用默认 URL 和测试按钮,保存后可以直接检查是否可启动。
  • 阻止把 API Key 误粘到 API URL 字段,并允许 CLI 与 API 配置就绪后直接启动联动模式,通知钩子只作为可选配置提示。
2026年4月29日

侧边栏恢复按钮更新

v1.10.9

这个补丁版本确保左侧或右侧边栏收起后仍然能看到恢复按钮,包括紧凑布局和隐藏标题栏布局。

  • 左侧边栏收起后,恢复按钮不再跟随标题栏控件一起消失。
  • 右侧详情边栏收起后,在隐藏面板外新增恢复按钮,确保可以随时重新展开。
  • 发布新的稳定 `v1.10.9` 目标,让 GitHub Release 资产、官网下载别名和 Sparkle 更新源可以随同一个签名安装器一起推进。
2026年4月29日

API 设置保存可靠性更新

v1.10.8

这个补丁版本简化监督器 LLM 与启动 API 设置,保存 API URL、模型和 Key 不再依赖 macOS 钥匙串授权弹窗。

  • 监督器 LLM 与启动 API 凭据改为保存到受保护的本地文件,避免触发钥匙串授权提示。
  • API URL 与模型可以单独保存,不再强制要求先输入 API Key;Key 留空会保留已有保存值。
  • 清除 Key 后会屏蔽旧钥匙串回退值,确保已清除的 API 凭据不会再次出现。
2026年4月29日

Ghostty 配置回退更新

v1.10.7

这个补丁版本在 imux 发现已有但为空的用户配置文件时,恢复 Ghostty 的默认配置加载路径,避免占位配置文件误屏蔽终端默认设置。

  • 当发现的用户配置路径存在但没有可加载设置时,恢复 Ghostty 默认配置加载。
  • 新增回归覆盖,验证显式非空配置加载,以及缺失或空配置时的回退行为。
  • 发布新的稳定 `v1.10.7` 目标,让 GitHub Release 资产、官网下载别名和 Sparkle 更新源可以随同一个签名安装器一起推进。
2026年4月28日

安装包下载可靠性更新

v1.10.6

这个补丁版本修复安装包分发链路,并收紧公开更新元数据的缓存策略,避免用户拿到 CDN 或浏览器中的过期 appcast 与 latest manifest。

  • 加固 appcast 与 latest manifest 的缓存头,让更新检查获取最新元数据。
  • 修复官网发布链接链路,让首页、升级日志、latest manifest、appcast、归档地址和版本化 DMG 下载保持一致。
  • 发布新的稳定 `v1.10.6` 目标,让 GitHub Release 资产、官网下载别名和 Sparkle 更新源可以随同一个签名安装器一起推进。
2026年4月28日

Agent Mesh 命令面板与证据守卫发布

v1.10.5

这个补丁版本加强了监督器驱动的协作能力,新增可复制的 Agent Mesh 命令简报,并阻止缺少终端、会话、证据账本或视觉证据支撑的可信完成结论通过审查。

  • 在监督器面板新增 Agent Mesh 命令面板,可汇总活跃 handoff、证据、审查轮次、触碰文件警告、风险、后续动作和停止条件。
  • 新增可信完成守卫,监督器审查不能再只依赖过期元数据就标记工作完成。
  • 发布新的稳定 `v1.10.5` 目标,让 GitHub Release 资产、官网下载别名和 Sparkle 更新源可以随同一个签名安装器一起推进。
2026年4月28日

Clavue + Codex 联动模式与 agent mesh 发布

v1.10.4

这个补丁版本把 imux 升级成更清晰的多 agent 工作区,默认使用 Clavue + Codex 联动模式,内置可以共享上下文的 helper 脚本,并围绕新的协作模型刷新官网内容。

  • 内置 `clavue` 与 `imux-agent-mesh` helper,用于联动任务上下文、peer 发现、笔记、任务声明和 SDK handoff。
  • 让联动 agent 状态更清晰,用户可以看到 Clavue 与 Codex 是否处在同一工作区,并能安装或启动缺失的同伴工具。
  • 打磨左侧 activity rail、侧边栏控制项和 agent 配置界面,减少遮挡并增强按钮与列表区分。
  • 把官网发布元数据、GitHub 发布目标、Sparkle 更新源、远程 helper 资产和公开下载入口对齐到 `v1.10.4`。
2026年4月26日

源代码管理工作流打磨

v1.10.3

这个补丁版本把源代码管理侧边栏扩展成更快的仓库操作界面,加入仓库历史、右键操作、提交预览、GitHub 提交链接,并同步刷新公开发布文案。

  • 新增最近提交历史卡片,支持提交 diff 预览以及与 HEAD 对比。
  • 扩展文件与仓库右键菜单,加入打开变更、打开文件、复制摘要、更安全的创建标签,以及从提交创建分支。
  • 将 GitHub、npm 和官网介绍同步调整为“源码管理感知的终端执行工作区”。
  • 把 npm 启动器、网站发布元数据、GitHub 发布目标和 Sparkle 更新源对齐到 `v1.10.3`。
2026年4月26日

浏览器拖拽焦点稳定性

v1.10.2

这个补丁版本让浏览器指针拖拽焦点许可一直保持到 mouse-up,拖拽中的浏览器交互可以继续保留焦点,同时不会重新打开后台自动聚焦。

  • 在 WebKit 的 mouse-down、drag 和 mouse-up 传递期间保持显式指针焦点许可。
  • 为直接 mouse-up 和本地事件观察到的 mouse-up 路径增加回归覆盖,确保拖拽结束后关闭许可。
  • 把 npm 启动器、网站发布元数据、GitHub 发布目标和 Sparkle 更新源对齐到 `v1.10.2`。
2026年4月26日

兼容图像能力模型的监督器响应

v1.10.1

这个补丁版本为图像能力模型加入 OpenAI 兼容的监督器响应处理,同时保持已持久化的监督器快照向后兼容。

  • 为使用 `gpt-image-2` 等图像能力模型的监督器流程解析普通与流式 OpenAI 兼容聊天响应。
  • 在监督器任务包中展示图像生成进度文本和生成的 markdown 图片链接,同时不破坏旧工作区状态。
2026年4月26日

刷新设置体验的发布目标

v1.10.0

这个发布目标刷新设置界面的结构、搜索、行布局与导航,同时保持设置持久化和键盘快捷键流程不变。

  • 刷新设置画布、侧边栏、搜索面板、卡片、行、分隔线和导航控件,让配置体验更清晰。
  • 准备 `v1.10.0` 的公开发布元数据,等新的已签名安装包生成后即可同步推进官网和 Sparkle 更新源。
2026年4月25日

新的 1.9 稳定版发布

v1.9.1

这个稳定版让公开安装包、GitHub 发布资产、官网下载别名和 Sparkle 更新源一起推进到新的已签名发布线。

  • 发布新的已签名 `v1.9.1` 安装包,让桌面应用、GitHub 发布资产、官网下载别名和 Sparkle 更新源一起前进。
2026年4月25日

更强的发布校验与更安全的下载历史保留

v1.8.16

这个稳定版让公开安装包、GitHub 发布资产、官网下载别名和 Sparkle 更新源一起前进,同时加强线上站点校验、保留历史下载归档,并让远程守护进程诊断继续匹配已发布的 manifest 元数据。

  • 发布新的已签名 `v1.8.16` 安装包,让桌面应用、GitHub 发布资产、官网下载别名和 Sparkle 更新源保持在同一条发布线上。
  • 加强发布站点校验,要求 live manifest、appcast、归档 DMG、latest DMG 别名、升级日志、首页和公开发布页一致后,才认为发布健康。
  • 同步新发布资产时保留历史网站下载归档和远程 helper 版本目录,避免新版本覆盖旧安装包和远程诊断入口。
  • 远程守护进程状态诊断改为从已发布 manifest 派生 GitHub 仓库,而不是依赖过期的硬编码发布元数据。
  • 当没有配置 nightly 下载地址时,公开 nightly 页面不再静默提供稳定版安装包。
2026年4月24日

新的稳定安装包,并降低路由同步开销

v1.8.15

这个稳定版让公开安装包、GitHub 发布资产、官网下载别名和 Sparkle 更新源一起前进,同时减少桌面路由路径中可避免的同步工作。

  • 发布新的已签名 `v1.8.15` 安装包,让桌面应用、GitHub 发布资产、官网下载别名和 Sparkle 更新源保持在同一条发布线上。
  • 新增可重复执行的 GitHub Actions 质量扫描辅助脚本,并让 macOS 兼容性工作流可以手动指定 ref 运行。
  • 把终端、标签页和 Ghostty 动作路由里剩余的同步跳转收敛到带埋点的包装层后,减少可避免的主线程同步开销。
2026年4月20日

补齐 Codex 打包启动面,并收紧远程恢复后的噪音状态

v1.8.11

这个稳定版继续把公开安装包和官网保持在同一条当前版本线上,同时补齐打包后 agent 启动面的覆盖范围,并减少远程恢复后仍残留失败状态的噪音。现在随包发布的应用会带上 Codex wrapper 与共享 helper 脚本,通知状态变化也不会再无意义触发终端重绑。

  • 把 `codex` 启动器和共享的 `imux-agent-common.sh` helper 一起打进应用资源目录,让安装包内的 agent wrapper 覆盖面与仓库里的兼容 CLI 保持一致。
  • 通知环状态单独变化时不再强制 Ghostty 终端 portal 重新绑定,减少仅仅因为注意力状态变化就引发的实时终端抖动。
  • 远程 SSH 工作区一旦恢复连接,就会立刻清掉工作区级别的旧错误通知,避免侧边栏和通知面继续显示已经不存在的失败状态。
2026年4月18日

更简洁的侧边栏、更紧凑的远程导航,以及更稳的空白面恢复

v1.8.10

这个稳定版继续把桌面主工作面做得更直接: 去掉多余装饰性边框和玻璃感,进一步压缩远程 SSH 导航密度,并补强那些原本会把面板重新打开到空白状态或丢失活动终端面的恢复路径。

  • 移除了左侧活动栏、左右侧边栏以及部分面板 chrome 上旧的玻璃感和额外描边,让这些区域回到更简单的纯色表面,减少无意义的视觉负担。
  • 继续压缩远程 SSH 主机列表与文件树的间距,让它更接近 VS Code 那种高密度布局,同时在窄窗口下仍允许左侧边栏直接收缩到活动栏宽度。
  • 把 Ghostty 终端离屏预热切回正常挂载路径,并为失去面板映射的占位标签补上重绑恢复逻辑,降低工作区焦点落到空白标签或持续黑屏面的概率。
2026年4月3日

更稳的会话恢复与更强的黑屏恢复路径

v1.5.2

这个稳定版聚焦两条会直接破坏连续操作信任的问题: imux 关闭重开后恢复成更薄的面板集合,以及任务完成驱动的工作区切换后前面板偶发变黑。

  • 会话持久化现在会保留更完整的稳定快照,并在最后一个主窗口关闭时强制落盘完整会话,所以重开 imux 时更不容易丢掉之前打开的对话面板和工作区面板。
  • 最近的轻量生命周期保存不再立刻覆盖更完整的近期稳定快照,这让多工作区场景下的关闭再打开恢复结果更可靠。
  • 通知驱动的工作区重排和焦点跳转现在会显式触发渲染恢复,降低任务完成事件后当前前面板偶发黑屏的概率。
2026年4月3日

远程工作区保留与 portal 恢复加固

v1.5.1

这个稳定版聚焦两条会直接打断操作的问题: SSH 最后一个终端退出后远程工作区被带着关闭,以及高频界面切换后终端偶发黑屏。

  • 当远程 SSH 工作区中的最后一个终端因 child-exit 结束时,现在会保留该工作区,便于后续直接在原有远程上下文中重连。
  • 默认开启现有的短时 terminal portal 恢复路径,降低分栏变化、侧边栏切换和工作区切换期间出现黑屏的概率。
  • 把 `v1.5.1` 同步到公开发布面,让官网升级日志、下载端点和 GitHub 发布继续指向同一份当前安装包。
2026年4月2日

更紧凑的工作区界面与更干净的发布面

v1.5.0

这个稳定版继续收紧当前界面打磨,把主工作区做得更接近 VS Code 的密集布局,同时修正输入与侧边栏细节,并让安装包与网站发布面继续保持一致。

  • 继续压缩活动栏、工作区列表和侧边栏头部,让主操作面更接近 VS Code 那种高密度布局。
  • 把终端启动欢迎区缩成简洁状态条,并修复文件检查器场景下右侧边栏宽度卡死的问题。
  • 把受影响的 macOS 输入法组合态回车转发收紧,并继续让 `v1.5.0` 的网站与 GitHub 发布链路围绕同一份安装包目标对齐。
2026年4月1日

面向直接覆盖升级的安装修复版本

v1.2.0

这个稳定版本专门处理桌面升级链路里最后一段阻塞点: 把从 DMG 或转移路径启动的运行中副本移入 Applications,平滑替换现有应用包,并从受支持路径重新拉起。

  • 当 imux 从磁盘镜像、App Translocation 或其他不受支持位置启动时,新增一条“安装并重新启动”的修复路径。
  • 调整修复安装器逻辑,把 Applications 中已有的 imux 应用包视为预期替换目标,而不是把它当作阻断目录。
  • 扩展更新错误处理,让不兼容启动位置也能直接触发修复动作,而不是只停留在无效重试上。
2026年4月1日

产品身份加固与发布入口清理

v1.1.0

这个稳定版本继续清除活跃 imux 体验中残留的继承品牌影子,并把从官网到安装包再到支持入口的发布链路收紧成一条统一路径。

  • 把应用、网站、文档以及多语言公开字符串中的旧仓库、旧公司和旧支持入口统一替换为当前 imux 自有发布面。
  • 重构社区、法务与反馈路径,让用户可见的联系与支持入口都表现为一套明确的 imux 产品存在,而不是带有二开痕迹的继承层。
  • 继续对齐打包后的桌面应用、官网升级日志文案和下载端点,让最新稳定安装包与公开说明始终指向同一条发布线。
2026年3月31日

交互可靠性修复与联动模式快速入口

v1.0.10

这个稳定版本优先修复用户最先接触到的交互问题,包括失焦后首击无响应、Clavue + Codex 联动模式入口过深,以及官网发布线描述需要和安装包版本保持一致。

  • 让主窗口宿主、标题栏控件宿主以及 Settings 类工具窗口都接受失焦后的第一次点击,避免按钮和开关需要点两次才触发。
  • 把 Clavue + Codex 联动模式提升到标题栏快捷按钮和紧凑创建菜单中,并复用 AI Command Center 同一套工作区启动逻辑。
  • 同步调整官网发布文案,让首页、升级日志与用户实际下载到的稳定安装包版本保持一致。
2026年3月31日

品牌一致性清理与侧栏交互整合

v1.0.9

这个稳定版本集中完成了 imux 活跃站点面的品牌一致性清理,把文档与法务页面的发布入口对齐到当前仓库,并收敛了侧栏交互模型,避免工作区导航与工具面板互相打架。

  • 把当前仍在使用的文档、法务、社区与多语言页面中的旧命名统一为 imux,同时保留历史博客与历史更新记录中的旧称呼作为档案信息。
  • 把活跃页面里的 GitHub 链接和发布下载入口统一到当前 imux 仓库与下载路径。
  • 调整侧栏行为,让左侧导航与右侧工具面板可同时工作,并在切换工作区时正确重置文件/远程编辑上下文。
2026年3月31日

安装包路径加固与发布产物校验

v1.0.8

这个稳定版本把 macOS 安装包链路进一步加固,让对外发布的 DMG 更接近标准的拖拽到 Applications 安装体验,同时发布流程会在上传前主动校验产物结构,而不再只是假定它是正确的。

  • 把本地发布和 GitHub 发布统一到同一个 DMG 构建辅助脚本上,避免不同环境下产物行为漂移。
  • 新增发布时校验流程:自动挂载 DMG、检查 app bundle、验证 Applications 拖拽目标,并在安装包结构异常时直接阻止发布。
  • 继续保证官网、发布清单和 GitHub 资产始终指向同一个带版本号的安装包,让运维与用户看到的是同一条稳定真相源。
2026年3月31日

发布打包刷新、品牌资产统一,以及监督器布局加固

v1.0.7

这个稳定版本重新发布了 imux 的安装包,并把品牌化应用资源、官网下载路径,以及监督器侧栏中的长提示词展示统一到同一条发布线上。

  • 通过统一的品牌资源生成器重建了 imux 应用图标、网站 logo、favicon 与 Apple touch icon,让应用和官网视觉保持一致。
  • 把稳定版下载统一到带版本号的安装包路径上,让 GitHub Releases、首页下载按钮和发布清单始终指向同一个 macOS 包。
  • 限制了监督器侧栏中长提示词卡片的展开高度,避免生成的任务包把窄侧栏或对话面板撑爆。
2026年3月30日

品牌细化、迁移快捷入口、协作能力与更新兼容性升级

v1.0.5

这是 imux 当前稳定线的持续优化更新,重点在于继续拉开品牌辨识度、降低从其他 AI 编码客户端迁移的成本、增强工作区内协作效率,并修复旧安装副本的更新兼容性问题。

  • 替换了面向发布的图标、欢迎语和可见产品文案,让 imux 在应用与网站两侧都更统一、更有辨识度。
  • 新增 VS Code、Cursor、Claude Code、Codex 的快速导入入口。
  • 升级源码管理区和协作工具,让快速 pull、快速 push 以及多模型 pane 创建都能直接在 imux 的真实终端里完成。
  • 为磁盘镜像、App Translocation 和非 Applications 启动路径增加了明确的更新兼容性检查,让旧安装副本在升级失败前就能给出可执行的恢复提示。
2026年3月26日

文档与多语言官网扩展

v0.0.1

官方网站新增了完整使用说明、独立升级日志页面,并把公开营销层扩展到全部已路由语言。

  • 新增 /guide 与 /changelog 独立页面。
  • 将官网语言覆盖扩展到全部营销路由语言。
  • 上线 imux 的实用设置说明、工作流说明与升级说明。
2026年3月25日

imux 官网正式上线

v0.0.1

公共站点切换到 imux 品牌与官方域名,并对齐下载地址、仓库地址、元信息和生产环境托管。

  • 将 https://www.iccjk.com 上线为 imux 官方域名。
  • 标题、元信息、页脚、下载地址与仓库地址全部统一到 imux 品牌。
  • 将网站下载入口对接到 GitHub 上的 macOS 发布路径。
2026年3月25日

imux 首个公开产品基线

v0.0.1

首个公开版本围绕原生 macOS 指挥中心展开,核心是终端优先执行,以及围绕终端建立的一整套控制平面。

  • 终端优先的工作区模型。
  • 本地与远程资源管理器,以及基于 SSH 的远程浏览能力。
  • 工作区内文件查看与编辑,以及源码状态可见性。
  • 面向多步骤任务组织的监督器执行流。
升级建议
安装新构建前,先看最新升级日志。
尽量用最新 DMG 替换应用,不要混用多个不一致的应用副本。
升级后重新检查 LLM 设置、SSH 行为和工作区假设。
至少验证一个本地工作区和一个远程工作区,再迁移关键任务。
如果升级后行为和预期不一致

如果升级后感觉不对劲,先回到使用说明重新核对预期工作流,再对照版本发布页确认变更点,并通过可复现步骤、路径和设置状态提交问题。

提交有效问题时最好附带这些信息
imux 版本号,以及问题属于本地、远程还是监督器相关。
涉及的工作区路径或 SSH 目标。
你的预期行为和实际行为分别是什么。
一段可以稳定复现的点击、命令或提示词序列。
如果问题和界面、远程连接或状态有关,附上截图或终端输出。
平台状态

目前只有 macOS 提供正式桌面安装包。imux 当前是原生 AppKit/SwiftUI 客户端,因此 Windows 桌面安装包暂未发布。

imux
imux
macOS AI 指挥中心

原生 Swift 与 AppKit。Ghostty 级渲染。本地与远程上下文、文件操作、浏览器执行、源码状态和监督能力,全部收敛在同一个偏执行者的工作区里。

© 2026 imux。一个座舱,承接以终端为核心的 AI 执行流。

www.iccjk.com