变更日志

VelaTerm 的所有重要变更,最新版本在前。

v0.1.91 是首个公开发布的版本;此前的版本号均为内部测试版本,不在记录范围内。

v0.2.15

最新版本
  • 🆕 新增「新建会话」标签页:围绕居中的输入框选择项目、智能体、模型、推理强度、权限、视图和独立 worktree,再以输入的首个任务启动会话;可从新建会话菜单中的「新建会话…」、标签栏上的星形按钮或空白的中央窗格打开。
  • 🐋 DeepSeek Harness(dsh)以会话视图智能体接入,支持工具卡片、思考过程、权限确认、模型与推理强度切换和上下文用量显示,重新打开后可接续历史记录。
  • 🧩 Copilot、Cursor、Kimi 和 Grok 现在可以在会话视图中运行。
  • 🤖 智谱 ZCode 以会话视图智能体接入:已安装 ZCode 桌面应用时使用其内置的智能体,无需离开会话即可使用 Z.ai 或智谱 BigModel 登录,或在两者之间切换。
  • 📊 ZCode 会话的信息面板显示本轮的 token 数、缓存命中率和生成速度,以及上下文用量和 GLM Coding Plan 的 5 小时与每周用量。
  • 📦 ZCode(macOS 和 Windows)与 DeepSeek Harness 可在会话中通过「一键安装」安装,安装完成后会重新发送失败的那条消息。
  • ⬆️ 点击智能体版本徽标上的「可升级」会打开对话框,运行该智能体自带的更新命令并实时显示输出,还提供「重启智能体」,让会话在新版本上继续。
  • 🔌 包含大量繁忙终端的远程连接在重连后不再反复断开。
  • 🔄 远程服务器重启后,会话在终端启动期间不再一直卡在同步状态。
  • 🔁 会话同步失败时会自动重试,输入框下方会显示当前状态并提供「重试」按钮。
  • 🐢 远端主机负载很高时,SSH 连接不再因等待服务端响应而超时。
  • 🔗 在远程窗口中点击「立即重连」会立即重建 SSH 隧道,不再等待下一次自动重试。
  • 🪟 在 macOS 和 Windows 上,关闭主窗口时会先请求确认,远程窗口保持打开;在 macOS 上应用仍保留在 Dock 中,重新打开主窗口会恢复已保存的工作空间。
  • 🧾 「This turn」列表和 Git 面板中的改动文件会在标签页中打开差异,不再使用弹窗。
  • ⌨️ 输入时不再弹出终端命令补全:Zsh 以灰色行内文字显示历史中最近一条匹配的命令,按 → 或 End 即可采用,只有按 Tab 时才显示列表;可在设置的「命令补全提示」中选择「行内提示 + Tab」「仅 Tab」或「完全关闭」。
  • 💬 在 Artifact 预览中,可以点击页面元素给会话留下评论;页面上标出的选项会列在预览上方,可在各选项之间跳转并选定其中一项。
  • 🔍 会话内查找改用全文搜索,不分顺序匹配全部关键词;没有匹配结果时显示「无匹配」,不再显示「正在加载会话记录…」。
  • 🧰 vspawn、vrefer 等内置技能现在安装到共享的 ~/.agents/skills 文件夹,Pi、ZCode 和 DeepSeek Harness 均可使用,Codex 也不再把每个技能列出两次。
  • 📋 会话视图中的 /code-review 结果以审查发现列表显示,其中的文件位置可以点击跳转。
  • 🌐 会话未开启回复翻译时,提问卡片会提供「翻译」按钮,只翻译这一张卡片。
  • ✂️ 提问卡片上的问题和选项可以选中并复制。
  • 🌳 会话树把属于某个 worktree 的分组和父会话(包括直接在 worktree 文件夹中启动的会话)归到该 worktree 行下。
  • 🌲 嵌套分组在新建会话、执行 Git 操作和合并时,使用最近一个设有 worktree 的上级分组的 worktree。
  • 🔎 会话树处于筛选状态时,重命名的条目不再从筛选结果中消失。
  • ⏳ OpenCode 达到用量上限时只显示一行错误并注明所触及的上限;如果 OpenCode 提供了重置时间,会话会在重置后自动继续。
  • 📸 按下快捷键后,截图浮层出现得更快。
  • 🚀 窗口一打开就显示布局轮廓,启动时加载的代码不到原来的一半。
  • ⚡ vspawn --yes 直接创建子会话,不再显示启动卡片。
  • 🛡️ 代码审计改用 Codex Security 0.8.2,并可使用 DeepSeek 运行;审计表单和「整理到知识库」表单与新建会话使用相同的智能体、模型和推理强度字段,也可填写不在列表中的模型。
  • 🌗 在 macOS 上,主题跟随系统时,标题栏会与窗口其余部分一同变为深色。
  • 📥 一键安装在安装命令执行完毕后才报告完成;Zoo Code 安装不完整时视为未安装,不再在启动时崩溃。
  • 🖥️ 将会话切换到终端视图时,不再因「The initial task was already claimed」而失败。
  • 🧟 旧智能体的进程 ID 被其他程序复用后,会话不再报告「The previous agent is still running」。
  • 🧯 浏览器重新连接后,会话中不再残留断线时产生的 TransportError 错误行。
  • 🪞 开启镜像后,打开和关闭标签页不再把会话视图中的会话变成「已从保存的工作空间恢复」占位卡片。
  • 📜 Claude 会话中含有被丢弃的回复时,历史记录也能正常加载。
  • 🧠 官网模型目录中缺少的 Claude 内置模型仍会出现在新建会话和启动表单中。

v0.2.14

最新版本
  • 🔌 打开多个长会话时,远程连接不再每秒断开重连,这些会话可以正常打开。
  • ⏹️ SSH 与 WSL 连接过程中会显示「停止」按钮,在任何阶段都可以中途停止,包括准备服务端时;连接进行中,密码弹窗的「取消」同样会停止连接。
  • 🌿 在大型仓库中,会话树和分支标签不再导致 Git 进程堆积;后台 Git 读取超过 30 秒会自动结束,不再一直卡住。
  • 🧩 含子模块的仓库中,Git 面板刷新明显加快:子模块内部的修改不再使父仓库列出该子模块,子模块指向新的提交时仍会列出。
  • 📁 分组可以拖到其他项目,其中的嵌套分组和会话一并迁移,之后这些会话会在新项目的目录中启动。
  • ⏳ 打开长会话时显示小巧的「正在加载会话记录…」提示,不再显示「历史记录仍在建立索引」。
  • 🖱️ 会话右键菜单在会话进程运行时显示「结束进程」,包括由其他客户端启动的进程;进程退出后不再显示。

v0.2.13

最新版本
  • 📱 在手机上,以终端视图运行的智能体直接显示终端,并提供浮动输入框,可整段编写或听写消息;页头的「记录」「终端」小按钮用于在两者之间切换,记录页也不再建议切换到会话视图。
  • 🔑 通过分享连接,主机所有者可以打开以终端视图运行的智能体的终端并输入,会话列表中也会显示 Kiro 等没有会话视图的智能体;受邀账号仍只能以只读方式查看记录。
  • 🌐 在闲置会话中手动翻译回复会正常显示译文,不再提示「翻译不可用」。
  • 📜 在长会话中向上翻看时,新到的回复不再被挡在「加载较新的消息」之后;从较早的历史向下滚动时会自动加载较新的消息。
  • 🧭 手机视图不再提供「切换到桌面版」,之前切换过的手机会自动回到手机视图。
  • 🧹 vrun 的运行记录会在任务结束 24 小时后自动删除。

v0.2.12

最新版本
  • 🛑 在会话视图中停止 Claude 回合会立即生效,下一条消息随即发出,电脑负载很高时也是如此。
  • 🪟 Cmd+D 等菜单快捷键和通知点击只在所属窗口生效,远程窗口不再跟着主窗口一起分屏。
  • 🔎 全局搜索在索引尚未建完时也能返回结果,并显示还有多少个会话正在建立索引。
  • ⚡ 全局搜索直接从文件为 Claude、Codex、Pi 和 OMP 会话建立索引,速度大幅提升,也不再占用会话历史缓存;打开搜索结果会准确定位到对应消息。
  • 🧠 会话历史直接读取智能体的原始记录,不再在磁盘上另存一份副本;启动时会删除 chat-index 和 chat-spool 文件夹,释放磁盘空间。
  • 📱 在手机上,以终端视图运行的会话会建议切换到会话视图;确认后,桌面端的这个会话也会一并切换。
  • 👀 分享连接以只读方式列出以终端视图运行的会话,只有主机所有者可以将其切换为会话视图。
  • 🌐 翻译设置新增「默认开启翻译」,决定尚未保存翻译选择的会话的初始翻译状态。
  • 🌳 会话树把使用同一 worktree 的会话归到同一个 worktree 行下。
  • 📄 会话视图中的简短回复(包括带图片的消息)不再显示「读取完整内容」链接。
  • 🔕 清除全部通知标识的按钮移到会话树底栏的左端。
  • 🤖 新建会话与恢复会话弹窗的 Agent 类型列表显示智能体图标,下方空间不足时权限列表向上展开。
  • 🩹 存储繁忙时,会话视图不再提示历史记录包含损坏的记录,稍后会继续加载。
  • 📝 在 Markdown 编辑器中,空列表项或列表内无编号的段落按 Backspace 或 Shift-Tab 即可去掉编号。
  • 🔵 后台任务仍在运行时,会话视图的「任务」按钮显示为青色,与会话树中后台工作的颜色一致;任务列表中运行中的任务也以青色显示,并标注「运行中」。
  • 🗑️ 删除会话时不再提供删除 git worktree 的选项;需要删除时请使用「删除 worktree…」。
  • 🔁 翻译状态在变化时即时更新,不再每 10 秒刷新一次;每次打开翻译设置都会重新检查已安装的智能体。
  • 💤 窗口隐藏时,信息面板暂停采集进程资源。
  • ⏱️ 回合开始或结束时切换会话,会话视图的工作提示与回合计时不再丢失或残留。
  • 🔗 vrefer 的消息编号与 vsearch 一致;对于分叉出的 Codex 会话,vrefer 和全局搜索都会包含父会话的历史。

v0.2.11

最新版本
  • 🧪 实验性 HTML 预览可在会话旁或标签页中打开,随文件变化刷新,并提供源码、控制台和版本操作;原生桌面及跨平台验收尚未完成。
  • 📜 长会话按页加载较早的消息,长内容按需展开,Claude 和 Codex 实时会话中的消息与工具不再重复显示。
  • 🔎 全局搜索更快刷新有变化的会话,中断后继续建索引,并在原文件未变时跳过无法读取的会话。
  • 📊 信息面板的改动文件数可以点开,查看本轮编辑的文件及可获取的新增、删除行数。
  • 🗂️ 归档会话按原项目、分组与父子会话显示为紧凑列表,项目可折叠,并支持全部展开或折叠。
  • 🧩 Codex 账号插件技能出现在补全候选中,补全菜单支持用方向键选择。
  • ⌨️ Windows 和 Linux:Ctrl+Shift+C 可复制终端中选中的文字,快捷键可在「设置 ▸ 快捷键」中修改。
  • 🧹 Claude 终端会话执行 /clear 后,重新打开或切换到会话视图时不再恢复已清除的旧对话。
  • 📏 OpenCode 会话的信息面板显示模型上下文上限。
  • 🌐 翻译新增免密钥 Bing Translator、紧凑的语言设置入口,以及 Claude 和 Codex 编辑消息后重发前的翻译。
  • 🔤 修改翻译引擎或模型后,已有译文继续显示,并可重新翻译。
  • ⏱️ vrun 每 180 秒汇报进度并返回退出码 75,可用 --wait 继续等待,且运行中的任务标签不会被同名任务覆盖。
  • 🧵 Claude 后台任务结束后触发的回复带有独立的任务摘要和回合分隔,历史记录中也会保留。
  • ⚠️ 有后台任务运行时,在终端与会话视图之间切换会要求确认。
  • 🏠 会话未设置工作目录或目录已失效时,两种视图都在用户主目录启动。
  • 🪟 Windows:未注册 WSL 发行版时,启动 VelaTerm 或打开连接面板不再弹出 WSL 安装提示。
  • 🔐 远程登录即使在密码校验期间断开,失败尝试仍计入重试限制。
  • 🏷️ 智能体 CLI 有新版本时,版本徽标旁明确显示 Update: vX 升级链接。
  • 🔵 后台任务指示保持常亮青色,窗格标题栏不再显示状态圆点,标签页和侧栏仍保留。
  • ✍️ 会话输入框边框更清晰,聚焦时显示外圈描边,深色主题的信息面板数值与标签亮度一致。
  • 🌿 克隆项目按钮采用带项目标记的分支图标。

v0.2.10

最新版本
  • 🧩 支持 OpenCode v2,并继续支持 v1;OpenCode v2.0.26 的模型列表可以正常加载。
  • 🏷️ 会话标题旁显示智能体 CLI 的版本;有新版本时,点击版本号可打开官方升级说明。
  • 🗂️ Git 面板最多显示 1,000 个变更文件,并建议将 node_modules 等大型目录加入 .gitignore。
  • 🔤 Git 面板正确显示中文等非 ASCII 文件名,暂存、取消暂存和放弃修改只作用于所选文件,冲突文件单独分组显示。
  • 📜 Git 历史刷新时保留已加载的范围、展开项和滚动位置。
  • 🌿 右栏、状态栏、终端标题和侧栏显示的分支会在切换分支后立即更新,无需重启。
  • 📁 文件树会自动刷新已展开的目录,并标记包含 Git 变更的目录。
  • 🧹 Windows 版自动更新不再在 Temp 文件夹中留下安装包,以前更新遗留的安装包也会被清理。
  • 🪝 Windows 版 Codex、Crush、Kiro、Cursor、Kimi、Antigravity、Copilot 和 Grok 直接向 VelaTerm 报告会话状态,不再经过 PowerShell 脚本。
  • 🖱️ Windows 上 vim 等全屏终端程序可以接收鼠标点击和滚动,滚轮不再变成方向键。
  • 🕘 zsh 终端改回读写用户自己的 ~/.zsh_history,history 和上箭头也能调出其他终端里执行过的命令。
  • 🖥️ Claude 和 Codex 新建会话默认打开会话视图,其他智能体默认使用终端。
  • 🚀 vspawn 支持 --pi 和 --agent <名称>,可以启动任意可接任务的智能体。
  • ⏱️ 模型列表 30 秒内未能加载时,会显示错误并提供 Retry。
  • 🗑️ 可以在「设置 ▸ 智能体」中删除已保存的预设。
  • ⌨️ 截图按钮的提示会显示当前快捷键,剪刀图标也更容易与分享按钮区分。
  • 🧭 右栏打开知识库后,可以正常切回信息等其他页签。
  • ✍️ macOS 上使用输入法在终端输入 / 时,不会再重复输入。

v0.2.9

最新版本
  • ✨ AI 重命名会按智能体记住所选模型和推理强度。
  • ⛔ 生成 AI 标题时,可通过 Cancel、Esc 或点击弹窗外部取消,取消后可再次生成。
  • 🧭 新建规划与执行工作流默认关闭独立 Review,需要时可在启动窗口中启用,或添加 --review 参数。
  • 🤖 Chat 模型选择器会显示加载、错误和空列表状态,并提供 Retry;Codex 的模型选项与当前会话的账号和配置一致。
  • 📊 Info 面板显示平均输出速度的估算值,包含已报告的推理 token,无法估算时显示短横线。
  • 🩺 高级设置新增可选的输入延迟诊断,支持调整阈值,不记录输入正文。
  • ✂️ 实验性截图工具在支持该功能的 Tauri 桌面平台上提供标题栏按钮,关闭快捷键后仍可使用。
  • 🌬️ 会话树、状态筛选和状态栏中的青色后台任务指示点统一使用呼吸动画。
  • 📁 开启状态筛选时新建的分组会保持可见,直到刷新状态或更改筛选条件,同时仍需符合名称搜索条件。
  • 🎨 后台命令日志显示颜色、文字样式和最终进度行,运行条不再遮挡窗格的焦点指示线。

v0.2.8

最新版本
  • 🪟 Windows 切回窗口时,键盘焦点已在页面内则保持不变。

  • 🛡️ Windows 版 VelaTerm 和 vela-server 不再被火绒判定为 Trojan/MSIL.ShellLoader.q。这是一次误报:对话视图执行 shell 命令时,VelaTerm 会先以挂起状态创建进程再恢复运行,恶意程序注入代码时也会用到这一系列调用,因此被火绒识别为木马。现在改为直接正常启动进程,触发误报的代码已经移除。

  • 🔕 Windows 新建会话和刷新模型列表时不再在后台运行 PowerShell;Cursor 会话的状态改为根据终端输出判断,准确度可能略低。

  • ⛔ Windows 对话视图不再把以 ! 开头的输入作为 shell 命令执行,而是显示提示并保留输入内容;历史中已执行的命令仍正常显示。

  • 🔐 通过 SSH 连接使用系统自带 OpenSSH 服务端的 Windows 主机时,不再以 -EncodedCommand 方式启动 PowerShell。

  • 🚀 PATH 较长时,TUI 智能体会话也能正常启动,终端中不再出现被截断的启动命令。

  • ⬇️ TUI 智能体回合结束或请求授权时,视图回到底部;正在查看历史输出时保持不动。

  • 💾 移除 v0.2.7 的实验性对话恢复:Chat 不再显示重复的 Saved submission 消息或中断提示,未发出的排队消息在重启后不再保留。

  • 🔁 规划与执行工作流新增可选的独立 Review 角色,新工作流默认启用,可单独选择其智能体、模型和推理强度;vspawn --plan-execute 支持 --review、--no-review、--review-agent、--review-model 和 --review-effort。

  • 🏷️ 「使用 AI 重命名…」会先显示确认框,可为本次重命名选择智能体、模型和推理强度;读取选项期间对话框直接居中显示。

  • 🔍 名称搜索、状态筛选或标记筛选生效时,仍可拖动会话、分组和项目。

  • ➕ 开启状态筛选时,新建的会话保留在所在分组或父会话下,刷新状态或修改筛选条件后才重新判断是否显示。

  • 🪟 应用窗口的默认尺寸更大,按显示器的可用区域确定;连接窗口在主窗口所在的显示器上居中打开。

  • 🎨 集合改用叠片图标,暗色标题栏的图标略微调暗,侧栏空态的四个按钮宽度一致,表单弹窗的字段标签统一为同一样式。

v0.2.7

最新版本
  • 🪐 Antigravity 以实验性智能体接入对话视图,支持文本、工具、消息队列和原生历史续接;暂不支持图片、回复中插话、交互审批、分叉或回退,完整跨平台恢复验收仍待完成。

  • 🗂️ 集合支持嵌套子集合、项目和会话分组,可从工作区创建或导入,删除集合时保留其中的项目和归档会话。

  • ⚠️ 文件夹迁移为集合后,不得再用旧版本操作同一数据库,降级需恢复迁移前的备份。

  • 🏷️ 智能重命名使用当前智能体的设置,根据对话内容为会话命名,无法使用该设置时提供智能体选择入口。

  • 🌱 新会话可直接使用最新的 shell 环境和新安装的智能体,无须重启 VelaTerm。

  • 💾 实验性对话恢复可在重启后还原已保存的消息、图片和排队输入,并暂停中断的任务等待明确续接;完整原生及跨平台验收仍待完成。

  • 📸 macOS 和 Windows 的 Tauri 桌面版新增实验性截图功能,支持选区、标注、复制或保存原始 PNG;原生桌面验收仍待完成,Electron、浏览器和远程视图暂不支持。

  • 🧵 Claude 后台任务页签显示完整原生对话记录,包括并行工具调用。

  • 🖼️ 每条对话消息最多可附带 20 张图片,单张上限为 5 MiB。

  • 📍 对话消息刻度可预览内容,并直接跳转到此前的用户消息。

  • 🧭 项目、克隆和另存为的目录选择器统一支持路径编辑和位置补全。

  • 🪪 vself 可读取会话保存的设置及父子关系,vflow list 可只读查询关联的规划执行工作流。

  • ⌨️ 终端全选可在快捷键设置中修改,macOS 默认为 Cmd+A,其他平台默认为 Ctrl+Shift+A,仅在终端获得焦点时生效。

  • 🐚 Bash 补全支持以 ~ 开头的路径,旧版 Bash 打开会话时不再出现 PS0 错误。

  • 🛑 子任务 hook 不再改变父会话的对话状态,关闭对话页签会停止其正在运行的 Chat 进程。

  • 🪟 Windows 切回窗口时恢复终端键盘焦点,中文组字时不再显示蓝色横线。

  • 🎨 经典暗色主题的对比度更清晰,桌面图标跟随系统主题,项目图标统一为蓝色,集合行不再显示项目数量。

  • 📚 会话和集合菜单的知识库入口改用更明确的「整理到知识库」。

  • 🌐 通过局域网普通 HTTP 访问 VelaTerm 时,页面可正常打开。

  • 🌍 更新检查携带界面语言,使更新说明能够匹配该语言,更新服务同时支持 Linux Electron 更新器。

  • 🧰 智能体名称中的 Kimi Code 和 Grok Build 不再附带模型版本号。

v0.2.6

最新版本
  • 🐧 Linux 版改为基于 Electron 构建。AppImage 沿用原来的文件名和数据,系统中不再需要安装 WebKitGTK 和 libfuse2,已安装的旧版可通过内置更新器直接升级。

  • 🛰️ 无法通过 SSH 连接的机器(例如另一台电脑上的 WSL 或 Docker 容器)用一条命令安装 vela-server 后即可关联到账号,出现在 Remote 列表中供 AI 对话使用。所有者在主机上授予完整访问权限后,桌面版还可以使用该主机的终端、文件和 Git 面板。

  • 📂 从 Finder、文件资源管理器或 Linux 文件管理器拖到侧边栏的文件夹会被添加为项目。

  • 📝 Markdown 编辑器新增与 Typora 一致的标题、列表、代码块和表格快捷键,支持括号与引号自动配对、Cmd/Ctrl+点击打开链接、专注模式与打字机模式,状态栏显示字数与字符数。YAML 前言显示在正文上方的独立文本框中,未经编辑时保持原样。

  • 🗃️ 文件夹本身不是 Git 仓库、但其中包含多个仓库时,Git 面板提供仓库选择框,操作作用于所选仓库。

  • ⏳ 对话视图中,回复已结束但后台任务仍在运行的会话显示新的「任务运行中」状态(青色圆点),不再一直显示「工作中」。用 vrun 运行长任务的会话同样显示这一状态。

  • 🍴 对话视图中,分叉出的会话首次运行时另开一段自己的对话,源会话不再收到它的消息。

  • 🛡️ 对话视图中,Claude 会话的模式标签跟随 Claude 实际使用的权限模式(例如进入 Plan 模式后),权限确认卡片会显示 Claude 给出的询问原因。

  • 📏 对话视图的输入框可拖动上沿调整高度,双击上沿恢复默认高度。调整后的高度对所有窗格生效,重启后保留。

  • 🗂️ 在侧边栏多选文件夹后,右键菜单可将这些文件夹连同其中的会话一并归档。

  • 📚 集合始终排在侧边栏中的项目之前。

  • 🧠 知识库处理记录只生成一个条目时,点击标题直接打开该条目;条目按钮显示条目标题,不再只显示序号。

  • 📊 Info 面板对 Opus 5.5 等较新的 Claude 模型显示正确的上下文上限,不再显示为 200k。

  • 🎨 其他改动:会话右键菜单中的三个分屏选项收进「在分屏中打开」子菜单;退出确认框会提示已打开的远程窗口也将一并关闭;表单中的下拉框选中选项后立即收起。

v0.2.5

最新版本
  • 🐧 Windows 桌面版支持打开 WSL1 和 WSL2 独立工作区,使用所选 Linux 发行版中的智能体、文件和会话历史。

  • 🔄 WSL 工作区在服务停止后可以重新连接,关闭窗口时可选择停止服务或保留正在运行的会话。

  • 🌐 Claude 会话的输入框选项新增「Chrome」,可随时开启或关闭 Claude in Chrome,对话无需重启。每个会话单独保存选择,未选择的会话沿用默认值。

  • 📟 后台 shell 任务的页签显示所执行的命令和最近的输出,任务运行期间自动刷新。

  • 🧩 未安装 Vela 技能时,状态栏显示安装入口;弹窗介绍各项技能,可直接安装,也可选择不再提醒。

  • 🪪 通过 vspawn 创建的子会话可从 VLX_PARENT_SESSION_ID 获知父会话,智能体可借助 vrefer 和 vtell 联系父会话。新增 vself 命令,显示当前会话及其上级会话。

  • 🖥️ Linux AppImage 在 Fedora 44 等较新的发行版上不再出现空白窗口。

  • 🎨 界面细节:「后台任务」默认显示在输入框下方,移回「更多」后保持不变;对话中的链接无法打开时,提示可右键复制链接地址。

v0.2.4

最新版本
  • 📋 从对话中复制得到的是屏幕上显示的文本:行内代码不带反引号,强调不带星号,链接只取文字,代码块不带围栏,表格单元格以制表符分隔,列表保留看到的标记。富文本格式仍会一并写入剪贴板;右键菜单新增「复制为 Markdown」,用于取得选区对应的 Markdown 源码。

  • ⏳ 「额度重置后自动继续」默认开启。此前自己改过该设置的,保持原有选择。

  • ↩️ 对话回退不再被已经结束的任务阻塞:前台任务在所在回合结束时即视为结束,之后到达的进度不会再把它标记为运行中。确实还有后台任务在运行时,提示中会列出任务名称。

  • 🧹 Codex 的子智能体线程不再出现在历史会话列表中,与 Claude 的 sidechain 一致。

  • ⌨️ 终端补全:用方向键移动过选中项后,按 Enter 与按 Tab 一样接受当前候选。未移动过选中项、选中后又继续输入、或按 Enter 时带修饰键,Enter 仍交给 shell。

  • 📱 Android 分两个渠道构建。默认渠道集成个推及华为、小米、OPPO、vivo、魅族、荣耀推送通道;Play 渠道不含这些通道,任务通知显示为未配置推送通道。

  • 🎨 界面细节:任务列表不再重复显示复选框;通知条与自动继续提示位于对话与输入框之间,宽度与正文一致;手机端收起选项时,发送按钮仍留在输入框旁。

v0.2.3

最新版本
  • 🪟 已有会话可以放进分屏。侧栏右键菜单可把会话在右侧分屏、下方分屏或当前分屏中打开;把会话从侧栏拖到某个分屏的边缘,就朝那个方向分屏,落在中间则替换该分屏显示的会话。选中两到四个会话可平铺到同一个均分的标签页,当前标签页其余分屏里的会话在侧栏有标记。

  • 🗂️ 智能体启动的后台任务在对话旁边以独立页签打开,显示状态、已用时间、Token、工具调用次数、最近上报的工具以及各智能体的阶段。任务有自己的地址,离开任务会回到打开它的那个分屏。

  • 💬 对话视图中,以 ! 开头的消息在该会话的 shell 里执行。输出随产生随显示,结束后显示退出码,运行期间可以取消;命令会保留在 Claude、Codex、OpenCode、Pi 与 OMP 会话的阅读历史中。

  • ⏱️ 新增 vrun 命令,一次调用即可启动长任务并等待它结束,智能体因此能知道任务何时真正完成。这样启动的命令列在终端上方,显示运行时长、日志窗口和需要二次确认的停止按钮。

  • ⌨️ 新建智能体会话有了独立页面和快捷键:可以搜索智能体与预设、沿用上次使用的一项,并选择新会话建在当前会话的同级还是子级。

  • 🧰 输入工具栏可在设置中配置——自行决定消息旁边显示哪些项以及排列顺序。关掉的项和宽度放不下的项都可以从「更多」菜单取用。

  • 📥 在 URL 或 SSH 连接窗口下载文件时,先在本机选择保存位置,随后显示下载进度,并可随时取消。

  • 🗃️ Kiro 会话可以导入项目并查看:导入按工作目录匹配会话,每个会话在支持搜索的只读历史视图中打开。目前支持纯文本记录。

  • 🧠 知识库整理在 Claude 和 Codex 之外支持 Grok、OpenCode、Pi 与 OMP,智能体改由与应用其他位置一致的下拉列表选择。

  • 📱 iOS 与 Android:起始页保存 SSH 与 URL 连接,可登录 VelaTerm 账号并列出该账号下正在共享的设备。主机指纹确认一次后即被记住,扫描二维码可填入服务地址,全部原生界面与系统提示均已翻译成 11 种界面语言。

  • 🔐 Claude 会话按所选的权限模式启动:额外启动参数保持应有的优先级,启动时会与 CLI 上报的模式核对,以跳过确认启动的会话保持相应标记。

  • 🧩 模型菜单列出 Opus 5.5,并在保留内置顺序的前提下补上所选 CLI 上报的其余模型;随 CLI 更新到来的新模型无需重启应用即可出现。

  • 🌱 派生子会话的请求能挺过中断:应答丢失的请求可在重新连接后恢复,已确认过的启动在重试时沿用同一个会话与启动设置,创建失败的工作树会回滚,且不触碰此前已存在的内容。

  • ⚡ 应用启动更快——启动时加载的代码约为此前的一半,知识库、安全审计、导入会话与共享项目改为打开时再加载。

  • 🖼️ 粘贴或拖入消息的图片,在发送前会缩小到长边 1568 像素以内。

  • 🐚 Bash 会话改从启动文件载入 shell 补全,新开的 Bash 会话不再自带一行已经敲好的命令。登录启动文件仍按 Bash 自身的顺序读取。

  • ✍️ Markdown:单个波浪号不再把同一行后面的内容划掉,粘贴进来的 shell 提示符保持可读;以中日韩字符收尾的加粗或斜体能正常闭合,不再把星号显示在页面上。

  • 📨 vtell --steer 把消息送进收件方正在进行的那一轮,不再等待该轮结束。收件方停在提问上时回执为 blocked,因为消息要等那个问题被回答后才会被读到。

  • 🔁 对话视图中,会话状态在回合结束时随即结束,未读标记在真正开始工作时清除,后台工作仍在进行的会话保持运行中标记。

  • 🪟 Windows:Cursor hook 能正常启动;针对 RDP 重连或切换虚拟桌面后键盘输入异常的反馈,窗口层已更新。

  • 🛡️ 安全审计:模型列表与智能体名称改用与应用其他位置相同的启动目录,历史运行记录显示各智能体当前的名称。

  • 🩹 其余修正:对话中的错误提示与居中栏对齐;两种启动弹窗始终可以关闭,已确认但启动失败的请求可以取消;消息与排队消息显示发送者;较长的排队区在固定高度内滚动;编辑文档时空的 HTML 锚点不再显示标记;手机端状态筛选会纳入之后才匹配上的会话。

v0.2.2

最新版本
  • ⏳ 用量上限后自动继续(设置中默认关闭):Claude 或 Codex 被 5 小时或每周用量上限中断后,上限一重置会话就自动续跑。输入框上方显示带重置时间和「取消」按钮的横幅,等待跨应用重启保留;发送消息、回退、清空会话或关闭该设置都会结束等待。

  • 🪟 Windows:OpenCode、Grok、Crush 的一键安装命令加上 --allow-scripts,npm 能生成可执行文件;Cursor、OMP、Antigravity 改为在 %LOCALAPPDATA% 下的实际安装目录中查找,OMP 同时支持 PI_INSTALL_DIR。

  • 🪟 Windows:仍在下载或复制中的文件不再算已安装;安装卡片会等到安装真正结束才提示完成,已保存的失效路径会被新定位到的路径替换。

  • 🧩 对话视图:每个回合的思考、工具调用与中间回复可用「隐藏过程」收起,只留最终回答;工具栏可一次隐藏或展开所有回合,搜索命中被隐藏内容时自动展开定位。

  • 🔐 权限按钮改为显示会话启动时的模式名,不再显示「当前权限未确认」;与按钮重复的「启动设置」一行已移除;以跳过确认启动的会话在状态栏恢复高亮。

  • 🔐 会话未设置权限时,终端与对话视图都改用该智能体类型的全局默认;编辑会话不再把继承来的默认值固化成会话自身的值。

  • ↩️ 知识库各页面新增「返回上一级」:条目回到所属会话,再逐级回到项目与首页;归档会话、笔记与文件夹同样逐级上行。

  • 🌱 派生子会话与父会话使用同一视图:父会话是对话视图时,任务作为第一条消息发送、图片作为附件;父会话是终端时,子会话仍以终端启动并按启动参数注入任务。

  • 🎨 macOS:窗口与标题栏条带在显示前就按主题着色,运行中切换主题立即重绘。

  • 🗜️ Claude 会话在阅读历史中保留压缩前的回合;回退仍会剔除被放弃的分支。

  • 🔎 对话搜索在加载更早历史时保持当前选中的匹配不动;回车移到上一个匹配,Shift+回车移到下一个。

  • 🩹 停在历史中段的对话,切走再切回时恢复阅读位置,不再整片空白。

  • 🧭 模型目录诊断信息只在按住 Option 打开模型菜单时显示;错误行与消息文字对齐;英文界面的知识库入口显示「Archived Sessions」。

v0.2.1

最新版本
  • 🔎 知识库首页新增搜索框:一次查询同时检索会话知识与本地笔记,结果按来源分组。精确匹配优先,只有在没有任何精确结果时才启用模糊匹配(英文缩写、子序列与拼写容错),中文查询仍按子串匹配。

  • 🗂️ 已归档会话并入知识库:左栏按钮改为跳转到此处,不再单独弹出浮层;右侧树新增按原项目分组的「已归档会话」根,主区列出全部归档会话,可就地恢复、整理、导出和删除。

  • 🔍 已归档会话支持全文搜索:结果按会话分组并显示命中数,右侧预览可在多条命中之间逐条定位,高亮与全局搜索一致。打开会话后可在「对话」与「知识条目」两个页签间切换。

  • 🤖 对话视图:智能体可执行文件缺失时,消息下方显示安装引导,而不是原始的启动报错;点「立即安装」会切到终端视图,由那里执行推荐命令。若智能体装在 PATH 之外,引导卡可直接填写可执行文件路径,桌面端还可调用系统文件选择器。

  • 🩹 能够识别看着装过、实际已损坏的安装:全局 npm 安装的包装文件指向的程序被删除或替换时视为未安装;你配置的可执行文件路径若指向这类包装,同样显示安装引导,但不会改写你的设置。

  • 🔐 权限模式入口直接显示所选模式,菜单在每一项旁标出生效时机:已生效,或等待下一回合。

  • 🔽 所有下拉都改用内置的 Select 组件,不再使用原生控件,在 macOS 15 与 26 上外观一致,不再出现系统控件的夹层。

  • ℹ️ 项目与集合的右键菜单新增信息对话框。

  • 🪟 Windows:对话视图启动的子进程(智能体、模型目录和 git 核验)不再闪现控制台窗口。

  • 💡 标题栏的反馈按钮移到分享按钮之后。

v0.2.0

最新版本
  • 📱 VelaTerm 手机 App(iOS 与 Android,早期版本):通过 SSH 或 URL 连接机器,首次连接确认主机指纹;在 App 内加载完整的远程界面,可扫码填写连接信息,也可登录远程账号。

  • 🛡️ 实验性代码审计:在项目右键菜单中用 Codex 或 Claude Code 审计整个仓库、指定目录或文件,或未提交的工作区改动;发现问题时对照源码复核,可导出 Markdown 或 JSON 报告。

  • 📓 本地知识库:在右侧面板打开 Markdown 笔记文件夹,用所见即所得编辑器编辑笔记,按路径和全文搜索,管理标签与收藏,并从回收站恢复已删除的笔记。智能体可用 vkb 查询笔记;文件夹导入在后台进行,保留可展开、可回看、可取消的导入记录。

  • 🤖 规划与执行会话:vspawn --plan-execute 打开规划会话,由它把任务拆分成多个执行会话;vflow 提交拆分方案,vtell --report 回传执行结果供验收,返工时复用原执行会话。工作树可以所有角色共用一个,也可以每个会话各建一个。

  • 🔗 共享的项目和会话现在会在共享链接背后加载主机的真实界面,经对外隧道转发,且只限于授权的项目或会话。设备和授权可在账号页面管理。

  • 🧠 会话知识库支持项目、会话和条目分组,可拖动归组、重命名和删除;同一会话再次整理会替换排队中的任务。

  • 💬 会话视图:长历史可分页加载到第一条消息;所有支持对话引擎的智能体(含 OMP)新建会话默认打开会话视图;同一智能体连续回合合并为一行作者行。

  • ⌨️ 终端:Shell 原生智能提示在 macOS 和 Linux 上为 zsh、bash、fish 和 PowerShell 提供 Tab 补全;候选列表打开时方向键仍可召回上一条命令;终端内核升级到 xterm 6。

  • 📊 Info 面板为 Claude、Codex、Grok、OpenCode、Pi 和 OMP 显示本轮统计:输入与输出 token、缓存命中率、生成速率、工具调用次数和已记录的文件修改。较少使用的输入区控件收进「更多」。

  • 🔐 输入区显示权限模式的已配置值、当前生效值和待生效值;需要重启才能应用时先请求确认。

  • 🔔 通知显示会话名称和简短预览,点击通知可跳转到对应会话;手机 App 可通过系统推送服务接收通知。

  • 🌐 Claude 模型列表改为读取网站发布的模型目录,本地缓存并每六小时刷新,与 CLI 实时上报的模型合并。

  • 🧵 输入区用上下方向键召回此前发送的消息(含排队和待确认的消息),走到末尾可恢复未发送的草稿。

  • ↩️ 回退消息时,该消息携带的图片会放回输入区,可以再次发送。

  • 🔑 macOS 上启动的智能体会继承登录 Shell 的完整环境,默认 PATH 之外安装的工具也能找到。

  • 💡 标题栏新增反馈入口。

  • 🕹️ 标签栏新增游戏中心入口,打开官网游戏中心(PIXEL WING);桌面端点击时在内置浏览器中打开。

v0.1.108

最新版本
  • 💬 Claude、Codex 和 OpenCode 新增实验性对话视图,支持流式回复、思考过程、工具详情、权限审批和提问表单。首次配置仍默认使用终端视图。

  • 🎛️ 对话控件按各引擎能力提供模型设置、消息排队、插话、文件补全和图片附件。

  • 🔎 新增对话内容搜索、文件链接、图片操作与独立对话字体,改善长会话阅读;远程历史渐进加载,工具详情按需读取。

  • 📨 消息提交回执用于断线后的结果核对;结果不确定的提交保留待确认状态,不自动重复发送。

  • 🤝 新增 vrefer 与 vsearch,用于读取和搜索其他会话;vrefer --ask 可让智能体代读。vorch 与 vstat 提供多智能体协调与状态查询。

  • 🧠 记忆条目支持标签、正文直接编辑、未保存修改保护及整理配置;历史导入改进筛选与选择,图谱导航同步完善。

  • 🌐 公网共享客户端支持账号与设备绑定、按范围访问 AI 会话及加密中继连接;访客图片上传和复杂 MCP 表单仍不支持。

  • 🔄 Codex 恢复 ID 会与已落盘历史核对;确认历史缺失时明确报错,不再静默启动空白会话,已有终端进程仍可重新附着。

  • ↩️ 回退范围遵循引擎能力:Codex 仅回退对话,不恢复文件。OpenCode 回退范围处理与目录预检查仍有已知限制。

  • 📦 发布升版保留已锁定的依赖版本。跨平台安装升级及真实 AI 联调验收仍待执行,自动化检查不替代这些验收。

v0.1.107

最新版本
  • 🧠 全局记忆(实验性):由 Claude 或 Codex 把会话整理成按主题维护的共享知识库
  • 🕸️ 代码图谱(实验性):为工作目录建立索引,浏览符号之间的关系,并与记忆相互关联
  • 🔎 会话中可以用 vknowledge 查询代码和记忆
  • 🖥️ SSH 连接可以镜像远端桌面版:标签、分屏和当前会话在两台机器上保持一致
  • 🪟 SSH 远程连接的目标机器可以是 Windows
  • 📥 可以从项目目录导入已有的 Codex、Claude 和 OpenCode 会话
  • 🤖 新增 OMP 智能体
  • 🎚️ vspawn 可以指定子会话使用的模型和推理强度
  • 🌿 vspawn-tree 在集合中同样可用,运行中的 worktree 会话显示分支图标
  • 🔤 搜索优先匹配完整词语,并高亮实际匹配到的内容
  • 🖱️ 鼠标中键点标签即可关闭
  • ⌨️ macOS 浏览器中可以用 ⌘D、⌘⇧D 分屏
  • 💬 输入法组字时画面不再跳动,组字串里能看到光标
  • 🪓 菜单里的分屏只作用于当前焦点窗口,每次分屏都会记入 logs/split.log
  • 📁 远程目录选择对话框会保留你输入的路径
  • ℹ️ 信息面板:启动时间与已运行时长显示在同一行,macOS 增加平均负载
  • 🔑 密码输入框不再出现浏览器自带的显示按钮

v0.1.106

最新版本

工作区

  • 侧边栏新增“集合”(Collection):不与磁盘文件夹绑定的顶层容器。 有些会话本身并不属于某个代码仓库——比如远程会话、浏览器页面,或者只是随手用来跑跑命令的临时终端。此前它们只能放在具体项目里,显得格格不入。“集合”是一个具名的独立顶层容器,在磁盘上没有对应的底层文件夹。由于它没有项目根目录,相关的不适用操作已直接在界面上隐藏,不再在点击后才报错:“新建 Worktree 会话”、“移动到 Worktree…”以及新建会话对话框里的 Worktree 选择器都会对集合隐藏。同时,新建会话对话框中增加了“工作目录”选项,默认指向用户主目录,并配有桌面原生文件夹选择器。如果启动会话时未指定目录,现在会默认从用户主目录开始,不再继承应用程序自身的启动路径(macOS 上此前为 /)。

  • 资源面板现可显示整机资源,而不仅是当前会话。 此前该面板只显示当前会话自身进程树的 CPU 和内存占用,很难判断究竟是当前会话耗尽了资源,还是整台机器本身就已过载。现在面板拆分为了 THIS SESSION 与 SYSTEM 两部分。其中 SYSTEM 部分提供了 CPU、内存和 Swap 交换分区的进度条(使用率超过 70% 显示为黄色,超过 90% 显示为红色),并附带一行平台专属指标:macOS 显示内存压力(memory pressure),Linux 显示按 CPU 核心数归一化后的平均负载(load averages),Windows 则不显示(无对应指标)。如果你只关心当前会话,可以在面板顶部取消勾选 "system"——系统相关指标会随之隐藏,后台采样也会彻底停止。此偏好设置会自动保存,并应用到所有会话的面板中。

  • Windows 和 Linux 现已支持菜单栏,可通过 Alt 键调出。 macOS 自带原生系统菜单,而 Windows 和 Linux 此前只能通过点击标题栏图标来打开设置、检查更新或进行分屏。现在,只需单独按下并松开 Alt 键即可显示或隐藏菜单栏。带有 Alt 的快捷键不受任何影响——由于 Alt 在终端中充当 Meta 键前缀,像 Alt+B、Alt+F 等快捷键依然会直接透传给 Shell;只有未向终端发送任何内容的单次 Alt 按键才会触发菜单栏。菜单栏包含“文件”(设置、检查更新)、“终端”(新建终端、向右分屏、向下分屏)和“帮助”(官网、反馈、分享),并会展示与你的自定义快捷键一致的提示。菜单栏同时支持鼠标和键盘操作:按 Esc 键可关闭当前打开的菜单并隐藏菜单栏,将焦点重新交还给终端。

  • 菜单中的“清除通知角标”可清除以往无法清除的角标。 程序坞(Dock)角标的未读计数包含了未读会话数和未处理的生成确认卡片数。但侧边栏的清除按钮仅在有未读会话时才会出现,且只能清理会话状态。一旦遗留了未处理的提示卡片(例如来自已关闭的窗口或已删除的会话,卡片已无法再在界面上显示),Dock 角标就会卡在 1 上怎么也消不掉。现在新增的菜单项能将所有会话标为已读、将所有待处理的生成请求置为拒绝,并直接将操作系统的角标计数清零。这在 macOS 上尤为实用,因为 macOS 在重启应用后依然会保留之前的 Dock 角标计数。

  • 命令读取文件或等待系统响应时窗口不再卡死。 此前同步的 Tauri 命令是在主线程上执行的,运行期间会导致整个 UI 界面完全卡死。经排查,全部 43 个命令中有 13 个在主线程上执行了 I/O 操作:macOS 请求通知权限时可能阻塞等待用户确认长达一分钟;读取长会话的录制文件时需要按 64 KB 分块遍历几十兆数据;粘贴截图时会直接同步写盘;获取会话工作目录时需要创建子进程执行 lsof。现在这 13 个命令都已移出主线程改为异步执行。按键事件处理依然保留在快速通道中,保持不变。

远程访问

  • 主机端现已显示连接的远程客户端。 会话镜像是双向同步的,远程客户端可以调整主机端的界面布局,但此前主机端根本无法感知是否有客户端接入,更不知道对方是谁。现在标题栏会显示一个 "Mirrored by N"(已由 N 个客户端镜像)角标,点击即可查看已连接客户端的列表,包括客户端名称、IP 地址和连接时间戳。客户端名称会在加密握手阶段上报(若未提供则默认显示为 "Unnamed")。

AI 智能体

  • 账户用量现改为每台机器获取一次,而非每个会话独立获取。 用量配额是按账户计算的,但此前每个会话的“信息”(Info)面板都会单独请求一次用量数据。如果打开十个会话,就会发起十次一模一样的重复请求——这极易触发 Claude 严格的速率限制,导致面板直接显示空白。现在改由统一的后台轮询服务维护一份数据快照,所有会话共享这一快照,并在数据更新时收到广播通知。该服务仅会轮询你当前正在使用的服务商(通过检测是否存在 ~/.claude、~/.codex 或 ~/.grok/auth.json),且不会读取系统钥匙串,避免弹出多余的权限确认窗口。快照会持久化保存到磁盘,因此重启应用后,面板可以直接展示缓存的用量数据,无需等待初次轮询完成。当笔记本电脑从睡眠中唤醒时,也会立刻主动刷新,而不必等待下一个计划轮询周期。若连续轮询失败,重试退避时间最多会延长至 8 倍。此外,在“设置”中,刷新间隔输入框旁新增了明确的开关,取代了之前语义模糊的“设为 0 秒”。

  • 用量刷新失败时明确标记为已过期,而不再假装是最新数据。 此前一旦刷新请求失败,客户端会悄悄返回本地缓存并当作刷新成功处理——不仅更新了时间戳、清除了错误信息,还重置了退避计时器。这导致在触发速率限制时,面板虽然每 5 分钟轮询一次,界面看起来却像一切正常一样。现在刷新失败后仍会展示缓存数据,但会在服务商名称旁显示一个黄色的 stale 角标。鼠标悬停在角标上即可查看提示气泡,了解失败时间、报错原因以及当前显示数据的已存在时长。“更新时间”会如实显示上一次成功同步的时间;系统也会严格遵守服务端返回的 retry-after 重试等待要求(手动点击刷新仍会立即执行)。

  • 各模型每周配额现已显示在用量面板中。 除了整个账户的 5 小时与 7 天用量限制外,用量接口还会返回具体特定模型的每周配额。此前这部分数据一直被忽略,使用 Fable 等模型的用户只能看到账户总用量,而无法查看特定模型的剩余额度。现在这些细分明细会按模型系列分类,展示在总用量下方。

  • 重新打开 OpenCode 会话可恢复其聊天历史记录。 此前应用会通过 opencode session list 来检查会话是否还存在,但该命令只会查询当前工作目录下的会话。由于桌面应用是在自身的启动目录(在 macOS 上为 /)下运行的,因而查不到已有的会话 ID,导致恢复会话时直接默默打开了一个空白会话。现在,会话检查会直接查询指定的会话 ID,并且只有在命令明确确认会话已删除时才会将其视为已删除。遇到其他错误一律视为状态未定,应用会继续尝试恢复会话,避免意外丢失会话历史记录。

界面

  • 使用输入法(IME)输入时现可正常显示预编辑文本。 此前在三大平台上,使用输入法(如拼音、假名等)打字时,未按回车上屏的预编辑文本完全看不见。其原因是一条自定义 CSS 规则:xterm 原本是在一个无尺寸约束的浮层容器中渲染预编辑文本,但此前为了实现终端长文本折行所添加的 right 约束,导致该容器的计算宽度变成了 0,再加上 overflow: hidden,文本便被彻底裁剪隐藏了。现在该规则已被移除,仅保留了对浮层默认白底黑字配色的覆盖(原默认配色与任何主题都不匹配)。与此同时还顺带修复了一个关联问题:xterm 此前为了给输入法候选词定位,会把隐藏的 textarea 放大以匹配浮层尺寸,但事后从未将其恢复缩小,残留的隐形浮层会遮挡该行区域内的鼠标点击与文本选中。

  • 在 macOS 上,Ctrl 快捷键不再触发 Command 绑定的快捷键。 此前在 macOS 上判断修饰键时,程序把 Cmd 和 Ctrl 当成了等价按键。这导致终端原生快捷键与应用快捷键发生冲突:Ctrl+D(发送 EOF)误触发了分屏,Ctrl+W(删除前一个词)误关闭了分屏,Ctrl+F、Ctrl+T 和 Ctrl+O 等按键也会被应用直接截获。由于新建分屏时没有任何提示,经常让人感觉分屏窗口是凭空冒出来的。现在 macOS 桌面端专属使用 Cmd 键作为快捷键修饰键,而其他平台(以及通过浏览器连接到 Mac 的 Web 端)则统一使用 Ctrl。

  • 下拉菜单在选中选项后不再立即重新打开。 此前外层包裹的 <label> 元素会将整行的点击事件冒泡回触发按钮,导致点击选中某个选项后,下拉菜单又瞬间被重新点开。

修复

  • Linux:AppImage 恢复正常启动。 0.1.105 版本的 AppImage 在 Ubuntu 22.04 下会在窗口出现前崩溃,原因是无法启动 WebKit 的辅助进程。AppImage 打包工具会将二进制文件中的 /usr 字符串替换为 ././(通过保持字符等长来进行原地打补丁),这就要求启动脚本必须把工作目录切换到 $APPDIR/usr,路径才能被正确解析。而在 0.1.105 中,为了防止环境变量泄漏到子 Shell 而引入的自定义启动脚本虽然转发了环境变量,却漏掉了切换工作目录这一步。现在启动脚本已能正确切换目录,并配有构建期断言以防问题再次发生。0.1.104 及更早版本不受该问题影响。

  • Windows:通知恢复提示音播放,且点击通知可跳转至对应会话。 Windows 下的通知此前误向通知插件传递了 macOS 的声音标识符。因为系统无法解析该名称,便直接静音处理——导致无论怎么设置,Windows 通知都一直没有声音。此前在两个版本前,为了临时规避一个问题,Windows 通知被绕道交由该插件处理,而那个问题在同一版本中其实已得到解决。现在已撤销该临时方案:通知重新经由原生通道发送,恢复了提示音播放以及点击通知跳转至对应会话的功能。

  • Windows:框线字符与块元素恢复对齐。 终端边框字符此前使用了不等宽的回退字体进行渲染,导致视觉模糊、错位。即便修复了该问题,用于进度条和 Claude Code 吉祥物的块级字符在每个字符单元格右侧仍会留有一条发丝般的细微缝隙,因为回退字体的宽度略窄于终端主字体。现在这两个字符范围均改由应用内置的 JetBrains Mono 字体子集提供,确保字符字形宽度完全匹配。

  • Windows:git 可在完整版 Git Bash 中正常运行。 尽管完整版 Git Bash 安装成功,但在终端中运行 git 仍会提示“command not found”,并反复提示用户安装完整版 Git Bash。原因在于 Git Bash 只有在明确获知自身所在的目录树路径时,才会把 mingw64/bin 添加到 PATH 环境变量中;而应用的 Shell 启动器此前漏掉了该参数,导致仅存在于该目录下的二进制文件(如 git 和 curl)无法被找到。此外,安装引导的下载提示现在会根据宿主系统的架构自动选择匹配的安装程序,不再一律默认选用 64 位版本。

  • Windows:删除 Worktree 恢复正常,重新安装 Kiro 钩子不再产生重复项。 此前删除 Worktree 的命令是在目标 Worktree 自身目录下执行的。由于 Windows 系统禁止删除当前活动进程所在的工作目录,该操作总会因权限错误而失败;现在相关 Git 命令均改在主仓库根目录下执行。此外,钩子检测逻辑此前直接拿正斜杠路径与 Windows 反斜杠路径进行比较,导致检测失败并在每次重新安装时追加重复的钩子条目。

v0.1.105

最新版本

工作区

  • 会话状态、未读标记、进程还活着没有,现在都由后端说了算,各端看到的是同一份。 这些结论过去是各客户端各自从自己看到的信号里推出来的,于是「未读」的实际含义是「在这个窗口里没读过」:浏览器里读完,桌面端那份还在,状态筛选的动态增加又把那一行推回共享名单,右键「刷新状态」都去不掉。状态事件也要等这条连接自己启动过某个会话才注册,所以浏览器新连上来,只有自己开过的会话有圆点,其余一律没有。现在后端为每个会话保存一份权威记录——智能体、状态、进程是否活着、未读标记——客户端连上和重连时批量拉一次,之后任何变化广播给所有端。客户端上报的是观察,下结论的是后端。于是手机上读过一个会话,桌面端的未读跟着清;新连上来的浏览器,从没打开过的会话也有对的圆点。原先散在前端的那几条仲裁规则连同它们的理由和测试一起搬了过去:权威钩子报过一次,此后从裸输出猜出来的结论顶不动它;持续有输出只在「有智能体、不是 codex、且还没权威」时才算忙;1200 毫秒的工作态保持,防止刚开始工作就被紧跟着到的结束事件顶掉。读屏是唯一的例外,它要的是排好版的网格,只存在于客户端:由持有终端尺寸的那一端上报读到的结果,后端裁决收不收,其余客户端的上报一律拒绝。万一哪里不对,在 localStorage 把 vlx-arbitration 设成 frontend 就交回前端旧链。

  • 重启一个会话,不会把对端的标签一起关掉。 pty://killed 原来是空载荷,对端分不清这是重启还是关闭,一律按关闭处理,把 pane 删了再把这个布局镜像回来。现在这个事件会说清是谁杀的、为什么杀,重启就留着 pane 等新进程接上。载荷缺失或者不认识的原因仍然按关闭处理——给一个再也不回来的会话留着 pane,屏幕上就杵着一个死终端,比误关一个本该重启的更糟。

  • 浏览器连上刚恢复工作区的桌面端,不会再把那些会话全部真的拉起来跑。 桌面恢复工作区时只画占位卡片、不启动进程,但这个判断只存在于桌面本地;浏览器跟着镜像布局看到这些会话,分不清「没在跑」和「在跑,只是本端没打开过」,于是挂载终端——挂载就是启动。现在跟着对端布局进来的叶子,后端说底下没进程就画占位卡片。用户自己在本端打开会话仍然算启动意图,不走这条分支;本端正显示着的终端也不受影响,进程退出时不该把你还想读的输出换成一张卡片。

  • 一端改了设置,另一端立刻跟着变。 设置一直是后端权威,但改完不吭声,另一端要等到下次启动才知道。远程模式下这不只是显示对不上:一端关掉「状态筛选动态增加」,另一端开着就照样往共享名单里塞;同时开启的标签数上限小的那端,会把别人的后台标签挤掉。现在写入设置会广播是哪个键变了,各端再走启动时那条路重新读一次,所以「受保护的值不发给远程调用方」这道过滤原样生效——广播里只有键名,从不带值。手机端此前既不上传也不下发设置,这次一并补上。

  • 浏览器先等镜像对齐,再恢复自己的布局。 远程窗口有两份布局来源,一份是自己存在 localStorage 里的,一份是镜像模式下主机推过来的,谁先到都会被后到的那个覆盖。先落本地那份的代价不只是闪一下:挂上一个终端叶子就是真起一个进程,碰上进程早就没了的会话,那次挂载实打实起了个没人会看的 shell,而浏览器端卸载走的是分离不是杀掉,于是这个 shell 就留在那了。现在浏览器先等第一次对齐有结论再恢复,最多等两秒;后端慢或者连不上就退回本地布局,总比空窗口强。手机端和镜像关掉的情况立即放行,不空等。

远程访问

  • SSH 连接时可以给远端起的服务打开镜像模式。 这个开关本来在「远程访问」面板里,但 SSH 连的是远端机器上临时起的无界面服务,那台机器没有面板可点。现在按住 Option 点「连接远程」,SSH 模式里多出一个「多端界面镜像」勾选框,默认不勾。这个值跟着连接走、记在服务进程内存里,不写进远端机器的库:勾了「复用远端桌面版的数据库」时写的就是人家桌面版自己的库,一次 SSH 连接不该顺手改掉别人面板上的开关。选择按主机名记住,下次从历史里点同一台机器会带回来。复用已经在跑的远端服务,现在要求版本、数据模式、镜像模式三者都对得上——任一不同就收掉旧服务重起,重起会丢远端正在跑的会话,所以这个选项和数据库开关一样藏在 Option 后面。

  • 被镜像的那一端会说出来。 跟随端的标签和分屏以前会莫名其妙自己变,屏幕上没有任何东西说明变化从哪来。现在标题栏多了一个 Mirrored 徽标,鼠标悬停有说明。主机自己不显示——开关就在它手里。

  • 文件可以在你的机器和跑着终端的那台机器之间来回传了。 远程访问一直能看到对面的文件,却没法把它拿回来,也没法送一个过去,唯一的办法是在终端里敲命令。现在 Files 面板的文件右键菜单里有下载,标题栏有上传按钮,把文件从桌面拖到某个目录行上也能传过去。两个方向都走和别的功能同一条认证连接,所以局域网浏览器、手机、桌面开的远程连接窗口都能用。传输是分块走的,树下方有一条队列显示进度,切到别的面板也不会中断。下载就是一个普通的下载链接,交给浏览器自己的下载器:流式落盘、显示速度和剩余时间、能暂停能续传,文件多大都行,每个浏览器都一样,手机上也一样。链接里带的是为这一个文件现签的票,几分钟就过期——这台服务的凭证放在请求头里,而浏览器点开链接时不会带请求头。上传时先写一个临时名字,全部传完才改成正式名字,中途断了不会在目标位置留下一个只有一半的文件;目标目录里已经有同名文件的话,一开始就拒绝,不会白传一趟。上传会显示速度和剩余时间,而且断线不算完:某一块失败会退避重试大约一分钟,重试前先问服务端那个临时文件到底传到哪儿了,而不是把可能已经写进去的那一块再发一遍。真放弃了也把这些字节留着——把同一个文件再拖一次就接着传,刷新过页面也一样,只有点取消才会把传了一半的东西扔掉。

AI 智能体

  • Antigravity 和 Copilot 的会话也用首条消息命名了。 这两个智能体此前都没接上自动改名,左树里就是一排「Antigravity 1、2、3」。Antigravity 的钩子事件根本不带用户原文,只给会话 id 和对话记录路径,所以改从对话记录里读第一条消息,后面跟着的元信息块不进标题。Copilot 的事件连事件名都没有,各类事件靠形状区分,于是「有 prompt、没有工具名」的那种就当成用户提交——这样一来,起会话时带的那句初始 prompt 和工具调用都不会被误认。

  • Antigravity 关掉再开,历史对话还在。 续接要靠会话 id,而从启动参数里认 id 的那个解析器不认识 Antigravity 的写法,于是 --conversation=<id> 一直没有锚点可指,重开的会话次次都是空的。

  • vspawn --yes 直接派生,不弹确认卡。 开着「派生前先确认」的人,连开一串子会话时要一张张点。加上这个标志(也认 -y 和 --no-confirm)就跳过这一次的确认卡,按默认设置直接起。它不改设置本身,下一次不带标志的派生照旧会问。

  • 派生卡的模型框现在能打字。 原来它是个纯下拉,只能选列表里有的,可智能体认的标识符远不止那些:带日期的 claude-opus-4-6、带厂商前缀的名字、本地配的别名,都列不出来。现在它是个文本框,右边挂下拉给出已知的那些当快捷方式。列表只是建议不是白名单:打什么就传什么,空着就是不带 --model;输入时列表跟着过滤,自定义标识符匹配不到就自然收起来。

界面

  • 各处的下拉收成同一个组件。 这些下拉本来是照着同一份代码复制出来的,复制了十几遍,然后各自跑偏:面板背景有三种、阴影四种、悬停色三种,触发框高度 26、28、32 都有,选中项还留着多选清单才需要的打勾。现在合并分支的来源与目标、设置里的语言与默认 Shell 与两种字体、智能体面板的智能体选择、两个工作树对话框、新建和恢复会话的智能体类型,以及表单弹窗里最后一个原生 select,都由同一个组件承担。顺带补上了它们原先都没有的键盘操作:上下键移动、回车选中、Esc 关掉下拉而不会顺手关掉外层弹窗、Home/End 跳首尾。状态栏那两个是菜单不是下拉,行为不动;左树的状态筛选是多选,保留打勾。

  • 「远程访问」面板的密码可以看明文。 它一直是个裸的密码输入框,看不见自己打了什么;小眼睛的实现早就有,只是留在连接面板自己的文件里。现在两边共用同一个组件,面板关掉再开,回到掩码。

  • IP 选择器不再套着系统外观。 它原来用的是原生 select,WKWebView 会给它套一层系统样式,配深色面板很别扭,跟上面换掉的那些下拉是同一个毛病。现在改用公共组件,标题从「IP address」缩成「IP」——它左边本来就有说明文字,不用再重复一遍。

修复

  • 每次检查更新都真的问服务器。 开着不关的客户端会被钉死在它第一次看到的那个版本上:查到 0.1.101 之后,0.1.104 发出来了它还在提示 0.1.101,点「检查更新」也只是把那张旧对话框重新打开——因为有待处理的提示时,原来的实现直接返回,根本不发请求。现在每次都发。服务器报了更新的版本就换掉屏幕上那张提示,报同一个版本或者正在下载就保持原样;服务器说没有更新了,那张还挂着的提示就是过期的(版本被撤了,或者你自己已经装过了),一并撤掉。「手动下载」按钮现在打开官网的下载页,它以前给的是更新器自己的包,那个包是就地解压用的,人下下来没法装。

  • 快速销毁终端时不再弹整屏的错误浮层。 xterm 的视口在构造时排了一次滚动区域同步,reset 时又排一次,销毁时两个都不取消。一个终端在同一个任务里开了又关——远程连接时重建会话树正是这样——回调照样会跑,读到的是已经被清掉的渲染器,于是抛错。这个错来自定时器,try/catch 和错误边界都够不着,只能全局兜底,所以匹配得很窄:只有栈或消息里带着那次同步、并且提到渲染器或它的尺寸,才当成无害吞掉并记进请求日志。真崩溃照样弹浮层。

v0.1.104

最新版本

AI 智能体

  • 子任务确认卡给出的是每个智能体自己的模型,以及它真正认识的思考强度参数。 确认卡过去不管面对哪个智能体,都用 --model 和 --effort 拼启动参数,但只有 Claude、Kiro 和 Antigravity 用这个写法——Grok 和 Zoo 叫 --reasoning-effort,Cline 叫 --thinking。于是给其余智能体选一次思考强度,等于往命令行里塞了一个它从没听说过的参数,会话直接起不来。现在每个智能体都给出自己的参数名和取值范围。模型控件也跟着各家 CLI 的实际能力走:能列出目录的(OpenCode、Grok、Crush、Antigravity、Cursor、pi、Kiro)会去问它要,给出真实列表;只有固定几个的(Claude、Codex、Kimi Code)给出那几个;剩下的给一个文本框,附上它期望的写法示例。没装或者没登录的智能体会直接说列表取不到,而不是一直转圈。选「Default」现在是把继承来的设定清掉,而不是留着旧值;选思考强度也不会再顺手把父会话传下来的模型弄丢。

  • 从 Kimi Code 会话派生的子任务仍然是 Kimi Code。 派生时用来继承父会话智能体的那张表里漏了 Kimi Code,于是它的子会话会悄悄退回默认智能体。

工作区

  • 分组建好之后还能改绑 worktree。 过去 worktree 只能在建分组的时候选,选完就定死,想换只能把分组删了重建。现在右键分组选「Move to Worktree…」,可以新建一个 worktree、绑到已有的某一个,已经绑过的分组则是改指向。改动只落在分组本身:分组里已有的会话保持它们创建时的目录——正在跑的会话没法在自己脚下换目录——之后新建的会话才会起在这个 worktree 里。

  • 镜像模式现在覆盖整棵左树。 它此前同步的是选中项和折叠的面板,搜索框、状态与标记过滤留在本地,理由是同步过去会打断正在查东西的人。这个理由说反了:镜像的意思是两个窗口持有同一份状态,不是一边把另一边的按键重放一遍——这边开着的过滤条件,那边也开着。真正打断人的,恰恰是两边看到的树不一样。现在左树的每个投影都跟着走:分屏结构、投影的名字、搜索词、状态与标记过滤,还有各自独立的折叠状态。快照格式升到第 2 版,版本对不上的一方会停止镜像,而不是套用半帧内容,所以升级期间一直开着的窗口刷新一下即可。

界面

  • macOS 上关窗口问的问题和退出一样了。 ⌘Q 和菜单里的退出都会走应用自己的确认,但红色关闭按钮是直接把窗口销毁——而承载确认对话框的 webview 就在那个窗口里。结果要么根本没有确认,要么只剩下降级的原生弹框:没有「保存工作区」勾选框,文案也没翻译。现在三个平台都会先把窗口留住,等你回答。

  • 「保存工作区」默认勾选,而且改了之后记得住。 丢掉布局的代价比多存一份用不上的快照大,所以这一项默认是勾上的。它此前还会忘事:这个设置要经过 400 毫秒防抖才落库,而退出会在这个窗口期里把进程杀掉,下次启动对账时便以旧值为准,把你的改动改了回去。现在退出前会先把这次写入刷下去,并且最多等 600 毫秒,后端卡住也不会让确认按钮一直转。(由 FarhadGSRX 贡献。)

  • 远程连接面板里的密码可以看明文。 URL 密码和 SSH 密码各有一个眼睛按钮,在掩码和明文之间切换。显示状态只属于这个输入框,面板关掉就复位,不会把密码留在屏幕上。

  • 左栏过滤器的角标会把所有生效的过滤条件都数进去。 标记过滤此前只是把按钮点亮、不作声,于是两个条件同时开着时角标却显示 1。现在状态和标记一起计数,和下拉里打勾的数量对得上;只开一个状态过滤时仍然保留那个彩色圆点。

修复

  • macOS 上的自动更新恢复正常。 v0.1.103 的安装包里混进了 ._VelaTerm.app 这类 AppleDouble 伴生条目,而更新器会去掉每条路径的第一层——这类条目去掉之后就成了空路径——于是它干脆拒绝解包。两个架构都中招,所有用 macOS 的 v0.1.103 用户都卡在了那一版。现在打包不会再写出这些条目。

  • 应用主题与系统不一致时,原生控件跟着应用走。 切换主题只改了应用自己的配色,没有同步 color-scheme,而那个值只在启动时按系统偏好种下一次、之后再没变过,于是系统深色 + 应用浅色时,复选框、下拉和滚动条还是深色的。(由 FarhadGSRX 贡献。)

  • 干净 clone 下来能编译了。 Rust crate 在编译期就要嵌入 ../dist,而 dev 命令并不产出这个目录,于是新克隆的仓库还没跑起来就先编译失败。现在构建脚本会在目录缺失时把它建出来。(由 FarhadGSRX 贡献。)

v0.1.103

最新版本

修复

  • Windows 上 Codex 会话不再拒绝启动。 每次开 Codex 会话都报 unexpected argument '--codex-hook' 然后立即失败,原因是生命周期钩子的 TOML 表通过命令行传入时带着空格和双引号,而 npm 安装的 codex.cmd 要经过 cmd.exe 重新解析——cmd.exe 会吃掉引号、按空格把值拆成多个参数。现在 Windows 上跳过钩子注入,状态检测退回到已有的 notify / screen / busy 启发式方式,仍然能报告忙闲状态,只是不如钩子精确。macOS 和 Linux 不受影响,继续使用钩子。

  • 回滚了 v0.1.102 的 Windows 输入法预编辑修复。 那个修复在恢复中日韩输入法预编辑浮层的同时,给它加了背景色、1px 边框和圆角,导致打字时终端里会冒出一个小框把拼音圈住——终端里不该出现这种框。由于浮层尺寸、helper 容器的几何计算和 textarea 清理三处互为前提,只能整体退回。Windows 上盲打中日韩的问题仍然存在,跟踪在 issue #6。

v0.1.102

最新版本

AI 智能体

  • 智能体预设:多个兼容的 CLI 可以并排使用。 过去每种智能体都写死了一个可执行文件,于是一个分支版本、一个 nightly 构建,或者另一个说着同样协议的 CLI,都没有地方安放——只能去改现有类型的启动参数,改完原来的那个就没了。现在一个预设自带可执行文件、图标和启动参数,并出现在新建会话菜单里,与内置类型并排。会话会记下自己是由哪个预设创建的,因此 Fork 出来的会话仍然用同一个可执行文件;在桌面端创建的预设也会出现在已配对的浏览器和远程客户端上,图标一起带过去——因为图标是以数据的形式传输的,而不是某台机器上的一个路径。已有会话完全不受影响:旧版本留下的数据库,启动后和以前一模一样。

  • 子任务确认卡可以挑模型和推理强度,一处回答,处处生效。 智能体请求派生子任务时,确认卡现在可以选模型,智能体支持的话还能选推理强度,两者都按父会话自己的启动参数预填,因此常见情况点一下就完事。在卡片上换成另一个智能体,两项会重新推导,一个 CLI 的模型名不会再跑到另一个 CLI 的命令行上。这张卡会出现在每个已连接的客户端上,在其中一个上回答,其余的会一起消失;第一个回答还会在服务端认领这个任务,于是在同一秒里用手机和桌面各确认一次,也只会创建一个 worktree 和一个子会话,而不是两个。

工作区

  • 镜像模式:所有客户端共用同一套布局。 终端数据流一直是共享的——一个 PTY,一条字节流——但围绕它的那套排布只存在于各个客户端自己的浏览器存储里,因此局域网里打开的浏览器有自己的一套标签和分屏,在一边重新排布,另一边毫无反应。打开镜像模式后,标签、分屏、当前会话、侧边栏选中项和折叠的面板都会发布给每个客户端,并被所有客户端跟随。开关由主机在远程访问面板里控制。在任何一端重新排布,另一端都会跟着变;某个会话离开本窗口的布局时是被分离,而不是被杀掉,因此跟随对端永远不会终结别人的进程;应用对端布局时也不会把键盘从正在本地打字的人手里抢走。手机不参与——手机上是两级导航,是另一种形态的界面,把桌面的分屏树复制过去对谁都没有好处。

  • 右栏的 Git 页签做成了能用的 Git 客户端。 它以前只会列出改动过的文件。现在它可以暂存和取消暂存单个文件或整组文件、放弃更改、写提交(含修改上一次提交),并显示提交历史以及每个提交涉及的文件和差异——分成已暂存、已修改、未跟踪和已提交几组,可以折叠起来。路径统一从仓库根目录处理,因此在子目录里打开的会话,操作的就是它显示的那些文件;处于分离 HEAD 状态时会如实标出,而不是显示一个叫 HEAD 的分支。

界面

  • ⌘Q 现在问的问题和关窗口一样。 应用菜单里的退出项原本是系统自带的那个,按下去直接终止进程:按 ⌘Q 会跳过关闭按钮会弹的「保存工作区」确认,同一个意图,换个方式表达行为就不一样。现在两条路都走同一个确认。如果显示确认的那个窗口在此期间重新加载或崩溃了,再按一次 ⌘Q 会重新询问,并回退到原生对话框,而不是让应用退不掉。

  • 快捷键提示显示的是真正能用的按键。 各平台的默认键位本来就不同,而浏览器会把 ⌘/Ctrl 加字母的组合留给自己——⌘D 是收藏,⌘T 是开标签页——所以当 VelaTerm 以网址方式打开时,macOS 上应用自己的 ⌘ 快捷键根本传不到页面。现在普通浏览器标签页在所有操作系统上都改用 Ctrl+Alt 这套键位,桌面应用和远程连接窗口仍然用 ⌘。工具提示和空标签页上的提示会显示当前实际生效的键位,包括你自己改过的,而不是写死的 ⌘ 组合;终端拦截的也正好是应用已经占用的那些组合,所以给某个操作换键,拦截也跟着换过去。

  • 字体预设覆盖了 Nerd Font 和中日韩字体,自己填的字体没装会明说。 预设列表加入了常见的 Nerd Font 和中日韩字族;手动输入的字体会回显并检查一遍:系统里没有这个字体,设置页会直接说出来,而不是悄悄回退到一个和你要的完全不像的默认字体。

  • macOS 上的输入框不再自动大写或自动更正。 系统的自动首字母大写、自动更正和拼写检查过去对应用里的每一个输入框都生效,会话名和命令输入框也不例外,于是「npm」被改成了「Npm」。现在这些在所有地方都关掉了。

Windows

  • 输入中文、日文、韩文时,预编辑文字和候选词窗口又能看见了。 这两样此前都是隐形的——只能盲打,按下回车才看到结果。原因出在我们自己的两条 CSS 规则上:承载预编辑浮层的容器宽度塌成了 0,浮层的 right 偏移在这个容器里算下来什么都不是。候选词窗口跟着一起消失,因为操作系统是按浮层的矩形来定位它的。现在浮层重新画出来了,配色也用上了应用自己的;承载它的那个隐形输入元素在组词结束后会释放自己占据的区域,因此在那一块上点击和拖动能落到终端上,而不是被一个一直盖着的空元素挡住。

  • 原生标题栏跟随浅色/深色设置。 应用保留了系统标题栏,而 Windows 在没被告知之前一直把它画成浅色,于是深色界面上方顶着一条白边。现在它会与应用保持一致,后续打开的窗口——比如 SSH 和远程连接窗口——也一样。选择「跟随系统」则把控制权交回操作系统,而不是钉死一个值。

  • 冷启动时那个多余的小方块没有了。 单实例插件会创建一个隐藏的消息窗口,却一直没给它自己样式里承诺的透明属性,于是 Windows 偶尔会把这个零尺寸窗口撑到最小尺寸,在启动过程中画出一个小方块。现在它是真的透明了;单实例行为没有变化。

性能

  • 远程访问首屏要加载的东西少了很多。 静态资源现在按需压缩,并带上缓存校验标记,因此第二次访问是重新校验而不是重新下载;语言包和终端的可选渲染器也改成用到时才加载,不再算进首屏的那一份。两项加起来,首次传输量降到原来的五分之一左右。

修复

  • 派生出来的子会话,现在和请求它的那个会话以同样的方式启动。 子会话过去既不继承父会话的权限模式,也不继承它的启动参数,于是一个跳过确认在跑的会话,它的子会话起来后反而要你确认,父会话上钉住的模型也丢了。现在两者都会继承,取不到就回退到该智能体类型的全局默认值——和「新建智能体会话」菜单用的是同一份。

  • 重连远程窗口不再误报「认证失败」。 窗口重连时,新的 WebSocket 和它取代的那个会互相竞争;失败一方的拆除被当成认证失败上报,于是横幅指责一个完全有效的配对被拒绝了。

  • 分组不能再被拖进自己的子树里。 把一个分组拖到它自己的某个后代上,会让整条分支从树上脱落,里面的会话从侧边栏消失,直到手工修复数据库才能找回。现在这个移动会被拒绝。

  • 从别的工具里启动 VelaTerm,智能体输出的颜色不会丢。 终端会继承启动它的那个程序的环境,因此从导出了 NO_COLOR、CI 或 FORCE_COLOR=0 的 IDE 或智能体框架里启动,VelaTerm 里的智能体 TUI 会全部渲染成单色,尽管终端本身声明支持全彩。现在会话启动时会丢弃这些继承来的值;你自己在 shell 配置文件里导出的同名变量仍然生效,因为那份配置是在会话内部执行的。

v0.1.101

最新版本

远程访问

  • 可以选择分享链接使用的地址——Tailscale 地址现已显示。 地址列表过去只接受传统的私有 IPv4 网段,因此像 Tailscale 这样从运营商级 NAT 网段(100.64.0.0/10)分配地址的 VPN 组网,会被静默排除在远程访问面板和配对链接之外——尽管服务器早已可以通过这些地址访问。这些地址现在会列出;VPN 隧道排在最后,永远不会成为默认项。面板中新增的 IP 选择器(启动前和运行中均可见)会列出每个候选地址及其网络接口名称,并标记 VPN 隧道;选择某个地址后,其 URL 会移到最前,配对链接也会以该主机重新生成,因此复制的链接在只能通过 VPN 访问本机的设备上也能直接使用,无需手动修改 URL。配对链接下方的二维码可直接用手机扫描。选择会被记住;如果所选接口消失,面板会回退到"自动",但不会忘记你的选择。服务器本身保持不变,仍在所有接口上监听。选择一个在服务器启动后才出现的地址(例如稍后才连接的 VPN),现在复制的 URL 和二维码也会立即更新,而不再是只有配对链接跟随、其余要等到下次重启;VPN 隧道在所有平台上都排在 LAN 地址之后,服务器停止时所做的选择会决定启动后的第一个配对链接,重叠的链接重新生成也不会再用旧链接覆盖新链接。

  • 共享现在可以在重启后继续使用。 过去配对令牌在服务器每次启动时都会重新生成:只要退出并重新打开 VelaTerm,所有已分享的链接就会悄悄失效,每部手机都得重新配对。现在,令牌、已配对设备和设备封禁列表都保存在数据目录下一个仅所有者可读的文件里:已配对的设备在重启后仍可通过保存的 URL 直接重连(访问密码仍是必需的第二重验证),被撤销的设备也依然保持撤销状态。VelaTerm 还会记住共享处于开启状态:在服务器运行时退出应用,下次启动会自动在同一端口恢复服务——桌面应用和通过 --serve 运行的无界面服务器都是如此;如果是您自己停止的服务器,下次启动则不会自动开启任何东西。即使自动启动失败(例如端口被占用),应用也会正常启动,远程访问面板会显示失败原因。端口输入框现在会记住实际使用过的端口,而不再重置为默认值;「重新生成链接」仍是显式的作废开关:它会立即签发新令牌、让所有旧链接失效并覆盖保存的状态。访问密码本身永远不会写入磁盘——只保存一个内存困难型哈希(Argon2id)。

安全

  • 已配对设备无法再管理共享本身。 此前,任何已配对的浏览器都能调用与桌面应用相同的管理命令——创建新的配对链接(这同时会清空设备屏蔽列表)、列出并吊销其他设备、停止或重新配置服务器——而设置存储会把完整的设置表交给每个客户端,其中包括访问密码的内存困难哈希,以及下次启动要读取的自动启动设置。管理命令现在仅限桌面应用和 Electron 外壳使用;设置 API 会在已配对设备的每次读取中过滤远程访问相关键和 Gitea 令牌,并拒绝对它们的写入。已配对设备保留配对的本来用途——终端会话和完整的 shell 访问——但再也无法读取密码校验值、邀请或驱逐其他设备,或篡改下次启动使用的端口。读取、写入或删除已存储机密的命令——Gitea 令牌和已记住的主机密码——现在对已配对设备同样会被拒绝;接收路径的命令——读取、预览、写入、创建、重命名和删除,以及显示文件的 git 差异或选择克隆仓库的目标文件夹——会先解析符号链接,再拒绝位于 VelaTerm 自身数据目录内的路径(配对状态和密钥就存放在那里),其他所有路径照常可用,因此远程文件浏览和编辑不受影响。一项测试会枚举每个接收路径的远程命令,新命令无法悄悄绕过这项检查。当这些保护拒绝某个请求时,浏览器现在会显示经过翻译的提示,而不是原始的英文错误。

  • 吊销设备或重新生成链接,在双实例配置下也不会再丢失。 在开启自动启动的无界面 --serve 服务器上,两个服务器实例各自持有保存的配对状态副本并整体回写:通过一个实例完成的吊销或新配对链接,可能被另一个实例悄悄撤销。同一进程内的所有实例现在按数据目录共享单一配对状态:吊销与轮换立即在所有位置生效,文件只由一处写入,并且在真正的重启之间仍是权威数据来源。

  • 反复失败的登录会被限速。 访问密码的校验使用 Argon2id,代价刻意高昂——而任何能连到端口的人都可以尝试。同一地址失败五次后,后续尝试会在任何哈希计算开始之前被拒绝一分钟;哈希计算本身现在也在服务器事件循环之外执行,并对并发校验数量设有硬性上限:大量错误密码既不能再用内存困难哈希拖垮服务器,也不能拖慢已连接设备的响应。该限速器只存在于内存中,随服务器重启而重置;真正的屏障仍是配对令牌和密码。该限制现在由使用同一数据目录的所有服务器实例共享——--serve 双实例配置不再使尝试次数翻倍;并且在密码校验开始前就会预留一次尝试,使来自同一地址的并行请求无法绕过限制。被限流的浏览器现在会在登录界面看到专门的限流提示,而不是被告知密码错误;限流也不再像密码错误那样被记住:等待结束后,下一次尝试无需刷新页面即可再次通过。中途放弃的尝试——密码还在校验时标签页就被关闭——现在会立即释放其预留的名额,而不是在这一分钟剩下的时间里继续计入该地址;登录成功也只释放自己的预留,而不再清空该地址的全部记录:在共享网络地址背后,某人正确登录不再重置攻击者的尝试额度,已记录的失败只随其所在的一分钟过期。

  • 磁盘上和日志中的机密得到更谨慎的处理。 保存配对状态的文件和端到端加密密钥现在从创建那一刻起就仅所有者可读,而不是先写入再收紧权限;存有密码哈希的会话数据库同样仅限所有者访问。无界面 --serve 不再把配对链接中长期有效的机密打印到日志:当输出不是终端时,链接会被隐去,只显示一条提示;--print-pairing 可显式恢复原行为。设备注册表上限为 32 条,名称长度受限,已配对客户端无法让保存文件无限膨胀;保存吊销或新链接失败时,错误现在会返回给调用方,而不是只留在日志里。自动启动不再顶替已手动启动的服务器,过期的自动启动错误在您自行停止服务器后即会消失。

修复

  • 现在也可以在 Electron 外壳中管理配对。 生成配对链接、列出已配对设备和吊销设备此前只作为桌面(Tauri)命令存在;Electron 外壳和浏览器客户端使用的 WebSocket 分发器会返回 "Unknown command",导致远程访问面板在那里无法使用。现在这三个命令在两条传输通道上都经过同一套核心函数,两者不会再产生偏差;回归测试覆盖了新的分发路径,包括对一个正在运行的本地服务器实际生成配对链接。

v0.1.100

最新版本

AI 智能体

  • Kiro CLI 成为一等公民会话类型。 Kiro 会话在树里有自己的节点,状态点由 Kiro 自己的生命周期 hooks 驱动,如实反映工作中与等待处理;一个回合结束会发通知;重新打开节点自动接回同一段对话;启动参数、跳过确认开关、经 vspawn 派生子会话也都齐了——其它智能体已有的能力,Kiro 现在都有。VelaTerm 把你的默认 Kiro agent 克隆成自己的 vlx-term agent,只在副本上加一份只观察、不干预的生命周期 hooks 再启动它,你自己的 agent 文件全程不动,提示词、工具和 MCP 服务器原样带过来。Kiro 没有权限请求 hook,所以它等你批准的时候,状态点仍然显示为工作中。

修复

  • 终端里启动的程序不再继承 AppImage 自己的环境(Linux)。 AppImage 的启动器会把 PYTHONHOME、PYTHONPATH、PERLLIB、QT_PLUGIN_PATH 和 GStreamer 的插件路径指向包内的临时挂载目录,并把包内目录插到 PATH、LD_LIBRARY_PATH 的最前面。终端会把整个环境交给它启动的 shell,于是系统的 python3 跑到包里去找标准库,根本起不来;其它动态链接的程序也会优先加载包里的那份库,而不是系统的。现在 VelaTerm 在启动 shell 或外部工具之前先把这些包内路径剥掉,你自己设的值保持不动。APPDIR 和 APPIMAGE 仍然可见,靠它们判断自己是不是从 AppImage 启动的程序照样拿得到答案。只有 AppImage 版本受影响,deb 包、macOS 和 Windows 行为不变。

v0.1.99

最新版本

终端

  • Shift+Enter 换行,不再直接提交。 终端协议里没有「带修饰键的 Enter」这种编码,因此 Claude Code、Codex 这类智能体命令行收到的只是一个普通回车,话还没写完就被发了出去。现在 VelaTerm 改发 ESC+CR,与这些工具在 iTerm2 上配置键位映射后期望的序列一致,多行输入终于可用——macOS 也包含在内,此前那里根本没有安装自定义按键处理。输入法组词期间不受影响,Enter 仍用于上屏候选词。

项目与组织

  • 单个会话的状态可以单独刷新。 在启用了状态筛选的窗格中,会话菜单新增「刷新状态」,只按该窗格自己的条件重新判断这一个会话并决定去留,其余会话原地不动。该操作归属于菜单所在的窗格,因此递归切分时不会误用其它窗格的筛选条件;结果按窗格分别保存,重启后恢复。
  • 清除标记只需点一下。 再次选择已生效的表情即可取消,原先单列的清除项和分隔线随之移除。筛选按钮上的表情徽章也一并去掉:按钮高亮已经说明表情筛选处于启用状态,具体是哪个表情菜单里写着。

修复

  • Linux AppImage 的桌面集成在任何机器上都能安装。 打包进去的图标是一个指向构建机绝对路径的符号链接,因此 Gear Lever、AppImageLauncher 这类工具无法提取图标,尽管程序本身运行正常。现在改为相对链接。glibc 要求也更正为 2.35——此前只测了主程序,未计入随包分发的库——因此桌面端支持的最老发行版为 Ubuntu 22.04。

v0.1.98

最新版本

AI 智能体

  • Grok Build 成为 VelaTerm 的一等智能体。 现在可以安装、启动和续接 Grok 4.5;稳定的会话 ID、官方 lifecycle hooks、准确的工作与权限状态、合并后的转录、用量详情和随主题变化的官方图标,在桌面端、浏览器端和移动端保持一致。

项目与组织

  • 把项目左栏切分成彼此独立的工作视图。 任一树窗格都能继续向下切分,并在重启后恢复各自的搜索、状态与表情筛选、折叠状态和分隔比例。所有窗格仍是同一份后端项目树的投影视图,编辑会同步生效,不会复制业务数据。
  • 标记并筛选节点时不再丢失上下文。 项目、分组和会话都可以添加表情标记。命中标记的容器会保留完整子树;状态成员在操作期间保持稳定,同时支持动态增加和手动刷新;状态与表情条件按并集合并。
  • 直接创建空项目。 选择父目录并校验名称后,可在同一流程中创建并导入文件夹。中途导入失败时只会重试导入,不会重复创建目录。

界面

  • 在社区常用的平台分享 VelaTerm。 分享弹窗现在支持微信朋友圈、微博、小红书、X、Reddit、Hacker News、LinkedIn、Facebook、Telegram 和 WhatsApp;微信提供二维码流程,更新弹窗中也新增了分享引导。
  • 细节交互更顺手。 临时终端标签在保存为正式会话前即可重命名;普通输入框会关闭移动键盘的自动首字母大写,同时不改变终端输入行为。

v0.1.97

最新版本

AI 智能体

  • 会话不会再卡在“工作中”。 Codex 通过各自独立的短命进程上报工具活动和回合结束,回调到达顺序可能颠倒,导致已经结束的回合仍显示为工作中。现在会丢弃在自身回合结束之后才到达的中途上报,并新增会话结束 hook,覆盖没有发出完成事件就退出的会话。
  • 被打断的回合几秒内即可恢复正常。 按下 Esc 或遇到流式错误时,Claude 与 Codex 的回合结束时完全不会发出完成回调。现在终端连续静默六秒后会安静地把这类会话校正为等待中,且不会弹出“已回复”通知。

界面

  • macOS 上的分屏快捷键更可靠。 向右分屏(Cmd+D)和向下分屏(Cmd+Shift+D)现在同时注册为原生 Terminal 菜单命令,macOS 不会再在 VelaTerm 收到之前拦截这组按键。
  • 一次按键只保存一次文档。 Cmd+S 之前会被全局快捷键和聚焦中的编辑器同时处理,可能在一次按键中把同一个文件写入两次。

v0.1.96

最新版本

AI 智能体

  • Codex 状态只信任 lifecycle hooks,不再依赖终端猜测。 新版 Codex 会话现在只使用官方 lifecycle hooks 作为活动状态来源。SessionStart 握手会验证回调链路;缺少回调时明确显示“状态不可用”;终端文字或输出活动也不会再覆盖工作、待确认或已完成状态。
  • 每个回合结束后更及时地刷新 Codex 用量。 Info 面板会立即显示本地 rollout 快照,再与实时速率额度校准;Codex 写完最终 token 快照后还会补一次刷新,并忽略来自旧会话的延迟响应。

界面

  • macOS 上的项目树命中更可靠。 虚拟行不再依赖合成器 transform,避免滚动或树更新后 WKWebView 保留过期命中坐标,导致悬停、点击或拖拽落到另一行。

v0.1.95

最新版本

AI 智能体

  • Kimi Code 和 Zoo Code 加入会话树。 VelaTerm 现在可以启动、续接、安装并配置这两种智能体。Kimi 使用官方生命周期 hooks 权威上报工作、权限和等待状态;Zoo Code 保持稳定任务标识,并在缺少外部 hooks 时使用终端检测。
  • 实时刷新 Codex 用量。 Info 面板现在可以主动查询 Codex app server 获取最新速率额度,同时保留本地 rollout 快照作为兼容回退。

项目与终端

  • 使用 vela <path> 打开项目。 发布版现在可以安装类似 VS Code 的 shell 命令;再次调用会把项目转交给已有 VelaTerm 窗口,而不是打开重复实例。
  • 可见、可取消的 Git 克隆。 “克隆项目”现在显示 Git 阶段、百分比与耗时,可提示长时间无进展,并能取消整个 Git 进程树且不留下半成品目录。界面错误和审计日志会隐藏凭据与查询 token。
  • Windows 上的 WSL 终端。 所有已安装的 WSL 发行版都会被探测,并与 PowerShell、cmd、Git Bash 一起供普通终端选择。智能体会话仍使用 Windows 宿主 shell,确保 hooks 与可执行路径可靠。

界面与可靠性

  • 更清晰的后台会话控制。 后台标签菜单会显示每个会话的实时状态,超限弹窗也可以一次结束多个已选标签。
  • 更安全的应用生命周期与更新说明。 退出前会确认是否停止运行中的会话;Codex lifecycle 的精确身份优先于含糊的 rollout 扫描;自动更新说明支持所有内置界面语言。

v0.1.94

最新版本

本地化

  • 越南语界面已可用。 在语言选择器中现已出现“Tiếng Việt”选项,对于越南语系统区域设置会自动选中该选项。

浏览器

  • 内置浏览器启动速度更快。 现在每个浏览器标签页都提供了针对 ChatGPT、Claude、Gemini 和 Google 的一键快捷方式。项目与组上下文菜单也可以在会话树中的对应部分直接创建永久性浏览器页面。

图片与文档

  • 在 macOS 中可稳定粘贴图片路径。 当 WebKit 未将复制的图片作为文件呈现时,VelaTerm 会从系统剪贴板读取该图片,并仍以文件路径的形式上传,而不会默默地转而使用智能体的原生图片占位符。远程窗口始终会显示图片粘贴设置,解释为何需要文件路径模式,并禁用不可用的原生选项。

  • 将图片粘贴到源文档中。 源编辑器现在可接受剪贴板中的图片。已保存的 Markdown 文档会将图片存储在 assets/ 下的文档旁边,并插入可移植的 Markdown 图片语法;未保存的草稿则会嵌入图片数据,这样在清理临时文件时图片也不会丢失。

界面

  • 上下文菜单始终可见且能定位到正确项。 在右侧边缘附近打开的菜单会经过正确测量并移动。现在右键点击树节点时只会高亮显示菜单目标,而不会改变现有的选中内容,且组菜单会包含一个限定于该组的终端。

  • 更简洁的编辑界面与状态标签。 源文本不会再为 HTML 注释等序列显示类似箭头的字体连字,使用率百分比会明确标注为“已使用”,而且宿主 WebView 的无关原生上下文菜单也不会再出现在 VelaTerm 自身菜单的后面。

修复问题

  • Codex 仍保留在常规终端历史记录中。 由 VelaTerm 启动的 Codex 会话现在采用内联终端模式,因此按 Esc 键中断或回退时不会再切换终端屏幕缓冲区,也不会将滚动回放视图跳回顶部。你的 Codex 配置不会受到影响。

v0.1.93

最新版本

更新

  • 安装前可查看变更内容。 当有新版本可用时,状态栏图标和专用对话框会显示该版本的发布说明。你可以立即更新、跳过该版本、在后台继续下载,或手动打开安装程序下载;进度会实时显示,应用会重启以完成更新。如果你跳过了多个版本,系统会同时显示其间所有版本的说明,而不仅仅是最新版本。

AI 智能体

  • Codex 会话可自行命名。 一旦你发送第一条消息,Codex 会话就会立即根据该消息重新命名——这与 Claude 会话的命名方式相同——这样树状结构中就不会再出现“Codex 1”、“Codex 2”这样的名称。你手动设置的名称永远不会被覆盖。

  • vspawn 与 vopen 现在也在 Codex 中可用。 内置的 vspawn、vspawn-tree 和 vopen 功能不仅安装在 Claude 的功能目录中,也安装在 Codex 的功能目录中,因此 $vspawn <task> 和 $vopen <file> 可以在 Codex 会话中运行。

  • Codex 的恢复功能更可靠。 为后续恢复而捕获 Codex 对话时不再受固定计时限制,因此即使你在输入第一条消息前暂停,该功能依然有效;而且在同一文件夹中启动的两个 Codex 会话不会再相互关联。

  • Codex 的模型与上下文使用情况。 信息面板现在会显示 Codex 会话的当前模型、上下文窗口使用情况以及正在使用的工具,这与 Claude 的显示方式一致,信息直接从会话的运行状态中实时读取。

远程与终端

  • 远程文件浏览器已重新设计。 远程会话的目录选择器具备实时搜索、跳转至路径(可使用 ~)、上下导航以及内联新建文件夹功能。

  • 链接会在你的本地机器上打开。 现在在终端中点击链接——包括智能体的登录链接——都将在你的本地浏览器中打开,远程窗口也是如此。

  • “重用远程数据库”选项被隐藏了起来。 仅当你按 Option/Alt 键点击“连接至远程”时才会显示该选项;普通点击则始终会使用独立的数据库进行连接。

修复问题

  • 从 Dock 启动工具时仍能找到它们。 现在从 Dock 或 Finder 启动 VelaTerm 时,不会再使其处于精简版的 PATH 状态,因此智能体所依赖的 git 及其他通过 Homebrew 安装的工具都能被正确定位。

  • 新终端会在正确的文件夹中打开。 现在从侧边栏中的项目或组创建终端时,会直接在对应节点的目录中打开,而不会复用上一个活动会话的文件夹。

v0.1.92

最新版本

修复问题

  • 不会再出现错误的“SSH 链接丢失”警告。 之前的隧道监控机制会将端口转发子进程的退出视为链接断开,从而显示红色警告并重新建立隧道。但实际上转发监听器位于 ControlMaster 进程中,因此即使子进程退出,转发功能依然正常工作——终端仍可正常使用,只是界面会错误地显示链接已断开,而重新建立隧道的行为则毫无必要地破坏了正常的连接。

现在链接会分两阶段进行检查:当子进程退出时,VelaTerm 首先会检测本地转发端口是否仍有监听器。如果有监听器,则不会发生任何操作。只有当端口也不存在时,才会认为链接已断开并重新建立。红色警告也会被延迟显示——只有在第一次重建尝试失败后才会出现,因此几秒内就能恢复的故障不会再触发警告。

真正的断开连接仍可自动恢复。如果 ControlMaster 进程被终止或网络长时间中断,隧道会自动重建;一旦重试次数用尽,状态栏会显示“SSH link is down”,此时点击“Reconnect now”即可恢复会话——远程进程仍会继续运行并从上次中断处继续工作。

v0.1.91

最新版本

**首次公开发布。**本版本中包含的所有功能均已推出。

将 AI 智能体视为核心组件

  • 内置支持九种智能体——Claude Code、Codex、OpenCode、Copilot CLI、Cursor CLI、Cline、Pi、Antigravity(Gemini CLI)以及 Crush。创建会话时选择相应类型,智能体即可开始工作。

  • 智能体状态是实时报告的,而非猜测。VelaTerm 在启动时会注入各供应商的官方回调机制(Claude 使用 hooks,Codex 使用 notify,OpenCode 使用插件等),因此任何状态变化都会立即反馈。会话树会用不同符号显示智能体是正在工作、等待指令还是已完成但未被查看;侧边栏可按状态筛选,状态栏则实时显示计数。

  • 当智能体需要权限决策或完成任务时,系统会发出通知,点击通知即可直接跳转到对应会话。对于没有回调机制的智能体,系统会启用屏幕检测作为备用方案。

  • 所有对话内容都会被保留。每个智能体都有自己的会话 ID,会被捕获并存储下来,因此关闭会话、重启应用或恢复归档的会话,都可以在确认该对话仍然存在后继续原来的对话。Claude Code、Codex 和 Pi 还可以将当前对话拆分到另一个并行会话中。

  • 会话可以衍生出新会话。子任务会成为子会话,可由智能体或用户创建,也可按需放入独立的 Git 工作树,让多个智能体同时处理同一仓库。子任务完成后,可通过图形化合并对话框重新合并分支。

  • 如果缺少某个智能体,系统会显示安装卡片,其中包含推荐的安装命令及一键安装选项,安装后会自动检测路径。侧边栏会显示 Claude 和 Codex 的使用额度,任何对话都可以直接查看或导出为完整的 Markdown 文本记录。

会话管理

  • 采用三级树结构——项目、组、会话——组的嵌套层级不受限制,会话下还可以有子会话。节点可以自由拖动,且状态在重启后依然保持不变。

  • 任何子树都可以被归档:不会删除数据,而是隐藏在归档面板中,随时可以恢复,并且能够继续进行对话。

  • 全局内容搜索(⌘⇧F)基于 SQLite FTS5 索引,可搜索智能体对话记录和终端输出。左侧为搜索结果树,右侧为关联预览,还可以在会话之间逐步骤导航。

首先打造出色的终端体验

  • 使用真正的 PTYs 终端(portable-pty,来自 wezterm),因此 vim、htop 以及各类智能体的 TUI 界面都能正常运行。

  • 支持多个标签页,且分割方式灵活——每个标签页都有独立的分割结构,可按需水平或垂直分割。

  • 采用类似浏览器的标签页生命周期管理:后台标签页会保持运行状态,其进程也会继续运行。实时标签页数量是可配置的,超过设定值后,系统会自动关闭最久未使用的会话。只有关闭标签页才会终止对应的进程。

  • 得益于输入优先级调度和输出帧合并技术,即使在负载较高的情况下,输入操作依然响应迅速——再也不会因为智能体占用过多屏幕空间而影响按键操作。

  • 支持终端内搜索(⌘F)、会话录制与回放、直接将图片粘贴或拖拽到智能体中,还可在 Windows 上在 cmd、PowerShell 和 Git Bash 之间自由切换。

超越终端的体验

  • 可在任何会话中运行 vopen <file>,从而在终端旁边直接打开文档标签页:Markdown 会以 WYSIWYG 编辑器形式打开并导出为向量格式的 PDF,图片则在内置查看器中打开,源文件还会显示语法高亮。

  • 内置的浏览器标签页可用作临时标签页,也可固定在项目树中作为永久节点。

远程与多设备支持

  • 桌面应用通过网页提供相同的界面,所有会话实时共享。输出内容会实时发送到每个客户端,任何客户端都可以输入内容——桌面端和浏览器端看到的都是同一个终端,且都能对其操作。

  • 采用逐帧 NaCl 加密实现端到端加密,可通过二维码或链接配对,还支持按设备进行管理,包括单独撤销授权。

  • 无界面模式:--serve 可在没有图形界面的服务器上运行相同服务,供浏览器连接使用。

  • 通过 SSH 可实现远程连接,将远程机器纳入你的会话树中。VelaTerm 可直接从桌面端连接,然后在远程端部署轻量级的 vela-server,远程会话的表现与本地会话一致。隧道会自动修复并重新建立连接。

  • 移动端支持:该应用提供移动端网页视图,同时也提供原生应用外壳(使用 xterm 渲染,支持原生输入和辅助键栏)。

支持的平台及界面优化

  • 支持 macOS、Linux 和 Windows 系统。

  • 支持自动更新,且 macOS 版本经过数字签名验证。

  • 主题会随系统自动切换为浅色或深色模式,正在运行的智能体会通过标准的终端通知(DEC 2031)得知主题变化——TUI 颜色会立即改变,无需重启。

  • 默认语言为英语,还内置了 10 种语言,语言设置会跟随系统区域设置自动调整。

每个版本都附带自动更新功能——VelaTerm 会自动提供最新版本。你可以从 下载页面自行获取。.