# OxideTerm Stable Changelog Stable releases are listed newest first. The release workflow uses each versioned section as the detailed changelog attached to the corresponding GitHub Release. ## 2.2.4 ### 中文 OxideTerm 2.2.4 为 OxideSens 加入图片输入、工具返回图片、小米 MiMo 提供商,以及独立配置的 DeepSeek 搜索与网页读取;同时完善 SSH 提权凭据、命令历史、文件导航和离线端口转发管理,整理设置与首次使用引导,并修复云同步初始化、主机监控和 SSH 重连问题。 #### 🖼️ AI 图片输入与工具图片 - 对话支持从剪贴板粘贴图片或选择图片文件,输入区以可移除的缩略图展示附件;发送后的图片随对话保存,重新打开历史对话时仍可查看。 - 图片输入适配 OpenAI Chat Completions、Responses、Anthropic 和 Gemini 接口。图片会经过格式、尺寸及请求大小检查,并在发送前缩放;上下文预算纳入图片 token 估算,未确定的计费规则按暂估处理,实际用量以服务商返回值为准。 - 修正模型图片能力判断:明确不支持图片的模型会在添加附件时提示;能力未知的自定义模型不再被直接当作纯文本模型。模型图片能力仍可在设置中指定。 - 切换到不支持图片的模型时,如果历史上下文包含图片,会先确认是否保留对话中的图片、仅以文字继续,不会直接删除历史附件。 - 工具返回的图片贯通工具消息、模型请求和对话存储,包括 MCP 图片结果与 ACP 宿主工具回复;图片附件与普通工具文字输出分开处理。 - 新增小米 MiMo 提供商配置,并补充对应模型的图片能力与推理设置适配。 #### 🌐 独立联网工具与全局子 Agent 设置 - 新增 DeepSeek 搜索和网页读取工具,搜索账号独立于聊天模型配置。可在全局 AI 设置中选择已保存的官方 DeepSeek 配置,让其他聊天模型通过工具使用搜索服务。 - 搜索与网页读取结果显示来源链接,并区分认证、余额不足、限流、页面不可用及请求失败等情况。网页读取限于受支持的公开 HTTP/HTTPS 地址。 - 子 Agent 的启用状态、默认模型和并发限制统一为全局设置;所有对话共享并发上限,等待中的任务释放运行名额。关闭后不再启动新子任务,已运行任务可继续完成。 - 工具设置明确区分“允许使用工具”和“自动批准操作”。自动批准列表中未勾选的操作仍可在确认后运行;停用工具则不能运行。子 Agent 沿用父任务允许的工具范围与审批规则。 #### 🔑 SSH 提权凭据与动态验证码 - 新增 SSH 通用提权凭据范围,可复用 sudo、su 和自定义密码提示凭据;连接专属匹配优先,本地终端保持独立范围。 - 密码提示只有一个匹配凭据时,可按 Enter 填入;存在多个匹配时,先显示名称、类型和来源供选择,支持方向键、Enter、鼠标和 Esc。开始手动输入或切换终端会关闭选择器。 - 启用敏感凭据同步且同步全部连接时,SSH 通用凭据随连接同步;只同步部分连接时不改动通用范围。包含密码的加密连接导出包会保存按连接限定的副本,导入后不会自动变成全局默认凭据。 - 共享 TOTP 凭据支持在设置中编辑连接绑定,保存时应用替换关系;命令行创建和编辑连接支持按名称或 ID 选择已有 TOTP 凭据,也可清除绑定。 #### ⌨️ 命令历史与快捷命令 - 已保存的 SSH、Telnet、Mosh 和串口连接可选择在本机保存命令历史,重启后继续使用;补齐 Telnet、Mosh 及串口文本控制台的历史建议。 - 历史列表支持当前连接与全部连接范围,可暂停当前连接记录、删除单条记录或清空历史;保留天数可配置,所有已保存连接合计最多保留 10,000 条。 - 快捷命令匹配规则支持选择主机地址、连接名称或全部字段,结合通配符与逗号分隔规则定位目标。 - 简化命令历史范围切换控件,协调终端输入栏、快捷命令面板与命令发送器在背景下的表面样式。 #### 📁 文件导航与端口转发 - SFTP 新增“前往终端目录”,按同一服务器的当前终端或最近使用终端定位目录,也适用于独立 SFTP 窗口。默认快捷键为 macOS `⌘⇧G`、Windows/Linux `Ctrl+Shift+G`,支持自定义;终端目录变化不会自动移动文件浏览器。 - 本地文件管理器支持拖动收藏项排序、调整收藏侧栏宽度及双击恢复默认宽度,顺序和宽度会保存;系统目录与驱动器保持原有位置。 - 已保存的端口转发规则在连接断开时仍可查看、编辑、保存和删除。“保存并启动”可通过现有连接流程建立 SSH 连接,无须额外打开终端。(Issue [#694](https://github.com/AnalyseDeCircuit/oxideterm/issues/694)) - 停止转发后保留规则并关闭自动启动,手动停止的规则不会因重连再次启动;断线恢复保留规则身份,避免旧连接清理影响替换后的运行实例。 #### 🎨 设置、技能管理与首次使用引导 - 统一设置行的名称、说明、控件对齐和窄窗口换行;路径输入、代理表单、带单位数字框和背景预览继续使用适合各自内容的布局。 - 技能管理新增名称与说明搜索、范围筛选、启用数量、可展开详情和格式、读取、同名覆盖诊断,并提供打开所在目录的入口;停用技能保留原文件。 - 重新组织 AI 提供商与上下文页面,明确当前聊天配置、搜索服务配置和高级上下文容量设置;整理工具审批与子 Agent 的作用范围说明。 - 外部 MCP 控制页分别展示服务端点、监听端口、待审批操作和客户端权限;细粒度权限按功能分组,允许使用的工具与审批模式分别设置,保留原有权限含义。 - 协调壁纸下的标签、卡片、输入控件和终端辅助面板底色,限制嵌套表面的不透明度累加,并减弱侧栏分隔边缘;文字、强调色和媒体保持各自的绘制规则。 - 继续整理五页首次使用引导:统一内容宽度与间距,把连接流程与功能介绍分栏,更多功能按需展开;AI 开关前置,背景素材区限制高度,开始使用页采用更紧凑的操作入口并移除重复快捷键。 #### 🛠️ 连接、监控与同步修复 - SSH 连接失败时只重置仍在等待连接的窗格,保留已经进入 Shell 启动阶段的重连,防止重复发起。(PR [#682](https://github.com/AnalyseDeCircuit/oxideterm/pull/682)) - 修复同一节点同时存在重连和新终端打开请求时,关闭重连窗格会丢失临时节点清理标记的问题。(PR [#685](https://github.com/AnalyseDeCircuit/oxideterm/pull/685)) - X11 转发按终端报告协商成功、缺少本地显示或授权、服务端拒绝和超时等状态,并补充 Windows 本地 X Server 的要求;远端 `DISPLAY` 仍由 SSH 服务端分配。 - 远端平台检测显式使用 POSIX Shell,并支持仅接受交互式 Shell、不接受 exec 请求的 SSH 服务端;不支持的 Shell 不再反复触发自动集成检查提示。 - 主机监控打开后立即采样,刷新时保留现有数据直到新数据到达;区分环境检测中、无法识别系统和采样失败,并提供重试入口。修复列表行提示状态互相影响的问题。 - VNC 查看器断开或失败后保持停止,等待用户明确重连,不因页面重新绘制而重复启动连接。 - 修复部分 WebDAV 服务在首次同步目录尚不存在时返回 409 导致初始化失败的问题;首次同步失败或取消后,密码仍可重新设置,已有加密数据则继续走密码更换流程。 - 修正工作区启动和生命周期定时任务的调度,改善通知、后台状态和界面更新的时序一致性。 #### 📦 构建环境 - Nix 开发环境补齐图形运行库搜索路径,以及 `libdrm` 和 Mesa,使通过 `nix develop` 后执行 `cargo run` 的程序能够找到相关运行库;此项针对开发环境,发行包无法启动的反馈仍需单独定位。(PR [#688](https://github.com/AnalyseDeCircuit/oxideterm/pull/688)) - macOS 构建通过 Xcode 查找已安装的 Metal 工具链,避免仅依赖默认工具路径;本机仍需安装 Metal Toolchain。 #### 👥 贡献者 - @m00nLi:修复 SSH 重连状态与临时节点清理问题(PR [#682](https://github.com/AnalyseDeCircuit/oxideterm/pull/682)、[#685](https://github.com/AnalyseDeCircuit/oxideterm/pull/685))。 - @sincerely-hello-world:修复 Nix 开发环境的图形运行库配置(PR [#688](https://github.com/AnalyseDeCircuit/oxideterm/pull/688))。 #### 📌 使用与升级说明 - 本机命令历史保存默认关闭;开启后完整命令会写入未加密的本地文件,参数中的密码或令牌也可能被记录。仅记录开启后的命令,默认保留 90 天,设为 0 可永久保留。 - 联网工具需启用工具调用并配置官方 DeepSeek 账号;搜索词和网页地址会发送给 DeepSeek,搜索及网页读取按请求单独计费。 - 图片输入能力取决于实际模型和接入端点,图片 token 估算不代替服务商账单。 - 本版更新日志范围:[v2.2.3…v2.2.4](https://github.com/AnalyseDeCircuit/oxideterm/compare/v2.2.3...v2.2.4)。 ### English OxideTerm 2.2.4 adds image input, tool-result images, Xiaomi MiMo, and independently configured DeepSeek web search and page reading to OxideSens. It also improves SSH privilege credentials, command history, file navigation, and offline forwarding management, reorganizes settings and onboarding, and fixes cloud-sync initialization, host monitoring, and SSH reconnection. #### 🖼️ AI image input and tool-result images - Conversations accept pasted images and image files, with removable thumbnails in the composer. Sent attachments are saved with the conversation and remain available when reopening history. - Image input supports OpenAI Chat Completions, Responses, Anthropic, and Gemini interfaces. Images undergo format, size, and request-budget checks and are resized before sending. Context budgeting includes estimated image tokens; unspecified pricing rules remain provisional, and provider-reported usage is authoritative. - Corrected model capability detection: models known to lack image support show an error when adding attachments, while unknown custom models are no longer treated as text-only. Image capability can still be specified in settings. - Switching to a text-only model with images in the conversation context asks whether to retain the images in history and continue with text only, rather than deleting the attachments. - Tool-result images now flow through tool messages, model requests, and conversation storage, including MCP image results and ACP host-tool replies. Attachments remain separate from ordinary tool text output. - Added Xiaomi MiMo provider configuration, with image-capability and reasoning-setting support for its models. #### 🌐 Independent web tools and global subagent settings - Added DeepSeek web search and page-reading tools with a search account configured separately from the chat model. Global AI settings can use a saved official DeepSeek configuration so other chat models can access the search service through tools. - Search and page-reading results show source links and distinguish authentication errors, insufficient balance, rate limits, unavailable pages, and request failures. Page reading accepts supported public HTTP/HTTPS URLs. - Subagent enablement, default model, and concurrency limits are now global. Conversations share the concurrency limit, and waiting tasks release their running slots. Disabling subagents prevents new subtasks while allowing running tasks to finish. - Tool settings distinguish tool availability from automatic approval. Unchecked entries in the automatic-approval list can still run after confirmation; disabled tools cannot run. Subagents retain their parent task's allowed tools and approval rules. #### 🔑 SSH privilege credentials and one-time passwords - Added a common SSH privilege-credential scope for sudo, su, and custom password prompts. Connection-specific matches take priority, and local terminals retain a separate scope. - At a password prompt, Enter fills a single matching credential. Multiple matches open a chooser showing name, type, and source, with arrow-key, Enter, mouse, and Esc support. Manual input or switching terminals closes the chooser. - Full connection sync includes common SSH credentials when sensitive-credential sync is enabled; syncing selected connections leaves the common scope unchanged. Encrypted connection exports that include passwords carry connection-scoped copies, which do not become global defaults on import. - Shared TOTP credentials now support editing connection bindings in settings, with replacements applied on save. CLI connection creation and editing can select an existing TOTP credential by name or ID, or remove its binding. #### ⌨️ Command history and quick commands - Saved SSH, Telnet, Mosh, and serial connections can optionally retain command history on this device across restarts. Restored history suggestions for Telnet, Mosh, and serial text consoles. - History supports current-connection and all-connection scopes, pausing recording for a connection, deleting individual entries, and clearing history. Retention is configurable, with up to 10,000 entries across saved connections. - Quick-command rules can match host addresses, connection names, or all fields, using wildcards and comma-separated patterns. - Simplified the history scope selector and coordinated wallpaper-backed surfaces in the terminal input bar, quick-command panel, and command sender. #### 📁 File navigation and port forwarding - Added Go to Terminal Directory in SFTP, using the current or most recently used terminal on the same server, including detached SFTP windows. The customizable default shortcut is `⌘⇧G` on macOS and `Ctrl+Shift+G` on Windows/Linux. Terminal navigation does not automatically move the file browser. - Local File Manager favorites can be reordered by dragging, and the favorites sidebar can be resized or reset by double-clicking its edge. Order and width are saved; system folders and drives keep their positions. - Saved forwarding rules remain visible and editable while disconnected and can be saved or deleted offline. Save and Start uses the existing SSH connection flow without opening an extra terminal. (Issue [#694](https://github.com/AnalyseDeCircuit/oxideterm/issues/694)) - Stopping a forward retains its rule and disables automatic startup. Manually stopped rules remain stopped after reconnection; interrupted forwards retain their identity, and cleanup from an old connection does not affect its replacement. #### 🎨 Settings, skills, and onboarding - Unified setting labels, descriptions, control alignment, and narrow-window wrapping, while retaining suitable layouts for paths, proxy forms, numeric fields with units, and background previews. - Skill management now offers name and description search, scope filtering, enabled counts, expandable details, and diagnostics for invalid, unreadable, or overridden skills, plus an Open Containing Folder action. Disabling a skill preserves its files. - Reorganized AI provider and context pages to distinguish the current chat configuration, search-service configuration, and advanced context-capacity settings, with clearer tool-approval and subagent scope descriptions. - External MCP controls separate the endpoint, listening port, pending approvals, and client permissions. Fine-grained permissions are grouped by function, with tool access and approval mode configured separately and existing permission semantics preserved. - Coordinated wallpaper-backed tabs, cards, input controls, and terminal panels, limited accumulated opacity in nested surfaces, and softened sidebar separators. Text, accents, and media retain their own rendering rules. - Refined the five-page onboarding flow with consistent widths and spacing, side-by-side connection steps and feature introductions, and expandable additional features. AI switches appear earlier, the background gallery has a bounded height, and the final page uses compact actions without duplicate shortcuts. #### 🛠️ Connections, monitoring, and sync fixes - SSH connection failures now reset only panes still waiting for a connection, preserving reconnects already starting a shell and preventing duplicate attempts. (PR [#682](https://github.com/AnalyseDeCircuit/oxideterm/pull/682)) - Fixed loss of temporary-node cleanup state when a reconnect and a new terminal open share a node and the reconnect pane is closed. (PR [#685](https://github.com/AnalyseDeCircuit/oxideterm/pull/685)) - X11 forwarding reports per-terminal negotiation success, missing local display or authorization, server rejection, and timeouts. Windows guidance now explains the local X server requirement; the SSH server assigns the remote `DISPLAY`. - Remote platform detection explicitly uses a POSIX shell and supports SSH servers that accept interactive shell requests but reject exec requests. Unsupported shells no longer trigger repeated automatic integration-check notices. - Host monitoring samples immediately on opening and retains existing data during refresh until replacements arrive. It distinguishes environment detection, unknown systems, and sampling failures, with a retry action. Fixed tooltip state leaking between list rows. - Disconnected or failed VNC viewers remain stopped until an explicit reconnect instead of restarting during a redraw. - Fixed first-sync initialization against WebDAV servers that return 409 when a sync directory's ancestor is missing. Failed or canceled initial sync attempts allow password setup to be retried, while existing encrypted data continues to use the password-rotation flow. - Corrected scheduling of workspace startup and lifecycle timers for more consistent notification, background-state, and UI updates. #### 📦 Build environments - The Nix development shell now exposes graphics runtime-library paths and includes `libdrm` and Mesa, allowing `cargo run` inside `nix develop` to locate the required libraries. This fixes the development environment; reported packaged-app startup failures still require separate investigation. (PR [#688](https://github.com/AnalyseDeCircuit/oxideterm/pull/688)) - macOS builds locate the installed Metal toolchain through Xcode instead of relying solely on the default tool path. Metal Toolchain must still be installed locally. #### 👥 Contributors - @m00nLi: SSH reconnect-state and temporary-node cleanup fixes (PR [#682](https://github.com/AnalyseDeCircuit/oxideterm/pull/682), [#685](https://github.com/AnalyseDeCircuit/oxideterm/pull/685)). - @sincerely-hello-world: Nix development-shell graphics runtime configuration (PR [#688](https://github.com/AnalyseDeCircuit/oxideterm/pull/688)). #### 📌 Usage and upgrade notes - Saving command history locally is off by default. When enabled, complete commands are written to an unencrypted local file, including any passwords or tokens in arguments. Recording begins when enabled; the default retention is 90 days, and 0 retains history indefinitely. - Web tools require tool calling and an official DeepSeek account. Search queries and page URLs are sent to DeepSeek, and search and page-reading requests are billed separately. - Image support depends on the actual model and endpoint. Estimated image tokens do not replace the provider's billing data. - Full changelog: [v2.2.3…v2.2.4](https://github.com/AnalyseDeCircuit/oxideterm/compare/v2.2.3...v2.2.4). ## 2.2.3 ### 中文 OxideTerm 2.2.3 新增动态背景、可叠加的视觉效果和按需安装的背景素材包,允许为系统浅色与深色模式分别配置完整外观,并重新整理首次使用引导。同时明确云同步的下载、合并与上传方向,修复 SSH 会话重连、Linux 粘贴编辑、macOS 远程桌面文件剪贴板,以及更新与便携版数据保留问题。 #### 🎨 完整亮暗外观与背景编辑 - “跟随系统外观”支持分别配置浅色和深色两套外观,每套包含应用主题、终端主题与背景。切换系统亮暗模式时,界面、现有终端和背景一起更新,无须重新连接会话。 - 背景设置将图片或视频素材、叠加特效和背景交互分区展示;可以单独使用程序生成的效果,也可以把效果叠加在图片、动图或视频上。 - 新增九点对齐,结合现有适配方式决定裁切后保留的位置;素材不透明度、模糊、阅读遮罩、作用范围和启用页面可分别调整。 - 主题预览与编辑预览同时呈现背景、透明度和裁切效果。主题编辑使用独立草稿,取消后恢复原来的外观。 - 素材卡片左上角显示文件格式,右上角保留删除按钮,并标明当前使用的素材。修复部分视频和导入图片无法显示缩略图的问题。 - 按素材和效果的实际能力显示参数,静态内容不再出现无效的播放速度等控制。修复新增滑杆点击、拖动时偏离鼠标的位置,以及切换选项后设置页滚动位置跳动的问题。 #### ✨ 程序生成效果与背景交互 - 新增轻纹理、雾光、光潮、光潮与粒子组合、流星、景深粒子和水面折光;各效果提供适用的强度、颜色、大小、速度、方向、粗糙度、光泽或密度控制,默认颜色可取自当前主题。 - 特效强度与素材不透明度分别控制,统一有无素材时的强度表现,改善特效叠加在图片、视频和动图上过淡的问题。 - 新增“输入时暂停动效”,连续输入时暂停动态素材和效果,停止输入约一秒后恢复。此选项由用户开启。 - 新增背景视差,静态图片和效果层可随鼠标轻微移动;景深粒子的不同层使用不同位移幅度,终端文字保持固定。 - 新增静态图片的缓慢运镜,支持平移、推近和拉远,可调整幅度与速度,并在往返运动时保留画面边缘覆盖。 - 新增全天候光照,按本地时间渐变背景光线与色彩,并可预览清晨、午后、傍晚和夜间。应用与终端主题仍按各自的亮暗配置切换。 - 背景切换增加平滑过渡;窗口不活跃、不可见或最小化时暂停播放,并遵循现有减少动态效果设置。 #### 🎬 原生视频播放与按需素材包 - 视频背景接入 macOS 系统媒体解码、Windows Media Foundation 和 Linux GStreamer;支持原生视频缓冲或纹理进入对应图形后端,在能力允许时减少 CPU 拷贝与重复上传。 - 保留软件解码和像素上传路径;自动模式按持续处理负载调整播放尺寸与帧率,用户手动设置的上限保持不变。硬件加速是否可用取决于设备、驱动和视频格式。 - 背景与预览复用同一媒体处理结果,按视频时间调度显示,限制提前解码和缓冲占用;将支持路径上的缩放、裁切与模糊交给图形后端处理。 - 修复 Windows 视频缓冲未提供行跨度时导致缩略图和背景不显示的问题;修复 4K 软件缩放后不透明视频的颜色与透明度处理。 - Linux 发行包补齐媒体解码组件及插件扫描器定位,使打包后的程序能够发现自带的解码支持。 - 新增插件市场“背景素材”分类与素材库“获取更多背景”入口。视频素材独立于主程序分发,可按需安装,主程序保留现有静态背景。 - 背景包安装后将声明的素材导入当前配置的素材库;便携版使用自己的数据目录。安装不改变当前主题和背景,卸载包后已导入素材继续保留,可在素材库单独删除。 - 已发布的 OxideTerm Backgrounds 1.0.0 提供“晨雾”和“夜流”两段原创 3840 × 2160、24 帧/秒、16 秒循环视频,适用于浅色和深色外观;需使用本次或更高的主程序版本安装。 #### 🧭 首次使用引导与界面体验 - 首次使用引导整理为五页:欢迎与须知、外观、连接与操作、AI 与命令行、开始使用。宽窗口采用分栏,窄窗口自动调整布局,内容区随窗口尺寸变化。 - 首页使用独立应用标记与标题,保留语言选择和必要说明;主题预览集中在外观页,最后一页聚焦打开终端、新建连接和导入连接。 - 步骤导航和页数居中,复用现有切换与入场动画;按钮颜色跟随当前主题,提示与说明重新整理为更直接的引导文案。 - 新用户只显示欢迎引导,不再同时显示旧版迁移介绍;完成引导前先保存状态,避免重新启动后重复出现。保存失败时保留引导并给出提示。(Issue [#666](https://github.com/AnalyseDeCircuit/oxideterm/issues/666)) - 半透明面板与侧边区域新增随主题和透明度调整的柔和边缘层次,改善背景下分割线突兀的问题;背景和媒体绘制保留圆角裁切。 - 新建连接表单改用已安装插件的状态判断,避免绘制时反复探测外部程序;SSH 代理发现也减少阻塞探测,改善 Windows 打开表单和切换远程桌面页面的卡顿。 - 调整 Windows 背景与界面绘制路径,减少重复图形工作;修复依赖真实时间的弹层关闭状态,保持界面动画时钟一致。 #### ☁️ 云同步方向与首次下载 - 新增只读“查看云端”入口,允许先检查云端配置,再决定是否应用。 - 同步预览明确提供“使用云端配置”“合并本机与云端”“用本机更新云端”三种方向,并使用对应的说明和确认按钮。 - 新设备首次发现已有云端配置时,默认预览“使用云端配置”,确认后下载应用并建立同步基线,不上传本机默认设置;首次自动同步同样需要明确确认。(Discussion [#663](https://github.com/AnalyseDeCircuit/oxideterm/discussions/663)) - 预览中的本机更改保留在计划内,取消不会提前推进已保存的同步基线。合并时重新读取本机当前设置,纳入预览期间发生的本机更改;各方向均保留未选同步范围,云端自身存在冲突时,下载前需完成选择。 - 下载完成后记录正确的云端状态与下载历史,保留现有恢复机制和同步密码修改流程。 #### 🔌 终端、SSH、SFTP 与远程桌面修复 - SSH 远端 Shell 退出后,可通过原窗格的重连按钮或 Enter 恢复会话,保留窗格身份和滚动历史;仍在使用的 SFTP、端口转发和其他消费者继续持有共享连接。(Issue [#669](https://github.com/AnalyseDeCircuit/oxideterm/issues/669)) - 远程 Shell 集成失败时显示具体原因,包括 SFTP 不可用、不支持的 Shell、读写权限和安装未完成,并明确终端本身是否仍可使用,避免把可选集成问题误认为 SSH 连接失败。(Issue [#664](https://github.com/AnalyseDeCircuit/oxideterm/issues/664)) - 修复 Linux 多行粘贴编辑窗口只能退格、删除却无法输入字符的问题;文字输入进入现有编辑器,编辑期间不会被转发给后台终端,确认粘贴后才发送。(Issue [#677](https://github.com/AnalyseDeCircuit/oxideterm/issues/677)) - 修复 SFTP 文件拖放释放鼠标时先清理拖动状态的问题,使跨窗格拖放正确进入上传、下载或冲突处理流程。 - 修复 macOS RDP 文件剪贴板同步,连接建立或切回窗口时同步本地复制的文件,使远端菜单能直接识别可粘贴文件,并避免把远端文件重复回传。(Issue [#670](https://github.com/AnalyseDeCircuit/oxideterm/issues/670)) - 修复 Linux 客户端标题栏关闭窗口时的工作区重入问题。 #### 📦 更新与便携版 - 更新完成后先释放当前工作区更新,再执行保存历史和退出流程,修复 macOS 旧进程在更新退出时出现崩溃提示的问题。 - Windows 应用内更新统一由主程序启动更新辅助程序,等待旧进程结束后替换并启动新版,避免安装器重复启动辅助程序影响自动重启。 - 启用便携存储时,更新包仍匹配当前运行形式:macOS 应用包、Linux AppImage 和解压式便携版分别使用对应安装包。 - macOS 替换应用包时保留包内的便携标记、配置和数据目录;替换或数据恢复失败时回滚,避免更新后丢失便携数据。 #### 📌 升级说明 - 背景动效、输入时暂停、视差、运镜和全天候光照均可自行选择;需要保持静态外观时可关闭这些选项。播放性能和可用加速路径随硬件、驱动及媒体格式变化,可在自动模式之外手动设置分辨率和帧率。 - 视频素材包从插件市场按需安装,不随主程序携带。背景包导入的视频会占用当前配置的数据目录空间;卸载插件不会自动删除这些已导入的素材。 - 更新退出、安装和重启修复由新版客户端执行,从旧版首次升级时,旧客户端仍使用原有更新逻辑。 - 本版更新日志范围:[v2.2.2…v2.2.3](https://github.com/AnalyseDeCircuit/oxideterm/compare/v2.2.2...v2.2.3)。 ### English OxideTerm 2.2.3 adds animated backgrounds, composable visual effects, and on-demand background packs, with complete appearance profiles for the system's light and dark modes and a redesigned first-run guide. It also makes cloud download, merge, and upload directions explicit and fixes SSH session reconnection, Linux paste editing, macOS remote desktop file clipboard synchronization, and update handling for installed and portable builds. #### 🎨 Complete light and dark appearances and background editing - Follow System Appearance now supports separate light and dark profiles, each containing an application theme, terminal theme, and background. System appearance changes update the interface, existing terminals, and background together without reconnecting sessions. - Background settings separate image or video media, overlay effects, and interactions. Generated effects can stand alone or be layered over images, animations, and videos. - Added nine-point alignment to control which part of a background remains visible after cropping. Media opacity, blur, a readability overlay, background scope, and enabled pages can be configured separately. - Theme and editor previews show the background, transparency, and crop together. Theme editing uses a separate draft; cancellation restores the previous appearance. - Media cards show their file format at the top left, retain deletion at the top right, and identify the active item. Fixed missing thumbnails for some videos and imported images. - Controls now reflect the selected media and effect, hiding irrelevant playback-speed controls for static content. Fixed pointer offsets in new sliders and settings scroll jumps after changing options. #### ✨ Generated effects and background interactions - Added subtle texture, fog glow, light tides, combined tides and particles, meteors, depth particles, and water caustics. Effects expose applicable strength, color, size, speed, direction, roughness, sheen, or density controls, with default colors derived from the current theme. - Effect strength and media opacity are independent. Strength behaves consistently with or without media, improving overlays that were too faint on images, videos, and animations. - Added an optional Pause Effects While Typing setting. Animated media and effects pause during continuous input and resume approximately one second after typing stops. - Added background parallax for static images and effect layers. Depth-particle layers move by different amounts while terminal text stays fixed. - Added slow camera motion for static images, with pan, zoom-in, and zoom-out options, adjustable amount and speed, and edge coverage throughout the repeating motion. - Added all-day lighting that gradually changes background light and color with local time, with morning, afternoon, evening, and night previews. Application and terminal themes continue to follow their configured light and dark profiles. - Background changes now transition smoothly. Playback pauses when the window is inactive, hidden, or minimized and follows the existing reduced-motion settings. #### 🎬 Native video playback and on-demand background packs - Video backgrounds use macOS system media decoding, Windows Media Foundation, and Linux GStreamer. Native video buffers or textures can enter the corresponding graphics backend to reduce CPU copies and repeated uploads where supported. - Software decoding and pixel-upload paths remain available. Automatic mode adjusts playback dimensions and frame rate under sustained processing load while preserving manually configured limits. Hardware acceleration depends on the device, driver, and video format. - Backgrounds and previews share media processing results, schedule presentation by video time, and bound decode-ahead work and buffering. Supported paths perform scaling, cropping, and blur in the graphics backend. - Fixed missing Windows video thumbnails and backgrounds when decoded buffers omit their row stride. Fixed color and opacity handling for opaque videos resized at 4K through the software path. - Linux packages now include media decoding components and locate the bundled plugin scanner so packaged applications can discover their decoder support. - Added a Background Media marketplace category and a Get More Backgrounds entry in the media library. Videos are distributed independently as optional packs; the application retains its existing static backgrounds. - Installing a pack imports its declared media into the current configuration's library, including the portable data directory. Installation leaves the current theme and background unchanged. Imported media remains after uninstalling the pack and can be deleted separately from the library. - The published OxideTerm Backgrounds 1.0.0 pack provides two original 3840 × 2160, 24 fps, 16-second loops, Dawn Mist and Night Flow, for light and dark appearances. Installation requires this host release or a later version. #### 🧭 First-run guide and interface experience - Reorganized onboarding into five pages: Welcome and Notices, Appearance, Connections and Operations, AI and Command Line, and Getting Started. Wide windows use columns; narrow windows adapt the layout, and the content area follows the window size. - The first page uses a separate application mark and title, retaining language selection and essential information. Theme preview is concentrated on Appearance, and the final page focuses on opening a terminal, creating a connection, and importing connections. - Centered step navigation and page numbering, reused existing entry and switching animations, made button colors follow the theme, and rewrote guidance more directly. - New users see onboarding without the old-version migration introduction. Completion is saved before closing to avoid showing the guide again after restart; a failed save keeps the guide open with a message. (Issue [#666](https://github.com/AnalyseDeCircuit/oxideterm/issues/666)) - Translucent panels and sidebar regions now have softer edge definition that follows the theme and opacity, improving abrupt separators over backgrounds. Background and media rendering retain rounded clipping. - Connection forms use installed-plugin state instead of repeatedly probing external programs during rendering. SSH agent discovery also avoids blocking probes, improving responsiveness when opening forms and switching remote desktop pages on Windows. - Updated Windows background and interface rendering to reduce repeated graphics work. Fixed overlay dismissal states that depended on wall-clock time so they use the interface animation clock consistently. #### ☁️ Cloud sync direction and first-device downloads - Added a read-only View Cloud Configuration entry to inspect remote configuration before applying it. - Sync previews explicitly offer Use Cloud Configuration, Merge Local and Cloud, and Update Cloud from This Device, with matching explanations and confirmation buttons. - A new device discovering existing cloud configuration defaults to previewing Use Cloud Configuration. Confirmation downloads and applies it, establishes a sync baseline, and does not upload local defaults. Initial automatic sync also requires explicit confirmation. (Discussion [#663](https://github.com/AnalyseDeCircuit/oxideterm/discussions/663)) - Local preview edits remain in the plan; cancellation does not advance the saved sync baseline. Merging re-reads current local configuration to include edits made during the preview. All directions preserve excluded scope, and downloads require choices for conflicts already present in the cloud. - Download completion records the correct cloud state and download history, retaining existing recovery and sync-password-change flows. #### 🔌 Terminal, SSH, SFTP, and remote desktop fixes - After a remote SSH shell exits, its reconnect button or Enter restores the session in the original pane, preserving pane identity and scrollback. SFTP, forwarding, and other consumers retain their ownership of the shared connection. (Issue [#669](https://github.com/AnalyseDeCircuit/oxideterm/issues/669)) - Remote shell integration failures now explain the cause, including unavailable SFTP, unsupported shells, read/write permissions, and incomplete installation, and clarify whether the SSH terminal remains usable. (Issue [#664](https://github.com/AnalyseDeCircuit/oxideterm/issues/664)) - Fixed the Linux multiline paste editor accepting Backspace and Delete but not typed characters. Text reaches the existing editor, editing keys are not forwarded to the background terminal, and content is sent only after confirming the paste. (Issue [#677](https://github.com/AnalyseDeCircuit/oxideterm/issues/677)) - Fixed SFTP mouse release clearing drag state before completing a drop, restoring upload, download, and conflict handling across panes. - Fixed macOS RDP file clipboard synchronization. Connecting or returning to the window advertises locally copied files so the remote menu can recognize available files without a preceding paste shortcut, while avoiding echoing remote-origin files. (Issue [#670](https://github.com/AnalyseDeCircuit/oxideterm/issues/670)) - Fixed workspace reentry when closing a Linux window through its client-side titlebar. #### 📦 Updates and portable builds - Update completion releases the current workspace update before saving history and quitting, fixing the macOS old process reporting a crash during update shutdown. - Windows in-app updates now launch the helper from the application, wait for the old process to exit, replace files, and start the new version, avoiding duplicate helper launches from the installer that interfered with automatic restart. - Portable storage preserves the running package's update format: macOS application bundles, Linux AppImages, and extracted portable builds each select their corresponding package. - macOS application replacement preserves bundle-local portable markers, configuration, and data directories, with rollback if replacement or data restoration fails. #### 📌 Upgrade notes - Background effects, typing pauses, parallax, camera motion, and all-day lighting are optional. Disable them for a static appearance. Playback performance and acceleration depend on hardware, drivers, and media formats; resolution and frame rate can be set manually instead of using automatic mode. - Video packs are installed on demand from the marketplace and are not bundled with the application. Imported videos occupy space in the current configuration's data directory; uninstalling a plugin does not automatically delete imported media. - Update shutdown, installation, and restart fixes are performed by the new client. The first upgrade from an older version still uses that older client's update logic. - Full release range: [v2.2.2…v2.2.3](https://github.com/AnalyseDeCircuit/oxideterm/compare/v2.2.2...v2.2.3). ## 2.2.2 ### 中文 OxideTerm 2.2.2 将 ACP 代理适配器、RDP/VNC 引擎和 Mosh 传输移入独立插件,新增 FIDO 安全密钥认证,并启用可持续扩展的 v2 插件市场。语言识别和嵌入语法由插件动态声明,同时完善插件安装、AI 对话、文件预览和连接交互。 #### 🧩 插件市场与独立更新 - 插件市场切换到 v2:先加载插件摘要,再按需获取各插件的版本历史并校验内容;继续按应用版本和平台选择最高兼容版本。 - 新增按名称、最近更新、最近上架排序,记住用户选择。排序作用于完整筛选结果,再进行分页;切换排序时回到第一页,保留搜索和分类条件。 - 安装采用队列和单插件状态,分别显示安装中、排队、失败重试和取消排队入口;安装期间仍可搜索、筛选、翻页和添加其他安装任务。 - 市场与已安装插件的展开详情显示许可证;插件提供相应地址时,可查看许可证和第三方许可说明。 - 缺少、禁用或不兼容的 ACP、RDP、VNC、Mosh 插件会提供明确说明和插件管理入口,避免旧连接升级后只显示“提供器不可用”。 #### 🔌 ACP 与远程连接插件 - Codex、Claude Code 的 ACP 适配器,以及 RDP、VNC 和 Mosh 的运行程序改为从市场插件加载,独立于主程序更新。原生聊天、远程桌面、终端、连接配置和认证流程继续由应用提供。 - ACP 代理通过标准 ACP 直接与主程序通信;RDP/VNC 和 Mosh 也使用各自的专用通信协议。停用、更新或卸载插件时会停止其相关进程和会话。 - 删除设置中的 ACP 页面。安装并启用 ACP 插件后自动创建代理配置,无须填写启动命令;工作目录、额外参数和环境变量仍可按需设置。 - 支持复用本机已安装的 OpenCode、Antigravity、Cursor、Grok Build、GitHub Copilot CLI、Qwen Code 和 Kimi CLI。此类插件负责发现和启动程序,用户需要先安装对应官方命令行程序并完成登录。 - 接入 Cursor 的提问选择和计划确认,支持单选、多选、批准、拒绝及取消,避免代理等待这些交互时停滞。 - RDP/VNC 连接底栏与工作区状态栏对齐;SSH 活动会话的展开箭头与其他连接类型统一。Nix 打包同步移除已外置的远程桌面程序。 #### 🔐 FIDO 安全密钥认证 - 新增 FIDO Security Key 插件入口,支持使用现有 `ed25519-sk`、`ecdsa-sk` 私钥文件进行 SSH 认证;应用提供原生 PIN 输入、触摸提示和取消操作。 - 签名程序按认证请求启动,通过私有管道通信,校验协议版本和签名,并在取消、超时或插件停用后停止并回收。PIN 和凭据句柄不写入设置或日志,临时缓冲区使用后清理。 - 插件不生成安全密钥、不导出设备私钥、不缓存 PIN;请先通过支持 FIDO 的 OpenSSH 生成密钥并将公钥配置到服务器。协议和软件签名路径已有验证,真实设备的触摸、PIN 和 SSH 登录仍需硬件实测。 #### 🎨 动态语言支持 - 语言插件可声明语言名称、扩展名和精确文件名;宿主动态识别并提供安装入口,后续新增语言不再需要逐个修改主程序中的语言名单。 - 安装、启用、停用或更新语言插件后,已打开的编辑器和本地、SFTP 代码预览会刷新语言支持。 - 支持插件携带嵌入语法,供 Vue、Svelte 等混合语言文件分别高亮脚本、样式与标记内容。 - 市场新增 XML、DTD、INI、Kotlin、Dart、Nix、Julia、Vue、Svelte、Slint,以及 AWK、jq、Justfile、Groovy、Clojure/ClojureScript、Erlang、OCaml、OCaml Interface 和 Typst 等语言插件。Lua、TOML、YAML 继续内置。 #### 💬 AI 与工作区体验 - AI 工具活动改为紧凑的平面列表,聚合相关工具调用,展示状态、数量和耗时,并可展开查看具体调用与结果;减少逐项卡片占用的空间。 - ACP 上下文用量使用代理报告的数据,不再用普通模型对话历史的估算值代替,避免过早显示接近上限的提示。 - 动态运行观察放在固定提示前缀之后,保留最新目标、状态和时间信息,同时减少固定提示内容的变化。 - 开始页的连接、终端、导入和管理入口统一为按钮,保留最近连接和快捷键入口。 - 本地 PDF 预览上限放宽至 100 MiB,本地音视频直接使用原文件播放。其他本地预览仍保留原有大小限制,SFTP 预览限制不变。 #### 🛠️ 连接与输入修复 - 本地与 SFTP 路径栏按 Enter 默认进入输入的路径;只有方向键明确选择候选后才进入候选目录,Tab 仍可接受补全,避免候选加载快慢改变导航结果。(Issue [#659](https://github.com/AnalyseDeCircuit/oxideterm/issues/659)) - 终端右键菜单按实际渲染尺寸定位,在窗口边缘正确调整位置,覆盖缩放显示和插件菜单。(Issue [#658](https://github.com/AnalyseDeCircuit/oxideterm/issues/658)) - SSH 交互式认证弹窗使用不透明遮罩,并在等待输入期间暂停连接动画,减少光标和倒计时重绘触发的图形工作。(Issue [#612](https://github.com/AnalyseDeCircuit/oxideterm/issues/612)) #### 📌 升级说明 - 从旧版升级后,请在插件市场安装并启用需要的 ACP、RDP、VNC、Mosh 插件;原连接配置继续使用。各插件的平台支持与外部程序要求以详情为准。 - FIDO 和新增动态语言能力需要 OxideTerm 2.2.2 或更高版本;原生进程插件仍需用户确认本机代码权限。 - 插件市场 v1 已永久冻结,原地址、索引内容和对应安装包继续保留。后续插件及版本只更新 v2,旧客户端需升级主程序才能获取新的插件和更新。 ### English OxideTerm 2.2.2 moves ACP adapters, RDP/VNC engines, and Mosh transport into independently updated plugins, adds FIDO security-key authentication, and introduces the extensible v2 marketplace. Plugins can now declare language associations and embedded grammars dynamically, alongside improvements to plugin installation, AI conversations, file previews, and connection interactions. #### 🧩 Marketplace and independent updates - Switched the marketplace to v2: plugin summaries load first, with individual version histories fetched and verified on demand. The client continues to select the highest release compatible with the application and platform. - Added sorting by name, recently updated, and newly listed, with the selection saved. Sorting applies to the complete filtered result before pagination; changing it returns to the first page while preserving search and category filters. - Added an installation queue with individual installing, queued, retry, and cancel-queued states. Search, filters, pagination, and additional installation requests remain available during installation. - Expanded marketplace and installed-plugin details display the license, with links to license text and third-party notices when provided by the plugin. - Missing, disabled, or incompatible ACP, RDP, VNC, and Mosh plugins now show explicit guidance and a plugin-management entry, replacing ambiguous provider-unavailable messages after upgrades. #### 🔌 ACP and remote connection plugins - Codex and Claude Code ACP adapters, plus RDP, VNC, and Mosh executables, now load from marketplace plugins and update independently. The application retains its native chat, remote desktop, terminal, connection profiles, and authentication flows. - ACP agents communicate directly with the application using standard ACP; RDP/VNC and Mosh use their dedicated protocols. Disabling, updating, or uninstalling a plugin stops its associated processes and sessions. - Removed the ACP settings page. Installing and enabling an ACP plugin automatically creates its agent configuration without a startup-command form. Working directory, additional arguments, and environment variables remain optional settings. - Added launchers for locally installed OpenCode, Antigravity, Cursor, Grok Build, GitHub Copilot CLI, Qwen Code, and Kimi CLI. These plugins discover and start the program; users must install and sign in to the corresponding official CLI first. - Integrated Cursor question selection and plan confirmation, including single choice, multiple choice, approval, rejection, and cancellation, so agents can complete these interactions. - Aligned the RDP/VNC footer with the workspace status bar and the SSH session expansion arrow with other connection types. Nix packaging also stops bundling the extracted remote desktop executables. #### 🔐 FIDO security-key authentication - Added integration with the FIDO Security Key plugin for SSH authentication using existing `ed25519-sk` and `ecdsa-sk` private-key files, with native PIN, touch, and cancellation prompts. - Starts the signing provider on demand through private pipes, verifies protocol versions and signatures, and stops and reaps it on cancellation, timeout, or plugin retirement. PINs and credential handles are excluded from settings and logs, and temporary buffers are cleared after use. - The plugin does not enroll keys, export device private keys, or cache PINs. Generate keys with FIDO-capable OpenSSH and configure the public key on the server first. Protocol and software-signing paths have been verified; real-device touch, PIN, and SSH login still need hardware validation. #### 🎨 Dynamic language support - Language plugins can declare language names, extensions, and exact filenames. The host discovers these associations and installation entries dynamically, allowing future languages without adding each one to a host-side list. - Open editors and local or SFTP code previews refresh language support when plugins are installed, enabled, disabled, or updated. - Plugins can include embedded grammars so mixed-language files such as Vue and Svelte highlight scripts, styles, and markup separately. - Added marketplace plugins for XML, DTD, INI, Kotlin, Dart, Nix, Julia, Vue, Svelte, Slint, AWK, jq, Justfile, Groovy, Clojure/ClojureScript, Erlang, OCaml, OCaml Interface, and Typst. Lua, TOML, and YAML remain built in. #### 💬 AI and workspace experience - Replaced individual AI tool cards with compact flat activity lists that group related calls, show status, count, and duration, and expand to reveal calls and results. - ACP context usage now uses agent-reported data instead of ordinary model-history estimates, avoiding premature context-limit warnings. - Placed changing runtime observations after the stable prompt prefix, retaining current targets, state, and timestamps while reducing changes to the fixed prompt. - Unified the start page's connection, terminal, import, and management entries as buttons, retaining recent connections and shortcut entries. - Raised the local PDF preview limit to 100 MiB. Local audio and video play from the original files. Other local previews retain their existing limits, and SFTP preview limits are unchanged. #### 🛠️ Connection and input fixes - Enter in local and SFTP path bars now opens the typed path by default. A completion is opened only after explicit arrow-key selection; Tab still accepts completion, so suggestion timing no longer changes navigation. (Issue [#659](https://github.com/AnalyseDeCircuit/oxideterm/issues/659)) - Terminal context menus use their rendered size for positioning and correctly adjust at window edges, including scaled displays and plugin menus. (Issue [#658](https://github.com/AnalyseDeCircuit/oxideterm/issues/658)) - SSH interactive-authentication dialogs now use an opaque overlay and pause connection animations while awaiting input, reducing graphical work triggered by cursor and countdown redraws. (Issue [#612](https://github.com/AnalyseDeCircuit/oxideterm/issues/612)) #### 📌 Upgrade notes - After upgrading, install and enable the ACP, RDP, VNC, or Mosh plugins you need from the marketplace. Existing connection profiles remain usable; consult plugin details for platform support and external-program requirements. - FIDO integration and the new dynamic-language capabilities require OxideTerm 2.2.2 or later. Native process plugins still require approval to run local code. - Marketplace v1 is permanently frozen, with its original URL, index contents, and packages retained. Future plugins and releases are published only to v2; older clients must upgrade the application to receive them. ## 2.2.1 ### 中文 OxideTerm 2.2.1 完善了插件市场、按需语言支持和文件预览,新增供工作概览、主机来源与文本工具使用的原生插件能力。同时,本版本升级云同步合并与恢复机制,支持分别设置应用和终端主题,并修复 SFTP 文件夹上传导致连接中断、IDE 多选、终端输入和 Windows 控制台兼容问题。 #### 🧩 插件市场与按需语言支持 - 插件市场和已安装列表统一采用紧凑行布局,保留介绍、版本、状态与操作入口,展开详情减少重复说明和嵌套容器。分类来自市场索引,已安装插件也可以按分类筛选。 - 两个列表均支持分页,默认每页 10 项,可自定义每页数量并直接跳转页码;每页数量设置放在列表底部。启用、禁用等结果提示使用插件名称。 - 修复插件管理器搜索框及分页输入框获得焦点后无法输入文字的问题。 - 刷新插件列表或启用、禁用、卸载其他插件时,保留未发生变化的运行中插件入口和界面,修复 Toolbox 等插件报“标签页未声明”的问题。 - 插件入口集中排列在内置工具下方,以分隔线区分;修复插件侧栏面板声明底部位置却显示在上方的问题。插件标签页复用应用统一页头、原生控件和主题。 - 将 C、C++、C#、CSS、Common Lisp、Elixir、Go、HTML、Java、JavaScript、Objective-C、Perl、PHP、R、Ruby、Rust、Scala、Swift、TypeScript、TSX、Zig 共 21 种语言的语法支持移入独立插件;另增加 Nginx、Terraform/HCL 和 Protobuf 的识别与插件入口。 - 继续内置 Bash、Zsh、Fish、PowerShell、JSON、YAML、TOML、Markdown、Dockerfile、Make、CMake、Diff、Python、Lua、SQL 共 15 种语言。外置语言缺少插件时仍可编辑文件,并通过语言插件提示补装语法支持。 - 市场按当前主程序和平台选择最高兼容插件版本,区分可安装更新与需要升级主程序的新版。启动时重新检查已安装插件,覆盖应用升级和降级;不兼容时保留插件文件和设置。 #### 🔎 原生文件预览与插件工作区 - 本地文件管理器和 SFTP 的文件预览入口支持调用已安装的 PDF、SQLite、证书和二进制检查插件,无需为每种文件打开额外工作区。 - 本地代码预览也会显示缺少语言支持的安装入口;只读预览接入原生编辑器,并在安装语言插件后更新高亮。 - PDF 预览支持翻页;SQLite 使用原生表格展示表和分页数据,保持只读。远程数据库存在非空 WAL、回滚日志或下载期间发生变化时会拒绝预览,避免展示不完整的数据库副本。 - 证书预览支持浏览同一文件中的多个证书,分别展示有效期和详细字段;有效期不等同于系统信任或吊销检查。二进制检查可展示格式、架构和节区,并结合现有十六进制预览定位文件偏移。 - 关闭预览会取消相关后台任务并释放远程临时文件,继续使用共享 SSH 连接的终端和其他消费者不受影响。进程插件沿用启用时的本机代码信任确认。 - 为 Workspace Dashboard 提供工作区状态摘要和跳转能力,可聚合最近连接、活动标签页、录制状态、连接与插件问题,并返回对应应用页面;终端正文和诊断内容不包含在摘要中。 - 为 Tailscale、Ansible 等主机来源插件提供原生连接表单入口:发现的主机信息交由用户检查并配置认证,再保存或连接。 - 为 Toolbox 等文本工具提供多行输入、只读结果、复制及连续处理能力。终端右键入口在点击时捕获选区,切换标签后仍使用当时选择的内容;结果不会自动发送回终端。 #### ☁️ 云同步合并与恢复 - 云同步改为汇总各设备的独立加密快照,自动合并互不冲突的修改;并发冲突保留候选值,由用户明确选择。未纳入同步的资源不会因此从云端删除。 - 新增同步应用中断后的恢复记录,协调连接、转发、设置、快捷命令、插件数据和凭据变更。上传重试复用已准备的数据,上传期间的新本地修改继续保留待同步状态。 - 桌面、命令行和 MCP 使用同一同步流程;命令行支持预览合并结果后再应用。旧云端数据可导入新机制,原对象保留,旧版 `.oxide` 文件仍可读取。 - 修复旧备份和旧云同步数据升级时丢失应用主题选择的问题。 #### 🎨 主题与工作区 - 应用界面和终端配色可以分别选择,并在设置中通过同一个工作区预览查看组合效果;透明度在接近不透明的区间提供更细调整。(PR [#650](https://github.com/AnalyseDeCircuit/oxideterm/pull/650)) - 终端使用当前配色响应颜色查询和明暗外观请求;SSH 主题更新通过队列发送,避免阻塞界面。(PR [#650](https://github.com/AnalyseDeCircuit/oxideterm/pull/650)) - 各类工作区页面均可放入分屏标签布局。IDE 文件树支持修饰键多选、连续选择和对应批量操作,底栏高度与其他工作区统一。 - 命令面板可以找到已保存的本地终端和 WSL 配置;启动失败会在工作区显示原因,列表悬停状态也能正确刷新。(PR [#649](https://github.com/AnalyseDeCircuit/oxideterm/pull/649)) #### 🛠️ 连接、传输与终端修复 - 修复 SFTP 上传文件夹时共享 SSH 传输可能被关闭、连带断开终端的问题,完善底层通道流控和断开诊断。 - 恢复已保存连接的认证选择,并仅在认证成功后持久化用户确认的凭据,确保保存目标对应实际完成认证的连接。(PR [#647](https://github.com/AnalyseDeCircuit/oxideterm/pull/647)) - 修复 JumpServer 等回显验证码提示下的 TOTP 自动填写,以及便携模式从错误目录查找用户 SSH 配置的问题。 - trzsz 和 ZMODEM 下载正确执行用户选择的覆盖行为。 - 修复双向文本中的宽字符网格定位、输入法候选位置与预编辑颜色、触控板滚动增量,以及括号粘贴中的换行保留。(PR [#651](https://github.com/AnalyseDeCircuit/oxideterm/pull/651)) - Windows 随包提供固定版本的 ConPTY,修复管道就绪与空读取处理、Ctrl+J 身份以及按键释放与已发送按下事件的配对。(PR [#648](https://github.com/AnalyseDeCircuit/oxideterm/pull/648)) - 修复窗口宽度或时间戳栏变化时,未修改的终端行被重新标记为当前时间的问题;保留对有样式空白的实际内容变化识别。(PR [#655](https://github.com/AnalyseDeCircuit/oxideterm/pull/655)) - 更新原生界面依赖与相关平台适配,撤回会触发重复悬停样式断言的标签页改动。 #### 👥 贡献者 - @stabey:贡献应用与终端主题分离、本地和 WSL 配置查找、SSH 认证恢复,以及终端输入和 Windows 控制台修复。(PR [#647](https://github.com/AnalyseDeCircuit/oxideterm/pull/647)、PR [#648](https://github.com/AnalyseDeCircuit/oxideterm/pull/648)、PR [#649](https://github.com/AnalyseDeCircuit/oxideterm/pull/649)、PR [#650](https://github.com/AnalyseDeCircuit/oxideterm/pull/650)、PR [#651](https://github.com/AnalyseDeCircuit/oxideterm/pull/651)) - @m00nLi:修复终端行时间戳随网格宽度变化而错误更新的问题。(PR [#655](https://github.com/AnalyseDeCircuit/oxideterm/pull/655)) #### 📌 升级说明 - 外置语言及本次新增宿主能力对应的插件需要 OxideTerm 2.2.1 或更高版本,通过插件市场按需安装;插件独立发布,具体平台支持和运行依赖以插件详情为准。 - 多设备同步请将参与设备统一升级。新版本升级旧云端数据后使用新的同步机制,不再向旧机制回写;HTTP JSON 自托管后端需要支持新的对象列表和删除接口。 - RDP、VNC 本版继续内置,插件化安排在后续版本。 ### English OxideTerm 2.2.1 improves the plugin marketplace, on-demand language support, and file previews, with native plugin capabilities for workspace summaries, host discovery, and text tools. This release also upgrades cloud-sync merging and recovery, separates application and terminal themes, and fixes shared SSH disconnects during SFTP directory uploads, IDE multiselection, terminal input, and Windows console behavior. #### 🧩 Plugin marketplace and on-demand languages - The marketplace and installed-plugin pages use compact rows with descriptions, versions, status, and actions. Expanded details remove repeated descriptions and nested containers. Categories come from the catalog and also filter installed plugins. - Both lists support pagination, defaulting to 10 entries per page, with a custom page size and direct page navigation. Page-size controls appear below the list, and enable/disable notifications use plugin names. - Fixed focused search and pagination fields in the plugin manager not accepting text input. - Refreshing the plugin list or enabling, disabling, or uninstalling another plugin preserves unchanged running plugins' navigation entries and views, fixing undeclared-tab errors in plugins such as Toolbox. - Plugin navigation entries are grouped below built-in tools with a separator. Plugin sidebar panels now honor their declared bottom position. Plugin tabs reuse the application's page headers, native controls, and themes. - Moved syntax support for 21 languages into independent plugins: C, C++, C#, CSS, Common Lisp, Elixir, Go, HTML, Java, JavaScript, Objective-C, Perl, PHP, R, Ruby, Rust, Scala, Swift, TypeScript, TSX, and Zig. Added file recognition and plugin entry points for Nginx, Terraform/HCL, and Protobuf. - Kept 15 languages built in: Bash, Zsh, Fish, PowerShell, JSON, YAML, TOML, Markdown, Dockerfile, Make, CMake, Diff, Python, Lua, and SQL. Files remain editable when an external language plugin is missing, with a prompt to install syntax support. - The marketplace selects the highest plugin version compatible with the host and platform, distinguishing available updates from newer releases that require an application upgrade. Installed plugins are checked again at startup after upgrades or downgrades; incompatible plugins retain their files and settings. #### 🔎 Native file previews and plugin workspaces - Local file-manager and SFTP previews can use installed PDF, SQLite, certificate, and binary-inspection plugins through the existing preview entry point. - Local code previews also offer installation of missing language support. Read-only previews use the native editor and update highlighting after a language plugin is installed. - PDF previews support page navigation. SQLite previews provide read-only native tables with table selection and pagination. Remote databases with nonempty WAL or rollback journals, or changes during download, are rejected to avoid displaying an incomplete copy. - Certificate previews browse multiple certificates in one file and show validity dates separately from trust or revocation verification. Binary inspection displays format, architecture, and sections, with offset navigation through the existing hexadecimal preview. - Closing a preview cancels its background work and releases remote temporary files without disconnecting other consumers of the shared SSH connection. Process plugins retain the existing enable-time approval for trusted local code. - Added workspace summaries and navigation for Workspace Dashboard, supporting recent connections, active tabs, recording states, connection and plugin issues, and links back to application pages. Summaries exclude terminal content and diagnostic text. - Host-source plugins such as Tailscale and Ansible can open the native connection form with discovered host metadata for users to review, configure authentication, and then save or connect. - Text tools such as Toolbox can use multiline input, read-only results, copying, and chained operations. Terminal context-menu actions capture the selection at click time, preserve it across tab changes, and never send results back to the terminal automatically. #### ☁️ Cloud-sync merging and recovery - Cloud sync now combines independent encrypted snapshots from participating devices, automatically merging nonconflicting edits and retaining concurrent candidates for explicit resolution. Excluding a resource from sync does not delete it remotely. - Added recovery records for interrupted application of connection, forwarding, settings, Quick Command, plugin, and credential changes. Upload retries reuse prepared data, while edits made during upload remain pending for the next sync. - Desktop, CLI, and MCP share the synchronization flow, with CLI support for previewing merges before applying them. Legacy cloud data can be imported into the new mechanism without deleting the original objects, and older `.oxide` files remain readable. - Fixed application-theme preservation when upgrading legacy backups and cloud-sync data. #### 🎨 Themes and workspaces - Application and terminal themes can be selected independently and viewed together in a workspace preview. Opacity offers finer adjustment near the opaque end of the slider. (PR [#650](https://github.com/AnalyseDeCircuit/oxideterm/pull/650)) - Terminal color and appearance queries use the active palette. SSH palette updates are queued to avoid blocking the interface. (PR [#650](https://github.com/AnalyseDeCircuit/oxideterm/pull/650)) - Workspace pages can share split-tab layouts. The IDE file tree supports modifier-key multiselection, range selection, and related batch actions, with a bottom bar aligned to other workspaces. - The command palette finds saved local-terminal and WSL profiles. Launch failures surface in the workspace, and hovered list rows refresh correctly. (PR [#649](https://github.com/AnalyseDeCircuit/oxideterm/pull/649)) #### 🛠️ Connection, transfer, and terminal fixes - Fixed shared SSH transport shutdown during SFTP directory uploads, which could also disconnect the terminal, with improvements to channel flow control and disconnect diagnostics. - Restored saved authentication choices and persisted confirmed credentials only after successful authentication, against the connection that actually authenticated. (PR [#647](https://github.com/AnalyseDeCircuit/oxideterm/pull/647)) - Fixed TOTP autofill for echoed verification prompts such as JumpServer's, and SSH configuration discovery from the wrong directory in portable mode. - trzsz and ZMODEM downloads honor the requested overwrite behavior. - Fixed wide-glyph placement in bidirectional rows, IME caret positioning and preedit colors, touchpad scroll accumulation, and newline preservation in bracketed paste. (PR [#651](https://github.com/AnalyseDeCircuit/oxideterm/pull/651)) - Bundled a pinned ConPTY runtime on Windows and fixed pipe readiness, empty reads, Ctrl+J identity, and key-release pairing with delivered key presses. (PR [#648](https://github.com/AnalyseDeCircuit/oxideterm/pull/648)) - Fixed unchanged terminal rows receiving new timestamps when the window or timestamp gutter changes width, while preserving detection of meaningful styled-blank changes. (PR [#655](https://github.com/AnalyseDeCircuit/oxideterm/pull/655)) - Updated native UI dependencies and platform integration, and reverted tab hover changes that could trigger a duplicate-hover-style assertion. #### 👥 Contributors - @stabey contributed independent application and terminal themes, saved local and WSL profile discovery, SSH authentication restoration, terminal input fixes, and Windows console fixes. (PR [#647](https://github.com/AnalyseDeCircuit/oxideterm/pull/647), PR [#648](https://github.com/AnalyseDeCircuit/oxideterm/pull/648), PR [#649](https://github.com/AnalyseDeCircuit/oxideterm/pull/649), PR [#650](https://github.com/AnalyseDeCircuit/oxideterm/pull/650), PR [#651](https://github.com/AnalyseDeCircuit/oxideterm/pull/651)) - @m00nLi fixed terminal row timestamps changing when the grid width changes. (PR [#655](https://github.com/AnalyseDeCircuit/oxideterm/pull/655)) #### 📌 Upgrade notes - External language plugins and plugins using the new host capabilities require OxideTerm 2.2.1 or later and are installed separately through the marketplace. Consult each plugin's details for supported platforms and runtime dependencies. - Upgrade all participating devices for multi-device sync. After importing legacy cloud data, the new client uses the new synchronization mechanism and does not write back to the legacy one. Self-hosted HTTP JSON backends must support the new object-listing and deletion endpoints. - RDP and VNC remain bundled in this release; plugin migration is planned for a later version. ## 2.2.0 ### 中文 OxideTerm 2.2.0 新增了通知与审计工作区、加密会话录制和可复用的 TOTP 验证码凭据,让连接、命令、文件操作及自动化任务可以在同一个应用中回顾。同时,本版本加入终端粘贴编辑,完善本地会话管理和快捷命令分组,提供 Linux Nix 安装方式,并修复云同步闪退、Windows 终端输出和 Linux 录制恢复等问题。 #### 📋 通知与审计工作区 - 通知中心扩展为“通知与审计”,提供通知、审计记录、会话汇总和会话录制入口。审计开关直接显示在页面顶部,**默认关闭**;开启后记录后续操作,关闭后仍可查看已经保存的记录。 - 审计记录可以按时间、类别、级别、事件来源和结果筛选,并按内容、连接、会话、本机账号或远程账号等字段搜索。记录详情展示操作过程、耗时、结果依据,以及可获得的退出码或传输字节数。 - 会话视图汇总命令、文件操作、其他操作和连接次数,支持继续查看该会话的相关记录。操作详情可沿父子关系查看子操作,方便追踪一次请求触发的后续任务。 - 事件来源区分用户、命令栏、快捷命令、广播、AI、MCP、插件、命令行和系统。操作结果区分已发送、成功、失败、取消、部分完成、中断和未知,保留判断结果所依据的协议响应、退出码或生命周期事件。 - 操作记录的默认保留策略为 **90 天、512 MiB**。保留天数和容量均可直接输入,支持 1–3650 天和 1 MiB–64 GiB;达到保留条件后自动清理,也可手动清除记录。 - 支持按当前筛选范围导出 JSON 或 CSV 摘要。需要命令、路径、账号和端点等详情时,可单独选择“导出受保护详情”,确认后生成明文文件。 使用方法:打开侧栏的“通知与审计”,在顶部启用审计,再通过筛选和会话汇总查看操作。审计数据在本机保存,敏感详情加密存储。 #### 🔎 覆盖连接、文件和自动化操作 - SSH 审计覆盖主机密钥验证、认证尝试、交互式认证、连接状态、共享连接使用关系和重连阶段。终端与文件浏览等功能共用连接时,记录仍保留各自的会话、通道和实际连接代次。 - 本地终端、Telnet、Mosh、串口以及远程桌面的连接和退出过程接入审计;串口控制、Telnet 控制、远程桌面剪贴板与文件传输等操作也有相应记录。 - 终端命令、快捷命令、广播发送和 tmux 操作可以追溯到发起入口。命令完成状态使用可获得的 Shell 集成或退出码信息,单纯发送输入会保留“已发送”这一结果。 - 文件审计覆盖本地和远程文件浏览、搜索、预览、打开、创建目录、复制、移动、重命名、删除、上传下载及编辑器保存,也记录传输的暂停、恢复、取消和中断,以及文件冲突处理。 - 端口转发的创建、启动、停止、暂停、恢复和规则变更接入审计;主机面板中的进程、服务、容器、计划任务及日志查询等操作保留对应目标和结果。 - 设置、连接配置、密钥与凭据管理、云同步、备份恢复、应用锁、便携保险库、更新和诊断报告等操作接入记录。凭据管理记录操作及结果,省略密码、私钥和令牌内容。 - AI 工具调用、后台任务、MCP 请求及权限变更、插件操作和知识库管理可以关联到具体请求。授权、拒绝、取消和执行结果保留各自状态,便于了解自动化任务执行到了哪一步。 #### 🎞️ 加密会话录制与回放 - 新增本地终端、SSH、Telnet、Mosh 和串口的审计录制,保存终端显示的输出与尺寸变化。**输出录制默认关闭**,首次开启时会单独确认。 - 录制内容在本地加密保存,不参与云同步;不采集键盘输入和终端文件传输载荷。终端显示出的敏感内容仍可能进入录制,开启时会明确提示。 - 录制页面支持播放、暂停、从头播放、时间定位和倍速播放,并显示录制中、已结束、已中断、不完整或已过期等状态。回放按需读取内容,长录制无需一次载入全部输出。 - 录制使用有容量上限的队列与后台写入。存储处理不及时会向终端读取路径传递背压,输入、取消和关闭继续获得处理;输出及尺寸变化保持原有顺序,采集缺口会明确标记。 - 修复 Linux 在录制队列恢复容量后,PTY 读取未重新启用、持续输出停住的问题。 - 录制内容默认保留 **7 天、2 GiB**,可独立于操作记录设置保留时间和容量。 使用方法:先启用审计,再进入“会话录制”开启“记录终端输出”。需要回顾时,从录制列表打开对应会话。 #### 🔐 可复用的 TOTP 验证码凭据 - “设置 → 凭据”统一放置提权凭据和动态验证码凭据。TOTP 支持 Base32 密钥及 `otpauth://` 链接,并支持 SHA-1、SHA-256、SHA-512、6 位或 8 位验证码和自定义更新周期。 - 一个验证码凭据可以供多个 SSH 连接使用,目标主机和各级跳板分别选择自己的凭据。它可以配合已有密码、密钥或交互式认证使用。 - 自动填写仅处理 SSH 认证阶段的提示。默认识别 `MFA CODE`、`Verification code`、`OTP` 等验证码提示,也支持自定义正则表达式;只有一个明确匹配的隐藏输入项时才自动填写。 - 同一轮认证包含其他问题时,先收集人工回答,再生成当前验证码。每次认证只自动提交一次,服务器继续追问时转为人工输入;多个连接需要人工验证时会排队显示。 - 密钥存入受保护存储,连接配置只保存凭据引用。凭据可编辑、停用并被多个连接共用,仍有连接绑定时会阻止删除。 - 加密连接文件和云同步保留凭据及连接之间的关系,仅在选择包含敏感凭据时携带密钥。接收端将密钥存入自己的受保护存储;仅同步元数据时,不会把旧密钥当成已经更新的新密钥。 使用方法:在“设置 → 凭据”中添加动态验证码凭据,然后在 SSH 连接或跳板的编辑页面选择它。 #### ✍️ 终端粘贴前编辑 - 新增“编辑后粘贴”,使用应用现有编辑器修改剪贴板中的命令或脚本,支持多行编辑、选择和撤销。多行粘贴确认流程也可以进入编辑,确认后才发送到终端。 - 提供明确的代码围栏移除操作,方便处理从 Markdown 文档或对话中复制的代码块。仅在用户选择该操作时移除包裹代码的围栏。 - 打开编辑器后未修改内容,或撤销全部修改时,保留原始粘贴内容及换行;编辑后的内容保留来源的 CRLF 换行约定。 #### 💻 本地会话与远程终端管理 - 已保存的本地终端配置在侧栏拥有独立的会话条目,按配置组织正在运行的终端;可以折叠、展开,并从该配置继续新建终端。(PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - 选择本地会话时可以聚焦其运行中的终端,移除会话会关闭该配置对应的终端并记住侧栏隐藏状态;从会话管理器重新打开配置后,会再次显示并获得焦点。(PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - 修复 Windows 将暂时没有输出的 PTY 读取误判为结束,导致后续终端输出不再显示的问题。(PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - SSH、Telnet、Mosh 和串口会话结束后保留终端窗格与已有输出,便于查看退出原因或最后的错误信息;本地命令行环境保留原有退出自动关闭行为。 - 打开会话不再改变用户选择的侧栏可见状态,退出专注模式时恢复原有侧栏选择。 #### 🗂️ 快捷命令分组 - 支持删除“系统”“网络”“文件”“Docker”等预设分组,组内命令会移动到“自定义”分组。“自定义”作为接收命令的默认分组保留。 - 在快捷命令管理页拖动分组左侧的手柄即可调整顺序,重启后保持排序。 - 删除和排序在保存成功后生效;保存失败时保留原有分组及命令状态。 #### 🛠️ 界面、输入与同步修复 - 修复云同步预览渲染中的状态借用冲突,解决相关同步及本地导出流程可能触发的闪退。 - 修复终端视口短暂改变后恢复原尺寸,仍应用过期尺寸请求的问题,避免侧栏动画等操作留下错误的终端行列数。 - 修复相邻滚动区域共用交互状态导致滚动异常的问题,让各区域保持独立滚动。 - 终端右键菜单和串口传输菜单会随焦点离开而关闭,打开串口传输菜单时先聚焦对应窗格。 - 手动 X/Y/ZMODEM 操作集中到串口控制栏的“二进制传输”;SSH 等终端继续在检测到远端传输程序后提示选择文件或目录。传输失败提示区分超时、协议错误、文件读写和文件过大等原因。 - 修复替换已保存密码时首个字符与光标位置不同步的问题,以及会话日志遇到连续回车或跨数据块回车时产生多余空行的问题。 - 终端与 IDE 的中文/CJK 字体设置均支持手动填写自定义字体名称。笔记页面未使用背景图片时恢复不透明背景。 - 审计事件、会话和录制列表的行背景及分隔线铺满可用宽度,搜索与保留策略字段使用现有输入框交互。 - Windows 安装脚本明确采用 UTF-8 编码,修复本地化安装提示在系统代码页下显示异常的问题。 #### 🐧 Linux Nix 支持与项目文档 - 新增 Linux x86_64 和 aarch64 的 Nix Flake,提供应用包、命令行入口、开发环境、overlay 与 NixOS 模块,可使用 `nix build .#oxideterm`、`nix run .#oxideterm` 或 `nix develop`。(PR [#623](https://github.com/AnalyseDeCircuit/oxideterm/pull/623)) - Nix 安装由应用识别,更新交由 Nix 管理;包内包含运行所需资源、辅助程序和桌面集成,并完善 Linux 视频预览依赖处理。(PR [#623](https://github.com/AnalyseDeCircuit/oxideterm/pull/623)) - 更新 Nix 使用的 SSH 依赖哈希,加入打包校验,并补充 Nix 构建、开发及依赖维护文档。(PR [#632](https://github.com/AnalyseDeCircuit/oxideterm/pull/632)) - Nix 校验现由独立工作流执行,按相关文件变更触发,也可手动运行。 - 各语言 README 增加贡献者墙及内存占用对比说明,更新了相关用户指南。 #### 👥 贡献者 感谢以下外部贡献者参与本次更新: - @dzzzc:完善已保存本地会话的侧栏管理、移除与聚焦行为,并修复 Windows PTY 后续输出丢失的问题。(PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - @sgnay:引入 Linux Nix 打包、NixOS 集成及 Nix 更新识别,并完善依赖哈希、打包校验和维护文档。(PR [#623](https://github.com/AnalyseDeCircuit/oxideterm/pull/623)、PR [#632](https://github.com/AnalyseDeCircuit/oxideterm/pull/632)) #### 📌 使用与升级说明 - 审计与会话输出录制均需主动开启。操作记录和输出录制的保留策略分别管理,关闭审计不会删除已有记录。 - 审计记录反映 OxideTerm 能观察到的操作及结果;本机账号表示操作系统会话,命令退出状态取决于对应协议或 Shell 集成提供的信息。 - 选择导出受保护详情会生成明文文件;会话录制则继续在本机加密保存,不随云同步上传。 - Nix 安装请通过 Nix 更新;其他安装方式继续使用对应平台的安装包或应用内更新。 ### English OxideTerm 2.2.0 introduces a Notification & Audit workspace, encrypted session recordings, and reusable TOTP credentials, bringing connection history, commands, file operations, and automated tasks into one place. This release also adds editing before terminal paste, improves local session management and quick-command groups, introduces Linux Nix packaging, and fixes cloud-sync crashes, Windows terminal output, and Linux recording recovery. #### 📋 Notification & Audit Workspace - Expanded the notification center into Notification & Audit, with views for notifications, audit records, session summaries, and session recordings. The audit switch is visible at the top of the page and is **off by default**. Enabling it captures subsequent operations; existing records remain readable after it is turned off. - Added filtering by time, category, severity, source, and outcome, plus searches for content, connections, sessions, local accounts, and remote accounts. Record details show operation history, duration, the basis for an outcome, and exit codes or transferred bytes when available. - Added session summaries with command, file-operation, other-operation, and connection counts. Open a session's related records or follow parent and child operations to trace the work triggered by a request. - Distinguished user actions, the command bar, quick commands, broadcasts, AI, MCP, plugins, CLI commands, and system activity. Outcomes distinguish sent, succeeded, failed, cancelled, partially completed, interrupted, and unknown, with their supporting protocol response, exit code, or lifecycle event. - Set default operation retention to **90 days and 512 MiB**. Days and capacity accept direct numeric input, from 1–3650 days and 1 MiB–64 GiB. Records are pruned according to these limits and can also be cleared manually. - Added JSON and CSV summary export for the current filters. A separate protected-details export includes commands, paths, accounts, and endpoints in a plaintext file after confirmation. To use it, open Notification & Audit from the sidebar, enable auditing at the top, and use filters or session summaries to review activity. Audit data stays on the device, with sensitive details stored encrypted. #### 🔎 Connection, File, and Automation Coverage - Added SSH auditing for host-key verification, authentication attempts, interactive authentication, connection state, shared-connection consumers, and reconnect stages. Terminals and file browsers sharing a connection retain their own session, channel, and physical-connection identities. - Added connection and exit records for local terminals, Telnet, Mosh, serial sessions, and remote desktops, along with serial controls, Telnet controls, and remote-desktop clipboard and file transfers. - Traced terminal commands, quick commands, broadcasts, and tmux operations back to their entry point. Command completion uses available shell integration or exit-code evidence; sending input alone retains a sent outcome. - Covered local and remote file browsing, search, preview, opening, directory creation, copying, moving, renaming, deletion, uploads, downloads, and editor saves. Records also include transfer pause, resume, cancellation, interruption, and file-conflict decisions. - Added auditing for port-forward creation, start, stop, suspension, restoration, and rule changes, plus host-panel operations involving processes, services, containers, scheduled tasks, and log queries. - Added records for settings, connection profiles, keys and credentials, cloud sync, backup and restore, app lock, the portable vault, updates, and support reports. Credential management records actions and outcomes while omitting passwords, private keys, and tokens. - Associated AI tool calls, background tasks, MCP requests and permission changes, plugin operations, and knowledge-base management with their originating requests. Authorization, denial, cancellation, and execution outcomes retain distinct states. #### 🎞️ Encrypted Session Recording and Playback - Added audit recordings for local terminals, SSH, Telnet, Mosh, and serial sessions, capturing displayed terminal output and size changes. **Output recording is off by default** and requires a separate confirmation when enabled. - Stored recordings locally with encryption and excluded them from cloud sync. Keyboard input and terminal file-transfer payloads are not captured. Sensitive information displayed in terminal output can appear in recordings, as explained when recording is enabled. - Added play, pause, restart, seeking, and playback-speed controls, with active, finished, interrupted, partial, and expired states. Playback reads content as needed instead of loading an entire long recording at once. - Used bounded recording queues and background writes. Slow storage applies backpressure to terminal reads while input, cancellation, and closure continue to be serviced. Output and resize events retain their order, and capture gaps are identified explicitly. - Fixed Linux PTY reads remaining disabled after recording capacity became available again, which could leave sustained output stalled. - Set default recording retention to **7 days and 2 GiB**, configurable independently of operation-record retention. To use it, enable auditing, open Session Recordings, and enable Record Terminal Output. Open a recorded session from the list to review it. #### 🔐 Reusable TOTP Credentials - Brought privilege credentials and TOTP credentials together under Settings → Credentials. TOTP accepts Base32 secrets and `otpauth://` URIs, with SHA-1, SHA-256, SHA-512, six or eight digits, and a configurable period. - Allowed multiple SSH connections to share one TOTP credential, with an explicit selection for the target host and each jump host. TOTP works alongside existing password, key, or interactive authentication. - Limited autofill to SSH authentication prompts. Defaults recognize prompts such as `MFA CODE`, `Verification code`, and `OTP`; custom regular expressions are supported. Autofill requires exactly one matching hidden input. - Collected manual answers to other questions before generating a current code. Each authentication attempt submits a code automatically once, then uses manual input for further challenges. Concurrent manual authentication prompts are queued. - Stored secrets in protected storage and kept credential references in connection profiles. Credentials can be edited, disabled, and shared, with deletion blocked while a saved connection still uses them. - Preserved credential bindings in encrypted connection archives and cloud sync. Secrets are included only when sensitive credentials are selected and are restored into the receiving device's protected storage. Metadata-only synchronization does not reuse an old seed as though it were a newly rotated one. To use it, add a TOTP credential under Settings → Credentials, then select it when editing an SSH connection or jump host. #### ✍️ Edit Before Terminal Paste - Added Edit Before Paste using the existing editor, with multiline editing, selection, and undo. The multiline paste-confirmation flow can also open the editor; content is sent only after confirmation. - Added an explicit code-fence removal action for code copied from Markdown documents or conversations. Surrounding fences are removed only when that action is selected. - Preserved original clipboard content and line endings when no edits remain, including after undoing all changes. Edited content retains the source's CRLF convention. #### 💻 Local Sessions and Remote Terminal Management - Gave saved local terminal profiles persistent sidebar session entries that group their running terminals, support expand and collapse, and can open additional terminals with the same startup configuration. (PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - Focused a running terminal when selecting its local session. Removing a session closes that profile's terminals and remembers its hidden sidebar state; reopening the profile from the session manager restores visibility and focus. (PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - Fixed Windows treating a temporarily empty PTY read as end-of-file, which prevented later terminal output from appearing. (PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - Kept SSH, Telnet, Mosh, and serial terminal panes and their output available after a session ends, making final errors and exit messages readable. Local shells retain their existing automatic close-on-exit behavior. - Preserved the chosen sidebar visibility when opening sessions and restored that choice when leaving Zen mode. #### 🗂️ Quick-Command Groups - Allowed removal of preset groups such as System, Network, Files, and Docker. Their commands move into Custom, which remains the default destination group. - Added drag handles for reordering groups in the quick-command manager, with the order retained after restart. - Applied deletion and reordering only after saving succeeds. A failed save preserves the previous groups and commands. #### 🛠️ Interface, Input, and Sync Fixes - Fixed a state-borrow conflict while rendering cloud-sync previews that could crash related synchronization and local-export flows. - Cancelled obsolete terminal resize requests when the viewport returned to its original size, preventing sidebar animations and similar changes from leaving the terminal with incorrect dimensions. - Fixed adjacent scroll areas sharing interaction state, keeping their scrolling independent. - Dismissed terminal context menus and serial-transfer menus when focus leaves the pane, and focused the relevant serial pane before opening its transfer menu. - Consolidated manual X/Y/ZMODEM actions under Binary Transfer in the serial toolbar. SSH and other terminals continue to prompt for files or directories after detecting a remote transfer program. Failure notices now distinguish timeouts, protocol errors, file I/O, and oversized files. - Fixed first-character caret positioning when replacing saved passwords, and extra session-log lines caused by repeated or chunk-split carriage returns. - Added custom Chinese/CJK font names to both terminal and IDE settings. Restored an opaque notes background when no background image is configured. - Made audit-event, session, and recording rows and separators fill the available width, and used the existing input controls for audit search and retention settings. - Explicitly encoded Windows installer scripts as UTF-8 to preserve localized prompts across system code pages. #### 🐧 Linux Nix Support and Documentation - Added a Linux x86_64 and aarch64 Nix flake with application packages, a CLI entry point, a development shell, an overlay, and a NixOS module. Use `nix build .#oxideterm`, `nix run .#oxideterm`, or `nix develop`. (PR [#623](https://github.com/AnalyseDeCircuit/oxideterm/pull/623)) - Recognized Nix installations and delegated updates to Nix. Packages include runtime resources, helpers, and desktop integration, with improved Linux video-preview dependency handling. (PR [#623](https://github.com/AnalyseDeCircuit/oxideterm/pull/623)) - Updated the Nix SSH dependency hash, added package verification, and documented Nix builds, development, and dependency maintenance. (PR [#632](https://github.com/AnalyseDeCircuit/oxideterm/pull/632)) - Moved Nix validation into a dedicated workflow triggered by relevant file changes or manual dispatch. - Added contributor walls and idle-memory comparisons to the localized READMEs and updated related user guides. #### 👥 Contributors Thank you to the external contributors to this release: - @dzzzc: Improved saved local-session sidebar management, removal, and focus, and fixed missing Windows PTY output after an empty read. (PR [#631](https://github.com/AnalyseDeCircuit/oxideterm/pull/631)) - @sgnay: Introduced Linux Nix packaging, NixOS integration, and Nix update detection, then improved dependency hashes, package verification, and maintenance documentation. (PR [#623](https://github.com/AnalyseDeCircuit/oxideterm/pull/623), PR [#632](https://github.com/AnalyseDeCircuit/oxideterm/pull/632)) #### 📌 Usage and Upgrade Notes - Auditing and session-output recording require explicit activation. Operation records and recordings have separate retention settings; turning auditing off preserves existing records. - Audit records describe operations and outcomes observable by OxideTerm. The local account identifies the operating-system session, and command completion depends on information available from the protocol or shell integration. - Exporting protected details creates a plaintext file. Session recordings remain encrypted on the device and are excluded from cloud sync. - Update Nix installations through Nix. Other installations continue to use their platform packages or the in-app updater. ## 2.1.0 ### 中文 OxideTerm 2.1.0 带来了跨主机混合分屏、可重复使用的本地终端配置、更直观的主题预览,以及可折叠的串口和 tmux 控制栏,同时改善了持续输出处理、AI 消息编辑和原生窗口体验。祝大家中秋节快乐!感谢你让 OxideTerm 成为日常工作的一部分。 ![OxideTerm 2.1.0 中秋更新海报](https://raw.githubusercontent.com/AnalyseDeCircuit/oxideterm/d7f50e8b633fc0c01cd0ad600e4c2279a16e36db/docs/media/releases/oxideterm-2.1.0-mid-autumn.png) #### 🪟 跨主机、跨窗口的混合工作区 - 一个标签页现在最多可以容纳四个窗格。本地、SSH、Mosh 终端可以与 SFTP、编辑器、端口转发页面组合,也可以来自不同主机。例如,本地开发终端、远程终端、远程文件和编辑器可以放在同一个布局中协作。 - 新增按边缘放置标签页的交互。将一个标签拖入另一个页面的内容区域,在左、右、上、下边缘松开,即可放到目标窗格旁边。拖动过程中会显示落点预览,组合后的分隔线仍可调整。 - 组合工作区可以整体移到独立窗口,也可以返回主窗口,保留正在运行的会话和分屏布局。移动页面时保留原有会话与页面身份,无需重新建立连接。 - 文件浏览、传输对话框、端口转发操作、键盘焦点和输入路由都与发起操作的窗格及窗口关联。多个文件或转发页面可以保留各自的工作状态;已关闭页面的延迟操作不会误作用到其他页面。 - 窗格相关命令、文件操作和 AI 上下文会跟随混合工作区中当前聚焦的页面。读取多个终端的上下文时,会区分各窗格对应的会话、目标主机和运行环境。 - 串口终端因设备独占访问继续使用独立标签页。混合工作区支持上述终端与工具页面,本次没有将所有应用页面都开放为可分屏窗格。 使用方法:先打开需要的终端或工具页面,将其中一个标签拖到另一个页面的边缘,再按需要继续组合。希望将整组工作放到另一块屏幕上时,可以把组合标签移到新窗口。 #### 💻 可保存的本地终端配置 - 本地终端现在也可以像远程连接一样保存配置,记录名称、命令行环境、起始目录、分组、图标、图标颜色和背景色,方便重新打开常用项目。 - 支持仅连接、仅保存、保存并连接三种操作。仅保存时不要求当前机器已经具备对应环境或目录;实际打开时会先检查启动目标,明确提示环境或目录不可用,避免先创建一个注定失败的会话。 - 本地终端配置已接入会话管理器的搜索、分组、编辑、删除和批量分组操作。打开保存的配置时,也会记录其使用情况。 - 云同步的选择与预览已包含本地终端配置,支持字段差异、冲突合并和删除记录处理。同步的是启动配置,打开它的机器仍需具备对应的命令行环境和目录。 - 新建本地分屏会继承来源终端的启动环境,并在能够取得当前目录时使用该目录。WSL 的起始目录通过其启动参数传入,包含空格的路径也会作为完整参数处理。 - 活动会话侧栏将本地终端集中到一个“本地终端”分组中,数量按正在运行的本地会话统计。每个子项保留自身标题和图标,“新建终端”入口放在现有终端列表底部。 使用方法:在新建连接中选择本地终端,设置命令行环境和工作目录,填写名称并保存。以后即可从会话管理器重新打开,不必每次重复选择。 #### 🎨 主题预览与连接图标 - 主题列表新增配色色板,并与终端示例预览联动。鼠标悬停时可以先查看主题效果,点击或确认后才应用到工作区。 - 支持使用上下方向键、Home、End 浏览并预览主题;Enter 或空格确认,Escape 或 Tab 关闭列表而不应用预览。打开列表时会定位到当前主题。 - 自定义主题预览读取实际配置的背景、前景、光标及所展示的 ANSI 颜色。预览标签与操作提示也会跟随应用语言。 - 新增保留原始色彩的 Ubuntu、Debian、Arch Linux、Linux Mint、Gentoo、Rocky Linux 和 NixOS 发行版图标。SSH 会话可以根据识别到的远程发行版选择图标;明确指定的自定义图标优先显示。 - SSH 连接属性中的“自动”和“自定义”图标选项更加明确。选择后自动收起图标列表,自动模式会解释图标与远程系统的关系。发行版图标的来源说明与许可文件已包含在安装包中。 #### 🎛️ 更清爽、可折叠的串口与 tmux 控制栏 - 将密集的胶囊按钮改为轻量文字控件与短竖线分隔,与终端命令栏的风格保持一致。已开启的设置、当前会话和当前窗口使用主题强调色,不可用操作保持淡化显示。 - 工具栏分为信息行和操作行。串口上行显示连接名称、设备参数、连接状态和端口状态,下行提供发送模式、显示模式、收发换行、回显、刷新、Break、DTR、RTS。tmux 控制模式上行显示会话、窗口和状态,下行提供重命名、命令、切换、新建、分屏、尺寸调整、关闭及分离操作。 - 信息行最左侧新增固定折叠箭头,可隐藏或恢复下方操作行,并始终保留连接信息。每个窗格在本次运行期间独立保留展开状态,终端可用高度随工具栏同步调整。 - 两行可以独立横向滚动,折叠箭头保持可见。终端内容边界和 tmux 消息位置也会跟随当前工具栏高度更新。 - 修复侧栏终端子项的选中与悬停背景在右侧超出父级的问题。各连接类型共用的终端条目现在保留左侧树形缩进,并在不同侧栏宽度下与父级右边缘对齐。 #### ⚡ 终端输出与画面快照性能 - 对长 CSI 参数序列、DEC 线条字符和 OSC 内容采用批量处理,减少重复的逐字节操作。 - macOS 新增有容量上限的 PTY 预读,改善持续大量输出;构建画面快照时复用对比度计算结果及共享元数据。 - 修复 SSH 解析器忙碌时,界面读取 tmux 状态仍需等待解析锁的问题。延后的输出会继续安排重绘,最后一段输出无需等待下一个数据包才能显示。 **OxideTerm 2.1.0 实测结果:**每项测试处理 **16 MiB** 数据,**预热 1 次,正式测量 3 次**,下表列出耗时和吞吐量各自的中位数。测试时间:**2026-09-25 17:35:10 UTC**。 | 测试场景 | 耗时中位数(ms) | 吞吐量中位数(MiB/s) | | --- | ---: | ---: | | 纯文本(`plain`) | 111.104 | 144.009 | | ANSI(`ansi`) | 131.939 | 121.268 | | Unicode(`unicode`) | 146.536 | 109.188 | | 长 CSI 序列(`long-csi`) | 124.260 | 128.763 | 下图与此前发布的基准结果并列展示,金色为 2.1.0。本测试测量进程到伪终端的吞吐量,不代表画面帧率或 GPU 呈现速度。 ![OxideTerm 历次版本终端吞吐量对比 · 中秋版](https://raw.githubusercontent.com/AnalyseDeCircuit/oxideterm/34657ab9a2ffc0975660283c72f6a9618ab4ef42/.github/release-notes/assets/terminal-performance-2.1.0-comparison.png) #### 🤖 AI 消息编辑与输入 - 历史消息支持多行编辑,包括主动换行、自动折行和有高度上限的纵向编辑区域。长消息编辑时会保持光标可见。 - 鼠标定位、文本选择、上下移动光标和输入法候选位置与实际显示的文本行保持一致,已通过针对 Unicode、空行、自动折行及主动换行边界的检查。 - 修正 AI 侧栏输入框按实际折行定位鼠标的问题。在混合工作区中,AI 上下文和工具目标跟随当前内容页面,并区分各终端的运行环境。 #### 🛠️ 原生窗口与安装修复 - 启动阶段尚未获得显示器信息时,保留有效的已保存窗口尺寸,包括 Wayland 启动路径。临时启动尺寸不会再提前裁小保存的窗口;已知显示器边界限制和首次启动默认值继续生效。 - Windows 从托盘恢复时仅对最小化窗口执行还原。隐藏前处于最大化或全屏的窗口重新显示时,会保留原有尺寸和状态。 - Windows 安装器会在覆盖所选安装目录前检查占用文件的应用,先询问是否请求正常关闭,再确认文件已释放。关闭失败可重试,取消操作或静默安装发生占用冲突时会停止;分阶段自动更新流程保持原有行为。 - 安装提示及新增界面文案已同步维护现有 11 种语言。 #### 🧪 验证与平台范围 - 开发验证覆盖终端解析、网格行为、真实本地 PTY 协议回复与退出清理、SSH 输出绘制、tmux 交互、工具栏折叠与恢复、主题预览数据和侧栏行布局。最终终端视图测试通过 221 项,另有 1 项手动测试未纳入常规执行;应用全目标检查通过。此前性能验证还通过了终端和网格测试、VTE 全特性及固定缓冲区配置测试,以及原生应用构建。 - 本次性能测量来自 Apple M5 上的 macOS 环境。Windows 原生运行和 Ubuntu Wayland 环境下的平台专项实机验证仍待完成,自动化与无界面检查不能替代这些平台验证。 ### English OxideTerm 2.1.0 expands the workspace with mixed panes across hosts, reusable local terminal profiles, richer theme previews, and collapsible serial and tmux control bars. It also improves sustained terminal output processing, AI message editing, and native window behavior. Happy Mid-Autumn Festival! Thank you for making OxideTerm part of your everyday work. #### 🪟 Mixed Workspaces Across Hosts and Windows - Added mixed workspaces with up to four panes in one tab. Local, SSH, and Mosh terminals can sit alongside SFTP, IDE, and port-forwarding pages, including pages connected to different hosts. A local development shell, a remote shell, remote files, and an editor can now share one working layout. - Added edge-based tab placement. Drag a tab into another tab's content and drop it near the left, right, top, or bottom edge to place it beside the destination pane. A placement preview shows where it will land, and existing split dividers remain adjustable. - Allowed a combined workspace to move into a separate native window and return to the main window while retaining its live sessions and split layout. Moving a page preserves its session and page identity rather than creating another connection. - Kept file browsing, transfer dialogs, forwarding controls, keyboard focus, and input routing associated with their originating pane and window. Multiple SFTP or forwarding pages can retain their own working state, and a delayed action from a closed page does not fall through to another page. - Updated pane-aware commands, file actions, and AI context to follow the focused content page within a mixed workspace. Multi-terminal context distinguishes each pane's session, target, and environment. - Serial terminals remain separate tabs because their device access is exclusive. Mixed workspaces support the terminal and page types listed above; this release does not turn every application page into a splittable pane. To try it: open the terminals or tool pages you need, drag one tab to an edge of another page, then repeat until the layout contains the desired panes. Move the combined tab to a new window when you want that workspace on another display. #### 💻 Reusable Local Terminal Profiles - Added saved local terminal profiles alongside saved remote connections. Profiles retain a name, command-line environment, starting directory, group, icon, foreground color, and icon background, making frequently used projects easier to reopen. - Added connect-only, save-only, and save-and-connect flows. Saving a profile does not require its selected environment or directory to exist on the current machine; opening it validates the launch target and reports an unavailable environment or directory before registering a failed session. - Integrated local profiles with session-manager search, groups, editing, deletion, and batch group operations. Opening a saved profile also records its usage through the existing profile store. - Included local profiles in cloud-sync selection and previews, including field-level changes, conflict merging, and deletion records. A synchronized profile remains a launch configuration; the required command-line environment and directory must be available on the machine that opens it. - Made new local splits inherit the source terminal's launch environment and use its known current directory when available. WSL starting directories are passed through the WSL launch arguments, including paths containing spaces. - Grouped running local terminals under one Local Terminal entry in the active-session sidebar. The count reflects running local sessions, each child keeps its own title and icon, and New Terminal appears below the existing terminals. To create a reusable entry, choose Local Terminal in the connection form, select the environment and working directory, give it a name, and save it. Open it later from the session manager like other saved configurations. #### 🎨 Theme Discovery and Connection Icons - Added palette swatches to the theme selector and a live terminal preview. Hovering a theme previews its colors without applying it to the workspace; clicking or confirming the selection applies it. - Added keyboard preview navigation with Up, Down, Home, and End. Enter or Space confirms the previewed theme; Escape or Tab closes the selector without applying the preview. Opening the selector brings the current selection into view. - Made custom-theme previews use their configured background, foreground, cursor, and displayed ANSI colors. Preview labels and guidance now follow the selected application language. - Added color-preserving Linux distribution icons for Ubuntu, Debian, Arch Linux, Linux Mint, Gentoo, Rocky Linux, and NixOS. SSH sessions can select an icon from the detected remote distribution, while an explicitly chosen custom icon takes precedence. - Clarified Automatic and Custom icon choices in SSH connection properties. Selecting either mode closes the icon picker, and the automatic mode explains how the remote system determines the icon. Distribution artwork attribution and licenses are included in packaged builds. #### 🎛️ Clearer Serial and tmux Control Bars - Replaced the dense capsule-button presentation with lightweight text controls and short vertical separators, matching the terminal command bar's visual style. Active settings, sessions, and windows use the theme's accent color; unavailable operations remain visually disabled. - Split each toolbar into two rows. Serial connection details, device parameters, connection state, and port presence appear above the send/display modes, line-ending settings, local echo, refresh, Break, DTR, and RTS controls. In tmux control mode, sessions, windows, and status appear above rename, command, navigation, creation, split, resize, close, and detach actions. - Added a fixed disclosure arrow at the far left of the information row. It hides or restores the lower action row while keeping connection information visible. Each pane retains its own expanded state during its lifetime, and the terminal viewport grows or shrinks with the toolbar. - Gave the two rows independent horizontal scrolling, with the disclosure arrow staying reachable. Updated the terminal's content bounds and tmux message placement to account for the current toolbar height. - Aligned child-terminal selection and hover backgrounds with their parent row's right edge across connection types, retaining the left tree indentation at narrow and wide sidebar sizes. #### ⚡ Terminal Output and Snapshot Performance - Batched long CSI parameter sequences, DEC line-drawing character runs, and OSC payload collection to reduce repeated per-byte work. - Added bounded PTY read-ahead on macOS for sustained output, and reused contrast-adjusted styles and shared metadata when building terminal snapshots. - Fixed an SSH rendering stall caused by reading tmux state while the parser was busy. Deferred output continues to schedule a redraw so the final received output can appear without waiting for another packet. **OxideTerm 2.1.0 benchmark:** each workload processes **16 MiB**, with **1 warm-up and 3 measured runs**. The table reports the median elapsed time and median throughput. Run time: **2026-09-25 17:35:10 UTC**. | Workload | Median elapsed time (ms) | Median throughput (MiB/s) | | --- | ---: | ---: | | Plain text (`plain`) | 111.104 | 144.009 | | ANSI (`ansi`) | 131.939 | 121.268 | | Unicode (`unicode`) | 146.536 | 109.188 | | Long CSI (`long-csi`) | 124.260 | 128.763 | The chart places these results alongside the previously published benchmarks, with 2.1.0 highlighted in gold. These measurements cover process-to-PTY throughput, not frame rate or GPU presentation. ![OxideTerm terminal throughput across releases — Mid-Autumn edition](https://raw.githubusercontent.com/AnalyseDeCircuit/oxideterm/34657ab9a2ffc0975660283c72f6a9618ab4ef42/.github/release-notes/assets/terminal-performance-2.1.0-comparison.png) #### 🤖 AI Message Editing and Input - Added multiline editing for historical messages, including explicit newlines, visual wrapping, and a bounded vertical editing area. Long edits keep the caret visible instead of being squeezed into a single-line field. - Aligned mouse placement, selection, vertical caret navigation, and IME candidate positioning with the displayed text rows. Unicode text, empty lines, and both soft-wrap and explicit-newline boundaries are covered by focused checks. - Corrected the AI sidebar composer's hit testing to use its visual wrapped lines. In mixed workspaces, AI context and tool targeting follow the active content page and identify individual terminal environments. #### 🛠️ Native Window and Installer Fixes - Preserved valid saved window dimensions when display information is not yet available during startup, including the Wayland startup path. A temporary bootstrap size no longer prematurely clips the saved size; known-display constraints and first-launch defaults remain in place. - Updated Windows tray restoration to restore only minimized windows. A hidden maximized or fullscreen window keeps its existing size and state when shown again. - Added a Windows installer preflight for applications holding files in the selected installation directory. The installer asks before requesting a normal shutdown, verifies that files are released before overwriting, offers retry when needed, and stops on cancellation or a silent-mode conflict. The staged automatic-update path remains unchanged. - Localized the installer prompts and all new application labels across the existing 11 languages. #### 🧪 Validation and Platform Scope - Development validation covered terminal parsing, grid behavior, real local PTY replies and shutdown, SSH output rendering, tmux interaction, toolbar collapse/restore, theme preview data, and sidebar row geometry. The final terminal-view suite passed 221 tests with one manual test excluded; application all-target checks passed. Earlier performance validation also passed the terminal and grid suites, VTE all-feature and fixed-buffer configurations, and the native application build. - The reported performance measurements were collected on macOS with an Apple M5. Native Windows execution and Ubuntu Wayland runtime validation for the platform-specific fixes remain pending. Automated and headless checks do not replace those platform checks. ## 2.0.31 ### English OxideTerm 2.0.31 adds independent terminal sync groups and standalone FTP/explicit FTPS connections, moves quick commands into a resizable bottom panel, and improves terminal history, AI interaction, and native window behavior. #### ⌨️ Terminal Sync Groups and Commands - Replaced global interactive broadcasting with groups of individual terminal panes. Multiple groups can run or pause independently, and input from a pane outside an enabled group no longer broadcasts to that group's members. Separate terminals connected to the same host can belong to different groups; each pane belongs to at most one group. - Added per-pane isolation and resume controls, with the group name and syncing, paused, or isolated state shown above member terminals, including detached windows. Isolation stops both outgoing and incoming synchronized input without removing membership or replaying input afterward. - Kept saved connection groups as templates for initial pane selection. Selecting a template does not start synchronization; new panes are not automatically recruited into an initialized group. Reconnected panes retain their group but remain isolated until manually resumed, and closing the last member disables the group. - Routed quick commands through the invoking pane's active sync group while retaining per-target parameter expansion. The batch sender keeps its explicit target selection; its saved connection groups still select matching terminals independently of interactive isolation, with an explanatory hint in the interface. - Moved quick commands from a floating card into a resizable panel below the terminal toolbar. Preserved categories, search, management, pinning, and parameter entry while keeping the terminal visible above; quick commands and the batch sender retain separate panel state. - Added fuzzy history suggestions, match highlighting, a scrollable candidate list, and visible navigation hints. Selecting candidates keeps them in view; clicking fills the command line without executing, and accepting a fuzzy match replaces the query while handling Unicode input. - Isolated terminal search state and focus per pane so searches in split or detached terminals do not share the wrong query or input target. #### 📁 FTP, FTPS, and File Transfers - Added standalone FTP and explicit FTPS connection creation, saving, editing, and opening through the existing file-transfer interface. Supported directory browsing, file and directory upload/download, file preview and editing, directory creation, renaming, and deletion. - Added direct, global-proxy, and custom-proxy routing for FTP control and passive data connections. Used EPSV with a supported-server fallback to PASV, and kept data connections directed to the configured host. This release supports plain FTP and explicit TLS, not implicit FTPS or active-mode transfers. - Validated FTPS certificates against system trust. Saved passwords use the existing credential store; FTP profiles and selected credentials participate in cloud synchronization and encrypted `.oxide` import/export under file-transfer connections. - Added cancellation and timeout handling for FTP operations. Uploads use temporary remote files before renaming, downloads stage local data before replacement, and a failed remote rename does not delete the existing destination. - Updated the SFTP dependency to `russh-sftp` 3.0.0 while retaining OxideTerm's maintained transport patches. #### 🤖 OxideSens and AI Interaction - Made the AI sidebar honor the configured AI submit shortcut, including custom modifier bindings. Plain Enter remains available for newlines when another send binding is selected; composition and visible completion selection do not accidentally submit a message. - Added a sticky question header with a “Back to question” action while reading long conversations. Expanding or collapsing reasoning and tool details preserves the reading position; chat, model-selection, and tool-call controls received more consistent spacing and styling. - Made command approval previews readable and clarified execution guidance to continue authorized work while respecting requests for diagnosis only and the existing approval policy. - Bounded each visible-terminal observation to 30 seconds so missing completion signals no longer hold a single observation open for an extended period. Returning a shell prompt or captured output is distinguished from a confirmed command exit; observation does not interrupt the running command. - Distinguished the local application's operating system from the selected terminal's environment, including SSH, Mosh, Telnet, and serial targets, to avoid treating remote devices as the local machine. #### 🪟 Navigation and Native Interface - Added command-palette searches using multiple keywords in any order, with matching across connection details. Widened the palette as space permits and added a full connection preview for identifying similar entries. - Refined active-session navigation, session-manager search and actions, the welcome screen and shortcut hints, and plugin-manager spacing. Simplified batch-sender controls and improved panel transitions. - Unified floating surfaces and added theme-aware transitions for sidebars, disclosures, menus, tooltips, and segmented controls, respecting reduced-motion settings. Kept connection forms opaque for readability over background images and rendered Markdown blockquotes as one rounded surface. - Fixed detached-window input and window styling, including routing RDP/VNC keyboard and clipboard shortcuts to the window's own session. Fixed an entity re-entry failure while detaching tabs. - Fixed scrolling in the terminal-trigger connection picker. #### 🛠️ Platform Fixes and Validation - Fixed Wayland startup sizing to preserve restored floating-window dimensions while respecting compositor-controlled maximized, fullscreen, and tiled states; state changes are recorded even when pixel dimensions stay the same. - Stopped macOS frame callbacks during window teardown to avoid late rendering against a closed window. - Compressed bundled MapleMono fonts with Zstd and reused application font assets for SVG rendering. Improved missing-character fallback and reduced diagnostics for successful font fallback. - Updated affected interface text across all 11 supported languages. The maintainer ran the GUI before approving release. Before the version bump, application tests passed 775 cases with 7 ignored, and terminal tests passed 218 with 1 ignored; formatting, locale consistency, application checks, and the build also passed. These checks do not establish a complete cross-platform or multi-host runtime matrix. ### 中文 OxideTerm 2.0.31 新增独立终端同步组及独立 FTP/显式 FTPS 连接,将快捷命令移至可调整高度的底部面板,并改善终端历史建议、AI 交互和原生窗口行为。 #### ⌨️ 终端同步组与命令 - 将全局交互广播改为按具体终端窗格组成的同步组。多个组可独立启用或暂停,组外窗格输入不再广播给该组成员。同一主机的不同终端可加入不同组,每个窗格最多属于一个组。 - 新增单窗格隔离与恢复操作,成员终端上方显示组名及同步中、已暂停或已隔离状态,分离窗口同样适用。隔离同时停止发送和接收同步输入,保留成员归属,恢复后不补发隔离期间的输入。 - 保留已保存的连接分组作为首次选择窗格的模板。选择模板不会立即开始同步,已初始化的组不会自动吸收新窗格。重连后的窗格保留分组但先隔离,需手动恢复;最后一个成员关闭后停用该组。 - 快捷命令按发起窗格所属的活动同步组分发,保留每个目标独立的参数展开。批量发送器继续使用显式目标选择,其已保存连接分组仍匹配对应终端,不受交互同步隔离影响,界面增加了说明。 - 快捷命令由悬浮卡片改为终端工具栏下方可调整高度的面板,保留分类、搜索、管理、固定及参数填写,终端内容在上方保持可见;快捷命令与批量发送器分别保留面板状态。 - 新增模糊历史建议、匹配高亮、可滚动候选列表和操作提示。键盘选择时保持候选可见,点击只填入命令而不执行;接受模糊匹配时替换查询内容,并处理 Unicode 输入。 - 按窗格隔离终端搜索状态与焦点,避免分屏或分离终端共用错误的查询内容或输入目标。 #### 📁 FTP、FTPS 与文件传输 - 新增独立 FTP 和显式 FTPS 连接的创建、保存、编辑及打开,复用现有文件传输界面。支持目录浏览、文件和目录上传下载、文件预览与编辑、创建目录、重命名及删除。 - FTP 控制连接与被动数据连接支持直连、全局代理及自定义代理。优先使用 EPSV,在服务器明确不支持时回退到 PASV,数据连接仍指向配置的主机。本版支持普通 FTP 和显式 TLS,不支持隐式 FTPS 或主动模式传输。 - FTPS 使用系统信任验证证书。保存的密码进入现有凭据存储;FTP 配置及选定凭据通过“文件传输连接”参与云同步和加密 `.oxide` 导入导出。 - FTP 操作接入取消及超时处理。上传先写远端临时文件再重命名,下载先写本地临时文件再替换目标;远端重命名失败时不会删除已有目标文件。 - 将 SFTP 依赖升级至 `russh-sftp` 3.0.0,并保留 OxideTerm 维护的传输补丁。 #### 🤖 OxideSens 与 AI 交互 - AI 侧栏遵循配置的 AI 发送快捷键,支持自定义修饰键组合。选择其他发送组合后,普通回车可用于换行;输入法组字和可见补全项选择不会误发消息。 - 阅读长对话时新增问题吸顶栏及“返回问题”操作。展开或折叠思考过程、工具详情时保持阅读位置,并统一聊天、模型选择和工具调用控件的间距与样式。 - 改善命令审批预览的可读性,调整执行指引,使 AI 在已有授权范围内继续完成工作,同时遵守仅诊断的请求和现有审批策略。 - 将每次可见终端观察限制在 30 秒内,避免缺少完成信号时单次观察长时间不返回。区分提示符恢复、已取得输出和已确认命令退出;观察操作不会中断运行中的命令。 - 区分本地应用的操作系统与所选终端环境,包括 SSH、Mosh、Telnet 和串口目标,避免把远端设备当作本机。 #### 🪟 导航与原生界面 - 命令面板支持任意顺序的多关键词搜索,并匹配连接详情。根据可用空间加宽面板,新增完整连接预览,便于区分相似条目。 - 调整活动会话导航、会话管理器搜索与操作、欢迎页和快捷键提示,以及插件管理器间距。简化批量发送器控件并改善面板切换动画。 - 统一浮动界面材质,为侧栏、折叠区、菜单、提示和分段控件加入遵循主题及减少动态效果设置的过渡。连接表单保持不透明,改善背景图片上的可读性;Markdown 引用块按完整圆角区域渲染。 - 修复分离窗口的输入与窗口样式,包括将 RDP/VNC 键盘及剪贴板快捷键发送到该窗口自身的会话;修复分离标签时的实体重入错误。 - 修复终端触发器连接选择器的滚动问题。 #### 🛠️ 平台修复与验证 - 修复 Wayland 启动时浮动窗口恢复尺寸的问题,同时遵循合成器对最大化、全屏和平铺窗口的尺寸控制;即使像素尺寸不变,也记录窗口状态变化。 - macOS 窗口销毁时停止帧回调,避免窗口关闭后继续渲染。 - 使用 Zstd 压缩内置 MapleMono 字体,并让 SVG 渲染复用应用字体资源;改善缺字回退,减少成功字体回退产生的诊断信息。 - 同步更新涉及的全部 11 种语言文案。维护者已运行 GUI 并批准发布。版本升级前,应用测试通过 775 项、忽略 7 项,终端测试通过 218 项、忽略 1 项;格式、语言一致性、应用检查及构建亦通过。这些检查不代表完成了全部平台及多主机运行场景验证。 ## 2.0.30 ### English OxideTerm 2.0.30 adds a native notes workspace with synchronized Markdown source and preview, expands document rendering, and brings proxy support to Telnet. This release also improves host monitoring, session management, configuration transfers, and terminal input behavior. #### 📝 Notes and AI Knowledge - Added a native notes workspace with notebooks, title-and-body search, file import, and note creation, renaming, moving, copying, cutting, pasting, and deletion. Compact file rows, a collapsible navigator, and notebook controls follow the application's existing theme and animation settings. - Added Markdown source, read-only preview, and side-by-side source/preview modes. The split view updates while editing, supports dragging the divider between 20% and 80%, and synchronizes vertical scrolling in both directions using source positions, including virtualized preview content. - Kept the same editor buffer, selection, cursor, and undo history when switching modes. Added Markdown formatting controls, autosave, explicit save, and unsaved-change handling when navigating or closing notes; conflicting saves retain the draft instead of silently overwriting stored content. - Saved the last Markdown mode and split ratio as device-local preferences. They are excluded from cloud synchronization and `.oxide` exports, and importing settings preserves the receiving device's values. - Integrated notes with the existing knowledge store and AI indexing actions. Unchanged chunks can retain embeddings; edited or removed content invalidates stale vectors. Save state and AI index state are shown separately, with clearer feedback when embedding configuration is missing or generation fails. #### 📖 Markdown Rendering and Reading - Preserved nested lists, multiple paragraphs within list items, and mixed Markdown/HTML structure. Added native handling for supported HTML blocks and inline formatting, collapsible `details` sections, image dimensions and alignment, and linked images. HTML support remains a limited native rendering subset; scripts, event handlers, and embedded active content are not executed. - Improved mixed text, links, and inline formulas, including formula baseline alignment and formulas inside tables. Adjusted heading weights and sizes, paragraph spacing, table text, and code-block spacing for more consistent reading. - Added preview text selection and copying, heading and footnote navigation, and relative document/image resolution. Wide tables and code content can scroll horizontally; source and preview views expose scrollbars for overflowing content. - Replaced the previous Mermaid engine with background rendering through `mermaid-rs-renderer`, and connected diagram enlargement and localized feedback to note previews. - Fixed missing images, incomplete scrolling to the document bottom, excessive overscroll, and blank preview frames during fast synchronized scrolling. Preview surfaces respect image-background transparency without imposing a fixed maximum reading width. #### ⌨️ Terminal and Editor Interaction - Added configurable previous-word and next-word terminal shortcuts to shortcut settings: Option+Left/Right on macOS and Alt+B/F on Windows and Linux by default. Bindings can be changed or disabled. - Restored shell handling of Ctrl+L on macOS. The default host-side clear-screen shortcut is now Ctrl+Shift+L on all platforms; explicit custom bindings remain configurable. - Suppressed shell-history suggestions while a TUI owns terminal input, including inline applications that report their working directory. Submitting commands through history navigation or completion also leaves shell-prompt input tracking, and TUI input is excluded from command-history recording. - Added semantic coloring for UUIDs and complete hexadecimal MD5/SHA digests, plus short Git object IDs and container IDs in their corresponding command output. Existing ANSI colors and higher-priority URLs, paths, and quoted strings remain intact. - Fixed terminal search refreshes pulling the viewport away from a manually selected scroll position, and focused the command-palette search field immediately when opening it. - Improved the shared text editor's wrapping and scroll geometry using rendered font metrics, kept the caret visible while typing beyond the viewport, and fixed clipping of the final line. Multi-line selections highlight the selected rows while retaining the cursor line's distinct gutter highlight. - Replaced the quick-command body field with the shared multiline editor and stabilized its form scrolling and overflow behavior. #### 🔗 Connections, Sessions, and Transfers - Added Telnet proxy choices for global settings, direct connection, and custom proxy configuration, reusing proxy authentication, remote DNS, and bypass-list behavior. Proxy settings survive saving and reconnecting and participate in cloud synchronization and `.oxide` import/export; sensitive credentials follow the existing encrypted transfer options. Older Telnet profiles continue to connect directly by default. - Added session search and persistent active-session sorting by name or connected state. SSH algorithm lists can be reordered in the connection editor. - Ran configured post-connect commands when opening another terminal from an existing active SSH session, using the current saved connection settings. - Fixed missing-password prompting while preserving explicitly selected empty-password authentication, including saved connections and portable transfers. Temporary SSH connections now use the host-key confirmation flow before connecting. - Fixed Windows command-line connection requests failing to reach an already-running application because of platform-specific instance-lock error handling. - Unified local encrypted configuration archives with cloud synchronization's scope selection, item selection, and preview flow. Fixed WebDAV folder creation to build missing child folders beneath the configured endpoint without attempting to create the service root. - Aligned connection-note fields with the basic-information section across connection forms. #### 📊 Monitoring, Appearance, and Responsiveness - Added theme-aware usage indicators and trend charts to Host Tools monitoring while retaining detailed system, storage, network, and latency values. - Bounded pending monitoring notifications and retained sample history so a slow interface cannot accumulate an unbounded queue of samples. Stopping monitoring releases its retained history. - Adopted Material file and folder icons across file-list surfaces, including language-specific icons, and included the icon theme's license in packaged distributions. - Reduced repeated session-tree and sorting work, moved local directory listing off the UI thread, coalesced frequent serial-output updates, and reduced fitted background-image memory and repeated decoding. - Fixed native menu language selection at startup and after language changes. AI command approvals now show temporary command previews, and pending AI history is flushed on exit even when no Tokio runtime is active on the calling thread. #### 🧰 Maintenance and Validation - Added bounded retries for macOS DMG creation when `hdiutil` reports a transient resource-busy error; other creation errors still stop packaging immediately. - Moved the maintained `russh` dependency to a separate repository pinned to a specific revision, and applied the workspace's Clippy policy across application crates. - Updated affected interface text across all 11 supported languages. The maintainer completed GUI validation before approving this release. The latest identifier-coloring changes passed 44 classification tests, 11 rendering tests, and the application build; Windows CLI handoff still needs Windows-specific runtime confirmation. ### 中文 OxideTerm 2.0.30 新增原生笔记工作区,支持 Markdown 源码与预览分栏及双向滚动同步,扩展文档渲染能力,并为 Telnet 接入代理支持。本次更新还改善了主机监控、会话管理、配置传输和终端输入体验。 #### 📝 笔记与 AI 知识库 - 新增原生笔记工作区,支持笔记本、标题与正文搜索、文件导入,以及笔记新建、重命名、移动、复制、剪切、粘贴和删除。紧凑文件列表、可折叠导航栏与笔记本控件沿用应用主题和动画设置。 - 新增 Markdown 源码、只读预览及“源码|预览”分栏模式。分栏支持边编辑边预览、在 20%~80% 范围内拖动分隔线,并按源码位置进行双向垂直滚动同步,包含虚拟化预览内容的定位。 - 切换模式时保留同一编辑器的内容、选区、光标与撤销历史。提供 Markdown 格式工具栏、自动保存、手动保存,以及切换或关闭笔记时的未保存提示;保存冲突时保留草稿,不静默覆盖已存内容。 - 将最近使用的 Markdown 模式与分栏比例保存为本机偏好,不进入云同步或 `.oxide` 导出;导入设置时保留接收设备原有的这些偏好。 - 笔记接入现有知识库存储和 AI 索引操作。未变化的分块可保留嵌入向量,编辑或删除内容会使旧向量失效。保存状态与 AI 索引状态分别展示,嵌入配置缺失或生成失败时提供更明确的反馈。 #### 📖 Markdown 渲染与阅读 - 保留嵌套列表、列表项内多段文字及 Markdown/HTML 混排结构。新增受支持 HTML 块和行内格式的原生解析、`details` 折叠区、图片尺寸与对齐,以及带链接的图片。HTML 仍按有限的原生渲染子集处理,不执行脚本、事件处理器或嵌入的活动内容。 - 改善文字、链接与行内公式混排,修正公式基线及表格内公式对齐,调整标题字号与字重、段落间距、表格文字及代码块留白,使阅读层级更一致。 - 接入预览文本选择与复制、标题及脚注导航,以及相对文档和图片路径解析。宽表格和代码内容支持横向滚动,源码与预览为溢出内容提供滚动条。 - 使用 `mermaid-rs-renderer` 在后台渲染 Mermaid,替换原有渲染引擎,并为笔记预览接入图表放大和本地化提示。 - 修复图片不显示、无法滚到文档末尾、过度滚动及快速同步滚动时预览短暂空白的问题。预览组件遵循图片背景透明度设置,不再限制固定的最大阅读宽度。 #### ⌨️ 终端与编辑器交互 - 在快捷键设置中新增可配置的终端向前/向后移动一个词操作:macOS 默认使用 Option+左/右方向键,Windows 和 Linux 默认使用 Alt+B/F,可修改或禁用。 - 恢复 macOS 上由 Shell 处理 Ctrl+L;应用侧清屏的默认快捷键统一为 Ctrl+Shift+L,用户自定义绑定仍可配置。 - TUI 接管终端输入时抑制 Shell 历史建议,包含会报告工作目录的内联应用。通过历史导航或补全提交命令后,也会退出 Shell 提示符输入跟踪;TUI 内输入不会被记录为命令历史。 - 新增 UUID、完整十六进制 MD5/SHA 摘要,以及对应命令输出中的短 Git 对象 ID 和容器 ID 语义着色,保留程序原有 ANSI 颜色及优先级更高的网址、路径和引号内容。 - 修复终端搜索刷新打断手动滚动位置的问题;打开命令面板后立即聚焦搜索框。 - 共享文本编辑器按实际字体度量处理换行与滚动,输入超出视口时保持光标可见,并修复最后一行被裁切的问题。多行选区高亮所选行,同时保留光标所在行独立的行号高亮。 - 快捷命令正文改用共享多行编辑器,改善表单滚动稳定性和超出输入区域后的显示。 #### 🔗 连接、会话与配置传输 - Telnet 新增“使用全局/直连/自定义”代理选项,复用代理认证、远端 DNS 和绕过列表。代理配置支持保存、重新连接、云同步及 `.oxide` 导入导出,敏感凭据遵循现有加密传输选项。旧 Telnet 配置升级后仍默认直连。 - 新增会话搜索,以及按名称或连接状态排序并保存偏好的能力;连接编辑器中的 SSH 算法列表支持调整顺序。 - 从已有活动 SSH 会话再打开终端时,执行当前保存的连接配置中的连接后命令。 - 修复缺少密码时的提示,同时保留用户明确选择的空密码认证,包括已保存连接和可移植配置传输。临时 SSH 连接在建立连接前接入主机密钥确认流程。 - 修复 Windows 命令行连接请求因单实例锁错误识别差异而无法转交给已运行应用的问题。 - 本地加密配置归档复用云同步的范围选择、条目选择和预览流程。修复 WebDAV 目录创建,仅在配置的端点下逐级创建缺失子目录,不尝试创建服务根目录。 - 将各连接表单的备注字段统一放到基本信息区域。 #### 📊 监控、外观与响应 - 主机工具监控新增使用率指示和趋势图,沿用主题配色,同时保留系统、存储、网络和延迟的详细数值。 - 限制待处理监控通知与采样历史的规模,避免界面处理较慢时持续积压采样;停止监控后释放保留的历史数据。 - 文件列表采用 Material 文件和文件夹图标,包含语言专属图标,并在发布包中附带图标主题许可证。 - 减少会话树和排序的重复计算,将本地目录读取移出界面线程,合并频繁串口输出刷新,并降低适配窗口的背景图片内存占用和重复解码。 - 修复启动及切换语言后的原生菜单语言。AI 命令审批展示临时命令预览,退出时即使调用线程没有活动 Tokio 运行时,也会写完待保存的 AI 历史。 #### 🧰 维护与验证 - macOS DMG 创建遇到 `hdiutil` 的临时资源忙错误时进行有限重试,其他创建错误仍立即终止打包。 - 将维护中的 `russh` 依赖移到独立仓库并固定具体修订,同时让应用各 crate 采用工作区 Clippy 规则。 - 更新涉及的全部 11 个语言包。维护者已完成 GUI 验证并批准发布;最新标识符着色改动通过 44 项分类测试、11 项渲染测试及应用构建。Windows 命令行转交仍需 Windows 环境的运行确认。 ## 2.0.29 ### English OxideTerm 2.0.29 expands OxideSens with more AI providers, resumable task execution, complete persistent history, and conversation archiving. It also improves terminal responsiveness and command observation, reduces editor memory and background work, and adds independent IDE typography settings. #### 🤖 AI Providers and Task Execution - Added OpenAI Responses API support with stateless history replay, including restoration of the conversation context needed for subsequent requests. - Added a native xAI Grok provider with model discovery and model capability settings. - Updated the recommended DeepSeek Flash model to `deepseek-flash`, with matching context-window and reasoning-level support. Existing Flash aliases remain recognized, and `deepseek-v4-pro` keeps its current name; saved custom model lists are not rewritten. - Added task checkpoints and resumable execution, bounded condition waits, dependency-aware read scheduling, and classified recovery for interrupted or failed operations. - Replaced manual context and response limits with automatic budgeting, and improved handling of follow-up instructions during running tasks. - Added clarification questions during execution. An agent can present a question, wait for the user's answer, and continue the task. #### 💬 Complete Chat History and Archiving - Removed the conversation message-count cap. Persistent history retains messages, tool activity, subagent history, and alternative branches rather than discarding older messages at a fixed limit. - Reworked history storage around incremental writes, separately stored metadata, chunked content, and on-demand message loading. Large conversations no longer require all message bodies to be loaded for browsing the conversation list. - Added conversation archiving, an archived-conversation list, and restore actions. Archiving hides a conversation from the normal list while retaining its history; archiving alone does not cancel running work. - Added separate indexed pagination for active and archived conversations. Startup loads the first 50 active conversations; archived conversations load when their list is opened, with additional pages available on demand. Clearing all conversations still includes histories outside the loaded pages. - Fixed loading failures involving older history metadata. Existing history is migrated to the new store while the original database is retained. Conversations written after migration are stored in the new database and are not copied back to the old version's database. - Added regression coverage for archive and restore persistence, metadata pagination, message preservation, and conversation switching without losing drafts. #### 🖱️ Chat Display and Scrolling - Added a chat scrollbar and improved scroll-position preservation when reading earlier messages, reducing jumps back to the current screen during content updates. - Fixed a list-rendering borrow conflict that could crash the application during tool activity and history loading. - Simplified tool activity presentation, removing internal activity navigation, JSON-path controls, and redundant “more content” rows. Messages display their complete activity content automatically. - Fixed stopped or historical tool calls remaining in a spinning state, preventing continued animation and unnecessary redraws after the operation ended. - Adjusted conversation-list heading typography and selected-row corners so the highlight follows the list's actual boundaries. #### 🛠️ AI and Terminal Command Handling - Removed the recurring manual terminal-control handback gate. Tool request ownership is released when the request ends, while stale requests cannot release ownership belonging to a newer operation. - Improved command completion, cancellation, and owned-process cleanup. Stopping observation does not claim that an already-issued remote command has stopped. - Improved output capture on shells without integration events. Stable output can be returned as a captured snapshot without being reported as a confirmed command exit. - Kept AI command tracking functional when visual command marks are disabled. - Kept privilege-authentication input local to the running command and improved isolation from ordinary terminal input handling. #### ⚡ Terminal, Connections, and Remote Desktop - Moved SSH terminal parsing to an owned background worker, reduced output copies, and bounded batch-flush latency to reduce UI work during continuous output. - Fixed switching away from a terminal incorrectly marking already-displayed output as unread, including the first switch after opening a terminal. - Fixed the command sender retaining keyboard focus after clicking a terminal pane. - Improved RDP text pasting through acknowledged clipboard transfers. - Added default connection names when editing unnamed saved connections. - Fixed detached-tab cleanup after native window closure on Windows. #### ✍️ IDE Mini and Editor Performance - Added independent IDE font-family, Chinese/CJK fallback-font, and font-weight settings alongside the existing font-size and line-height controls. Editor settings can continue to follow the terminal defaults or use explicit overrides. - Shared immutable document text across editor snapshots and save requests, and reclaimed unused text storage to reduce retained memory. - Moved cancellable syntax work off the UI thread and avoided redundant queued work for superseded document versions. - Reused syntax blocks, updated presentation indexes locally, and reduced temporary highlight copies and repeated derived calculations. - Fixed editor callback ownership cycles and made caret-blink scheduling cancel correctly when the editor loses focus or is released. #### ⌨️ Shortcuts and Validation - Exposed context-specific and plugin shortcuts in settings, and fixed old shortcuts remaining registered after runtime updates. - Expanded mixed-language terminal benchmark coverage and recorded SSH background-parsing measurements. - Fixed CI formatting and asynchronous scheduler issues, and adjusted large-storage test timeout guards without reducing their data-preservation assertions. - Updated affected interface text across all 11 supported languages. Focused archive, pagination, draft-preservation, and storage regression checks passed; the maintainer completed GUI validation before approving this release. ### 中文 OxideTerm 2.0.29 为 OxideSens 增加了更多模型接入、可恢复任务执行、完整历史持久化和对话归档,同时改善终端响应与命令输出观察,降低编辑器内存占用和后台计算开销,并新增独立的 IDE 字体设置。 #### 🤖 AI 模型接入与任务执行 - 新增 OpenAI Responses API 支持及无状态历史重放,恢复后续请求所需的对话上下文。 - 新增原生 xAI Grok 提供商,支持模型发现及模型能力设置。 - 将 DeepSeek Flash 推荐模型名更新为 `deepseek-flash`,同步上下文容量与思考档位识别。旧 Flash 别名仍可识别,`deepseek-v4-pro` 保持原名;已保存的自定义模型列表不会被重写。 - 新增任务检查点和可恢复执行、有界条件等待、按依赖安排的读取调度,以及中断或失败操作的分类恢复。 - 使用自动预算管理替代手动上下文与回复限制,并改善任务运行期间追加指令的处理。 - 新增执行中的澄清提问:代理可以提出问题、等待用户回答,再继续任务。 #### 💬 完整聊天历史与归档 - 移除对话消息数量上限,持久化保留消息、工具活动、子代理历史和替代分支,不再按固定条数丢弃较早消息。 - 重构历史存储,采用增量写入、独立元数据、内容分块和消息按需加载;浏览对话列表时不再需要加载大对话的全部正文。 - 新增对话归档、已归档列表和恢复操作。归档后对话从普通列表隐藏,历史记录继续保留;归档本身不会取消正在执行的任务。 - 普通与归档对话分别使用索引分页。启动只加载首批 50 条普通对话,归档列表打开时才读取,后续按需加载更多。清空全部对话仍包含尚未加载的历史记录。 - 修复旧历史元数据导致的加载失败。现有历史会迁移到新存储,同时保留原数据库;迁移后产生的对话记录写入新数据库,不会回写到旧版本使用的数据库。 - 补充归档与恢复持久化、元数据分页、消息保留,以及切换对话时保留草稿的回归验证。 #### 🖱️ 聊天展示与滚动 - 新增聊天滚动条,改善向上阅读历史时的滚动位置保持,减少内容更新导致的回跳。 - 修复工具活动和历史加载期间,列表渲染借用冲突可能引发的应用崩溃。 - 简化工具活动展示,移除内部活动翻页、JSON 路径控件及重复的“更多内容”行,自动展示消息的完整活动内容。 - 修复已停止或历史工具调用仍持续转圈的问题,避免操作结束后继续动画和无效刷新。 - 调整对话列表标题字号和选中行圆角,使高亮符合列表实际边界。 #### 🛠️ AI 与终端命令处理 - 移除反复要求手动交还终端控制权的阻塞机制。工具请求结束后释放该请求的控制权,旧请求不会错误释放新操作持有的控制权。 - 改善命令完成、取消和所属进程的清理处理;停止观察不会被表述为已经停止远端命令。 - 改善缺少 Shell 集成事件时的输出捕获。稳定输出可以作为已捕获快照返回,不会被误报为已确认的命令退出。 - 关闭可视命令标记后,AI 命令跟踪仍可正常工作。 - 特权认证输入保持在正在运行的命令中处理,并改善其与普通终端输入处理的隔离。 #### ⚡ 终端、连接与远程桌面 - 将 SSH 终端解析移到具有明确生命周期的后台工作线程,减少输出复制并限制批量刷新延迟,降低连续输出时的界面线程开销。 - 修复切出终端后,已展示输出被误判为未读的问题,包括终端打开后的第一次切换。 - 修复点击终端窗格后,命令发送栏仍占用键盘焦点的问题。 - 通过带确认的剪贴板传输改善 RDP 文本粘贴。 - 编辑未命名的已保存连接时,自动提供默认名称。 - 修复 Windows 原生窗口关闭后的分离标签清理问题。 #### ✍️ IDE Mini 与编辑器性能 - 在现有字号、行高设置基础上,新增独立的 IDE 字体、中文/CJK 回退字体和字重设置,可继续跟随终端默认值,也可单独覆盖。 - 编辑器快照与保存请求共享不可变文档文本,并回收不再使用的文本存储,减少常驻内存。 - 将可取消的语法分析移出界面线程,避免为已经过期的文档版本重复排队计算。 - 复用语法块、局部更新展示索引,减少临时高亮复制与重复派生计算。 - 修复编辑器回调所有权循环,使光标闪烁任务在失焦或编辑器释放时正确取消。 #### ⌨️ 快捷键与验证 - 设置中展示上下文专用快捷键和插件快捷键,修复运行时更新后旧快捷键仍被注册的问题。 - 扩充混合语言终端基准覆盖,并记录 SSH 后台解析的测量结果。 - 修复 CI 格式检查和异步调度问题,调整大型存储测试的超时保护,同时保留数据完整性断言。 - 相关界面文案同步维护全部 11 种语言。归档、分页、草稿保留及存储的聚焦回归检查通过;维护者已完成 GUI 验收并批准发布。 ## 2.0.28 ### English OxideTerm 2.0.28 adds AI message queues and optional subagent collaboration, expands encrypted credential sync and RDP proxy support, raises the IDE editing limit to 100 MiB with encoding preservation, and improves terminal interaction, session recovery, and settings navigation. #### 💬 OxideSens Conversations and Subagents - Added queued follow-up messages while a response is running, with editing, deletion, reordering, and send-now actions. Normal completion sends the next queued message; stopping or a failed turn keeps pending messages available for explicit continuation. Each message retains its originating conversation, model, and prepared context. - Added separate steering and interrupt-and-send actions. Steering supplies additional instructions to a native run without replacing its model or permissions; interrupt-and-send cancels the current turn and submits the replacement before queued messages. Drafts and pending queues remain in memory and are not replayed after restarting the workspace. - Added optional subagent collaboration for native AI conversations, disabled by default per conversation. Child tasks can inherit the parent model or use another configured model, with one to four runnable subagents across the application and a default of two. ACP sessions are not subagent backends. - Added task-group progress, individual and group stopping, follow-up instructions, expandable task details, and parent/child token-usage reporting. Completed child history stays with its parent conversation; unfinished historical runs reopen as interrupted. - Scoped delegated terminal, SFTP, and IDE access to the resources assigned to each task. User terminal input takes priority over queued AI work. Stopping an agent does not guarantee that an already-issued remote command has ended; unresolved terminal control requires explicit handling. #### 🖱️ Terminal Input, Selection, and Display - Added a setting to disable terminal command suggestions while preserving the current draft. Windows local PowerShell suggestions now read PSReadLine history. - Added independent horizontal and vertical terminal padding, both defaulting to 1 px. Selection at the content edges no longer accidentally consumes input, and Shift-click can extend an existing selection. - Added optional highlighting of other occurrences of selected text, with global and per-session controls in the existing highlighting interface. This feature is off by default. - Kept selections attached to their original content during scrolling and scrollback eviction. Stabilized timestamp row identity, and restored free-type mouse positioning after leaving history search. - Improved cell-aligned box, block, and other terminal graphics, and preserved the actual DirectWrite fallback font face on Windows to avoid incorrect glyph rendering. - Fixed IME candidate positioning in alternate-screen applications such as Vim and tmux, including switching back from another terminal. Regression checks cover the terminal input-handler path; native Windows Chinese-input-method behavior still needs confirmation. #### ⚡ Terminal Output and File Transfers - Reduced repeated scanning and copying of ordinary terminal output while retaining the stateful detection paths for terminal control strings, graphics, triggers, and transfer protocols. - Made local terminal snapshots defer a busy parser lock with bounded retries, reducing UI waits during continuous output without indefinitely postponing a fresh snapshot. - Fixed long or truncated command-like output being mistaken for XMODEM/YMODEM transfer commands. Complete subsequent transfer commands remain detectable, including across input chunks. - Made trzsz wait for complete handshake lines before starting a transfer, avoiding premature detection when protocol markers are split across reads. Local benchmark results for OxideTerm 2.0.28, recorded on 2026-09-10 at 09:00:29 UTC using the [repository benchmark](https://github.com/AnalyseDeCircuit/oxideterm/tree/v2.0.28/benchmark): 16 MiB per workload, one warm-up and three measured runs. The table reports medians. | Workload | Median time (ms) | Median throughput (MiB/s) | |---|---:|---:| | plain | 133.606 | 119.755 | | ansi | 159.822 | 100.111 | | unicode | 165.883 | 96.454 | | long-csi | 153.803 | 104.029 | These results measure process-to-PTY throughput, not completed rendering or input latency. #### 🔌 Connections, Recovery, and Encrypted Sync - Added restart recovery for standalone serial, Telnet, Mosh, RDP, and VNC session entries, including temporary sessions. Entries return disconnected; temporary credentials are not persisted and must be supplied again when reconnecting. This restores session entries, not past terminal output. - Added SOCKS5 routing for RDP, including authentication, session-manager editing, and synchronization of its saved configuration. When an SSH gateway is selected, the gateway's own proxy settings take precedence; RDP's SOCKS5 settings apply when no SSH gateway is used. - Extended the separately selectable encrypted credential-sync scope to standalone SFTP and Mosh authentication, RDP/VNC passwords, and supported SOCKS5/HTTP upstream proxy credentials. Restored secrets use protected storage on the receiving device rather than copied device-local keychain references. - Preserved explicitly configured SSH algorithms during host-key preflight as well as connection setup. Improved SSH terminal-channel cleanup and retention of startup failures, and cleared expired keyboard-interactive authentication prompts. - Restored revealing saved SSH passwords without replacing the saved credential, and preserved saved serial profile names in active sessions. - Updated IronRDP to handle additional Font Map messages from RDP servers. #### 📂 SFTP, IDE, and Knowledge - Made the SFTP sidebar follow the active SSH terminal, with a pin action to keep a chosen server. Pending file selections are retired when the destination changes, preventing uploads to an unintended server. Reopening SFTP from session management preserves an existing full-tab view. - Raised the IDE editing limit to 100 MiB independently of the file-preview limit, across local, SFTP, and remote-agent file access. Large-file mode disables syntax processing and wrapping to limit editing overhead. - Preserved file encoding, BOM, and line endings when opening and saving. Added encoding and line-ending controls to the IDE status bar, including reopening with a specified encoding and choosing the save format. Text is normalized internally, and saving rejects characters that the selected encoding cannot represent. - Added knowledge-document pagination beyond the first 100 documents, with page navigation and recovery when the final page becomes empty. Embedding configuration now has its own card and remains available before a collection is created. #### ⚙️ Settings Organization - Renamed the connection and network pages to clarify their scope, reorganized cards across General, Terminal, Appearance, Connections, SFTP, and IDE, and restored missing card descriptions. Terminal input now separates clipboard, mouse/link, and keyboard/suggestion controls. - Moved external connection-link handling to Network & External Access and the terminal performance overlay to Help & About → Diagnostics. Clarified the two MCP directions, placed pending external MCP approvals before client management, and made client permissions expandable. - Separated current-conversation subagent options from global tool concurrency. Corrected missing and misplaced search entries, removed unavailable targets, and expanded matching collapsed AI settings when navigating from search. Updated all 11 languages and platform-specific labels. #### 🖥️ Desktop Interaction - Fixed Windows animation-frame scheduling that could starve input and quit messages. - Made connection tabs select on mouse press so fullscreen input-event ordering cannot clear a pending switch before release. - Restored a consistently visible close button on non-blocking connection progress cards. ### 中文 OxideTerm 2.0.28 新增 AI 消息排队与可选的子 Agent 协作,扩展加密凭据同步和 RDP 代理支持,将 IDE 编辑上限提高至 100 MiB 并保留文件编码,同时改进终端交互、会话恢复和设置导航。 #### 💬 OxideSens 对话与子 Agent - 支持在回复生成期间排队发送后续消息,并提供编辑、删除、调整顺序和立即发送操作。正常完成后发送下一条;停止或本轮失败时保留待发消息,等待手动继续。每条消息保留所属对话、模型和已准备的上下文。 - 增加独立的调整方向与打断后发送操作。调整方向向原生运行中的任务补充指令,不替换模型或权限;打断后发送取消当前轮次,并优先于队列发送替代消息。草稿与待发队列保存在内存中,重启工作区后不会自动重放。 - 原生 AI 对话新增可选的子 Agent 协作,默认按对话关闭。子任务可继承父任务模型或选择其他已配置模型;应用内同时运行的子 Agent 上限可设为 1–4 个,默认 2 个。ACP 会话不作为子 Agent 后端。 - 增加任务组进度、单个及整组停止、补充指令、可展开的任务详情,以及父子任务的 Token 用量展示。已完成的子任务历史归属父对话;历史中未完成的运行恢复为已中断状态。 - 子任务的终端、SFTP 和 IDE 访问限定在分配给它的资源内,用户在终端中的输入优先于排队的 AI 工作。停止 Agent 不代表已经发出的远程命令一定结束;未确认释放的终端控制需要显式处理。 #### 🖱️ 终端输入、选择与显示 - 新增关闭终端命令提示的设置,并保留当前输入草稿。Windows 本地 PowerShell 的命令建议现可读取 PSReadLine 历史。 - 新增独立的水平、垂直终端边距设置,默认均为 1 px。修正内容边缘的选择行为,支持通过 Shift-click 扩展已有选区。 - 新增可选的选中文本同词高亮,在现有高亮界面提供全局与会话级控制,默认关闭。 - 滚动和历史缓冲淘汰时,选区继续跟随原始内容;稳定时间戳的行身份,并修复退出历史搜索后自由输入模式的鼠标定位。 - 改进框线、方块等终端图形与单元格的对齐;Windows 下保留 DirectWrite 实际选用的后备字体,避免错误字形渲染。 - 修复 Vim、tmux 等备用屏幕程序中的 IME 候选框定位,包括从其他终端切回的场景。回归检查已覆盖终端输入接口路径,Windows 原生中文输入法的实际表现仍待确认。 #### ⚡ 终端输出与文件传输 - 减少普通终端输出的重复扫描和复制,同时保留控制字符串、图形、触发器和传输协议所需的有状态检测。 - 本地终端快照遇到繁忙的解析锁时采用有上限的延后重试,减少持续输出期间的界面等待,避免无限推迟快照更新。 - 修复过长或被截断的类命令输出误触发 XMODEM/YMODEM 传输。后续完整的传输命令仍可正常识别,并支持跨输入分块检测。 - trzsz 等待完整握手行后再启动传输,避免协议标记跨读取分块时提前触发。 OxideTerm 2.0.28 本机基准结果,测试时间为 2026-09-10 09:00:29 UTC,使用[仓库内的 benchmark](https://github.com/AnalyseDeCircuit/oxideterm/tree/v2.0.28/benchmark):每种负载 16 MiB,预热 1 次、实测 3 次,下表为中位数。 | 负载 | 耗时中位数(ms) | 吞吐量中位数(MiB/s) | |---|---:|---:| | plain | 133.606 | 119.755 | | ansi | 159.822 | 100.111 | | unicode | 165.883 | 96.454 | | long-csi | 153.803 | 104.029 | 该结果衡量进程向 PTY 输出的吞吐量,不代表完整渲染耗时或输入延迟。 #### 🔌 连接、恢复与加密同步 - 补齐独立串口、Telnet、Mosh、RDP 和 VNC 会话条目的跨重启恢复,覆盖临时会话。条目以断开状态恢复;临时凭据不落盘,重连时需重新提供。恢复的是会话条目,不包含过去的终端输出。 - RDP 新增 SOCKS5 路由,支持认证、会话管理中的编辑及已保存配置的同步。选择 SSH 网关时使用网关自身的代理设置;未使用 SSH 网关时才采用 RDP 的 SOCKS5 设置。 - 将可单独选择的加密凭据同步范围扩展至独立 SFTP、Mosh 认证、RDP/VNC 密码,以及受支持的 SOCKS5/HTTP 上游代理凭据。接收设备将恢复后的秘密写入受保护存储,不直接沿用其他设备的钥匙串引用。 - SSH 主机密钥预检和正式连接均遵循显式配置的算法偏好;改进终端通道清理和启动失败信息保留,并清除过期的键盘交互认证提示。 - 恢复查看已保存 SSH 密码的功能,不替换原凭据;串口活动会话保留已保存配置的名称。 - 更新 IronRDP,兼容 RDP 服务器额外发送的 Font Map 消息。 #### 📂 SFTP、IDE 与知识库 - SFTP 侧栏跟随活动 SSH 终端,并支持固定指定服务器。目标变化时清理待处理的文件选择,防止上传到错误服务器;从会话管理重新打开 SFTP 时保留已有的完整标签页。 - IDE 编辑上限提高至 100 MiB,与文件预览上限分离,覆盖本地、SFTP 和远程 Agent 文件访问。大文件模式关闭语法处理与自动折行,以控制编辑开销。 - 打开和保存文件时保留编码、BOM 与换行格式;IDE 状态栏新增编码及换行入口,支持按指定编码重新打开和修改保存格式。文本在内部统一换行;所选编码无法表示部分字符时拒绝有损保存。 - 知识库文档超过 100 个后可继续分页查看,支持翻页,并在最后一页变空时回退。嵌入配置独立成卡片,尚未创建集合时也可访问。 #### ⚙️ 设置整理 - 调整连接和网络页面名称以明确范围,整理通用、终端、外观、连接、SFTP 和 IDE 页内卡片,并恢复缺失的卡片说明。终端输入分为剪贴板、鼠标与链接、键盘与输入提示三组。 - 将外部连接链接移至“网络与外部访问”,终端性能浮层移至“帮助与关于 → 诊断”。说明两处 MCP 的访问方向,将外部 MCP 待审批操作置于客户端管理之前,并支持按需展开客户端权限。 - 分开当前会话的子 Agent 选项与全局工具并发设置;修正搜索漏项和错误位置,移除不可用目标,搜索进入 AI 设置时展开对应折叠区域。同步更新全部 11 种语言及平台专用文案。 #### 🖥️ 桌面交互 - 修复 Windows 动画帧调度挤占输入与退出消息处理的问题。 - 连接标签在鼠标按下时切换,避免全屏下输入事件顺序导致松开前待切换状态丢失。 - 恢复非阻塞连接进度卡片中持续可见的关闭按钮。 ![OxideTerm terminal throughput comparison through 2.0.28](https://raw.githubusercontent.com/AnalyseDeCircuit/oxideterm/main/.github/release-notes/assets/terminal-performance-2.0.28-comparison.png) ## 2.0.27 ### English OxideTerm 2.0.27 expands terminal semantic highlighting, adds merging existing terminal tabs into split panes and more flexible session logs, and improves serial output, connection prompts, AI streaming, and desktop compatibility. #### 🎨 Terminal Highlighting and Display - Expanded command-aware highlighting for compiler diagnostics, Git status and diffs, systemd services and journals, test results, and Docker/Kubernetes resource states. Classification follows the command context rather than treating every matching word as a status. - Added structured highlighting for `ls`, `stat`, `getfacl`, `df`, `free`, `ip`, `ss`, and `ping`, including file metadata, capacity, interface and socket states, and packet loss. File-listing parsing accounts for omitted owner/group columns and common GNU/BSD output differences. - Added distinct colors for Unix read, write, execute, and special permission bits. Weekday and month names also use separate colors, including in ordinary output. - Added nested bracket colors and subtle background bands for explicit error and warning lines. Semantic coloring continues to respect explicit terminal colors and manual foreground highlights; detected URLs no longer overwrite colors supplied by the shell. - Added horizontal scrolling to reveal terminal columns obscured when timestamps are enabled, without changing the terminal's column count. - Improved custom font-stack parsing so quoted family names and fallback fonts are handled correctly. #### 🪟 Terminal Tabs and Session Logs - Added horizontal and vertical merge actions to terminal tab context menus. Existing sessions of the same terminal type can be moved into the active tab as split panes without opening replacement connections. - Added a configurable session-log root directory and relative subdirectory templates, such as `{session}/{date}`, for organizing logs by session and date. - Added an unlimited log-file size option by setting the maximum size to `0`. Positive limits remain available; unlimited logging can consume additional disk space. #### 🔌 Serial and Connection Reliability - Added independent transmit and receive line-ending controls for serial sessions. Receive normalization handles CRLF split across input chunks; saved line-ending choices are retained in connection profiles and included in cloud sync. - Fixed ordinary terminal output being held indefinitely when its trailing bytes resemble the beginning of a modem-transfer handshake. Incomplete ambiguous prefixes are released when their wait expires or the stream ends. - Made connection and reconnection progress cards non-blocking. Dismissed cards remain dismissed across retries, and progress cards yield to keyboard-interactive authentication dialogs instead of covering the prompt. - Preserved explicitly configured legacy SSH algorithm preferences when creating sessions from saved connections. #### 🖥️ Desktop Compatibility and Credentials - Fixed tab clicks near the top edge of macOS fullscreen windows and adjusted traffic-light controls to native sizing. - Fixed macOS Keychain reads that could alter saved password text, including values that resemble hexadecimal data. Existing affected entries are read through the native Keychain path and migrated; macOS may request access during that migration. - Normalized Windows ConPTY environment blocks to avoid conflicting case variants of environment-variable names. - Removed duplicate entries from Linux local-shell discovery and improved checkbox visibility across the interface. #### 💬 AI Chat - Reduced repeated connection setup for AI chat and tool rounds by reusing the application's HTTP connection pool while keeping authentication request-scoped. - Fixed streamed chat events being lost during window updates, improving continuity of incremental responses and tool activity. #### ⚡ Terminal Performance and Contributor Documentation - Fixed command marks retaining obsolete coordinates after scrollback eviction. New output is no longer mistaken for an old command, and retained output remains associated with its running command. A macOS Apple M5 synthetic renderer workload with 2,000 previous commands improved from approximately 4.5–4.8 ms/frame to 0.58–0.66 ms/frame; this is a workload-specific result, not a cross-platform throughput claim. - Reused the current frame's logical-line index for semantic classification, avoiding repeated scans of wrapped lines without adding a persistent cache. - Added development documentation covering crate responsibilities, platform setup, verification, runtime ownership, GPUI CE maintenance, debugging, sensitive data, settings, localization, benchmarking, and releases. ### 中文 OxideTerm 2.0.27 扩展终端语义着色,新增将已有终端标签合并为分屏的操作和更灵活的会话日志配置,并改进串口输出、连接提示、AI 流式响应及桌面平台兼容性。 #### 🎨 终端着色与显示 - 扩展编译器诊断、Git 状态与差异、systemd 服务与日志、测试结果以及 Docker/Kubernetes 资源状态的命令感知着色。分类依据命令上下文,不会把所有同名词语都当成状态。 - 为 `ls`、`stat`、`getfacl`、`df`、`free`、`ip`、`ss` 和 `ping` 增加结构化着色,覆盖文件元数据、容量、网卡与套接字状态及丢包率。文件列表解析兼顾省略所有者或组列的情况,以及常见 GNU/BSD 输出差异。 - 为 Unix 读取、写入、执行和特殊权限位增加不同颜色。星期与月份名称也使用独立颜色,并支持普通输出中的识别。 - 新增嵌套括号配色,以及明确错误、警告行的浅色背景带。语义着色继续尊重终端显式颜色与手动前景高亮;自动识别的 URL 不再覆盖 Shell 提供的颜色。 - 在启用时间戳时增加横向滚动,可查看被遮挡的终端列,而不改变终端列数。 - 改进自定义字体列表解析,正确处理带引号的字体名称与后备字体。 #### 🪟 终端标签与会话日志 - 在终端标签右键菜单中新增横向、纵向合并操作。相同终端类型的已有会话可移入当前标签形成分屏,无需重新建立连接。 - 支持自定义会话日志根目录和相对子目录模板,例如 `{session}/{date}`,便于按会话、日期整理日志。 - 支持将日志最大文件大小设为 `0`,表示不限制大小;仍可设置正数限制。无限制记录可能持续占用磁盘空间。 #### 🔌 串口与连接可靠性 - 为串口会话增加独立的发送、接收换行控制。接收转换正确处理跨数据块的 CRLF;换行选择会保存到连接配置,并随云同步传递。 - 修复普通终端输出的末尾字节类似文件传输握手开头时,内容可能一直不显示的问题。不完整的待判定前缀会在等待到期或数据流结束时释放。 - 将连接与重连进度卡片改为非阻塞显示。关闭后的卡片不会因重试重新弹出;键盘交互认证对话框出现时,进度卡片会让出位置,不再遮挡认证提示。 - 从已保存连接创建会话时,保留用户明确配置的旧版 SSH 算法偏好。 #### 🖥️ 桌面兼容性与凭据 - 修复 macOS 全屏窗口顶部附近的标签点击,并将红绿灯控件调整为原生尺寸。 - 修复 macOS 钥匙串读取可能改变已保存密码原文的问题,包括看起来像十六进制数据的密码。受影响的旧条目会通过原生钥匙串读取并迁移,迁移时 macOS 可能请求访问授权。 - 规范 Windows ConPTY 环境变量块,避免同名变量的大小写变体互相冲突。 - 去除 Linux 本地 Shell 列表中的重复条目,并提升界面复选框的辨识度。 #### 💬 AI 对话 - 复用应用的 HTTP 连接池,减少 AI 对话及工具调用轮次中的重复连接准备,同时将认证信息保持在单次请求范围内。 - 修复窗口更新期间流式对话事件可能丢失的问题,改善增量回复与工具活动的连续性。 #### ⚡ 终端性能与贡献者文档 - 修复回滚历史裁剪后命令标记仍保留过期坐标的问题。新输出不再被误认为旧命令,仍保留的输出也会继续关联正在运行的命令。在 macOS Apple M5 上,包含 2000 条历史命令的合成渲染场景从约 4.5–4.8 ms/帧降至 0.58–0.66 ms/帧;该结果仅针对这一场景,不代表跨平台吞吐量提升。 - 语义分类复用当前帧的逻辑行索引,避免反复扫描自动换行的长行,不增加持久缓存。 - 新增开发文档,覆盖 crate 职责、平台环境、验证流程、运行时所有权、GPUI CE 维护、调试、敏感数据、设置、国际化、性能基准及发布流程。 ## 2.0.26 ### English OxideTerm 2.0.26 adds configurable terminal font weight and multiline Quick Command editing, improves native drag-and-drop and input handling across all three desktop platforms, and repairs macOS Keychain compatibility without reintroducing duplicate startup authentication. #### ✨ Terminal Display and Quick Commands - Added a terminal font-weight setting from 100 to 900. Regular text uses the selected weight, bold terminal cells remain at least bold, and fonts without an exact face may select their nearest available weight. - Replaced the Quick Command body field with a multiline editor. Enter and pasted line breaks are preserved so shell continuations, heredocs, and other structured commands can be stored without flattening them into one line. - Limited Quick Command template expansion to the explicit `{{param.*}}` and `{{ctx.*}}` namespaces. Other double-brace syntax, including Docker Go templates such as `{{.LogPath}}`, now remains literal. - Added deletion for every custom Quick Command group. A confirmation explains the operation, and commands in the removed group move to the built-in default group instead of being deleted. #### 🖥️ Desktop Input and Drag Reliability - Added macOS file and folder drag-and-drop for local terminal panes. Dropped paths are inserted as POSIX-quoted shell words with a trailing space and are never executed automatically; remote and non-terminal sessions do not accept this drop path. - Fixed Linux text input for XIM methods that send `COMPOUND_TEXT`; malformed or unsupported input is rejected safely instead of being accepted as invalid text. - Fixed a Windows redraw loop that could occur while editing SFTP and local file-manager address fields. - Fixed Windows tab dragging that could remain active after the mouse button was released and interfere with later clicks. #### 🔐 macOS Keychain and Managed SSH Keys - Preserved multiline managed SSH private keys when reading from newer macOS Keychain implementations, and added a guarded recovery path for entries previously stored as hexadecimal text. Unencrypted recovery is persisted only after the public-key fingerprint matches the saved metadata; encrypted recovery is not rewritten before it can be validated with its passphrase. - Restored opening encrypted connection data with a single Touch ID request instead of a password prompt followed by Touch ID, while retaining correct multiline managed-key reads. #### 🧰 Package Compatibility - Moved Linux arm64 release builds to the Ubuntu 22.04 runner and added an ELF symbol-version check that rejects binaries requiring newer than glibc 2.35, matching the existing Linux compatibility baseline for distributions such as Kylin V11. - Added complete Windows installer file properties, including the package version, application description, and copyright metadata. ### 中文 OxideTerm 2.0.26 新增可配置终端字重和多行快捷命令编辑,改进三个桌面平台的原生拖放与输入处理,并修复 macOS 钥匙串兼容性,同时避免重新引入启动时重复认证。 #### ✨ 终端显示与快捷命令 - 新增 100 至 900 的终端字重设置。普通文本使用所选字重,终端粗体单元格至少保持粗体;若字体没有完全对应的字重,系统可选择最接近的可用字重。 - 将快捷命令正文改为多行编辑器。Enter 和粘贴内容中的换行会被保留,因此 Shell 续行、heredoc 及其它结构化命令不再被压成一行。 - 将快捷命令模板展开限制在明确的 `{{param.*}}` 和 `{{ctx.*}}` 命名空间。其它双花括号语法会保持原文,包括 `{{.LogPath}}` 等 Docker Go 模板。 - 支持删除所有自定义快捷命令分组。操作前会显示确认说明,被删除分组中的命令会移至内置默认分组,而不会随分组一起删除。 #### 🖥️ 桌面输入与拖放可靠性 - 为 macOS 本地终端窗格新增文件和文件夹拖放。拖入路径会作为经过 POSIX 引用的 Shell 单词插入,并在末尾保留空格,但绝不会自动执行;远程及非终端会话不会接受该拖放路径。 - 修复使用 `COMPOUND_TEXT` 的 XIM 输入法在 Linux 上的文字输入;格式错误或不支持的输入会被安全拒绝,不再作为无效文字接收。 - 修复 Windows 编辑 SFTP 与本地文件管理器地址栏时可能出现的重绘循环。 - 修复 Windows 标签拖动在鼠标已经松开后仍可能保持活动并影响后续点击的问题。 #### 🔐 macOS 钥匙串与托管 SSH 密钥 - 在新版 macOS 钥匙串中完整保留多行托管 SSH 私钥,并为此前被保存为十六进制文本的条目增加受限恢复路径。未加密私钥只有在公钥指纹与已保存元数据一致后才会写回;加密私钥在使用口令完成验证前不会改写钥匙串。 - 恢复使用单次 Touch ID 打开加密连接数据,不再先出现密码提示再要求 Touch ID,同时继续正确读取多行托管密钥。 #### 🧰 软件包兼容性 - 将 Linux arm64 发布构建迁移至 Ubuntu 22.04 runner,并增加 ELF 符号版本检查,拒绝依赖高于 glibc 2.35 的二进制文件,使其与现有 Linux 兼容基线一致并覆盖银河麒麟 V11 等发行版。 - 补齐 Windows 安装器文件属性,包括软件包版本、应用说明和版权信息。 ## 2.0.25 ### English OxideTerm 2.0.25 refreshes the native GPUI desktop runtime, adds shared and independently authenticated SSH terminal splitting, aligns reconnect behavior across standalone protocols, improves session and SFTP organization, and resolves several Windows pointer, text-selection, editor-font, and native-window regressions while further increasing terminal throughput. #### ⚡ Terminal Performance and Pane Workflows - Retained physical terminal rows across scroll damage, reused generation-aware glyph data, batched native rendering work, and reduced repeated snapshot and paint preparation while preserving the existing fast path when no extra projection is needed. - In the current reproducible 16 MiB benchmark, median process-to-PTY throughput reached 89.959 MiB/s for plain text, 94.358 MiB/s for ANSI output, 77.642 MiB/s for Unicode output, and 100.820 MiB/s for long CSI sequences. Compared with the published 2.0.24 release results, these are further gains of 8.6%, 3.0%, 10.9%, and 1.2% respectively. - The benchmark used one warm-up and the median of three measured runs. It measures process-to-PTY throughput rather than completed rendering or input latency. - Added the normal split controls to eligible SSH terminals, removed the distracting active-pane background highlight, and made split dividers visible at 3 px when idle, 4 px on hover, and 5 px while dragging without enlarging the layout footprint. - Preserved tmux split dimensions, restored the cursor to the home position after clearing the buffer, kept `Ctrl+L` shell clearing intact, and stopped OxideTerm history suggestions from consuming Up/Down when the shell's own completion UI should handle them. #### 🔗 Shared Connections and Reconnect - Added multiple SSH terminals on one registry-owned physical transport. Closing one pane no longer disconnects sibling terminals, SFTP, port forwards, or monitoring consumers that still hold the node. - Added an SSH profile option for independently authenticated new terminals while retaining the same split workflow and stable saved-connection identity. Shared and dedicated channels now use explicit consumer leases and clean up failed consumers without transferring node ownership to a pane. - Reworked Serial, Telnet, Mosh, RDP, and VNC session records so disconnected sessions retain their original profile identity and can use the same explicit reconnect model instead of being replaced by another target. - Coalesced repeated reconnect requests, cancelled stale retries cleanly, and prevented restored SSH node identifiers from colliding with live nodes. Serial device-open failures are now surfaced instead of leaving an apparently connected but unusable session. #### 🗂️ Session and File Management - Added drag-and-drop organization for saved connections and groups, including nested folders, group-wide drop regions, explicit child-group creation, rename and delete actions, and context menus located beside the group being changed. - Simplified the Session Manager toolbar to one top-level **New Group** action; group-specific maintenance remains in each folder's context and overflow menus, while the shared editor continues to handle creation and renaming consistently. - Optimized recursive SFTP deletion and transfer progress delivery with bounded scheduling, less per-entry coordination, cancellable work, and coalesced progress updates; restored keyboard focus for SFTP file-row navigation. - Reordered connection forms so transport and endpoint fields appear before optional name, group, and notes metadata, and removed the retired standalone connection-monitor and macOS Launchpad entries from the application chrome. #### 🖥️ Native Desktop and Editor Reliability - Updated the vendored GPUI runtime and completed the application migration across macOS, Linux, and Windows, including refreshed text, scene, input, accessibility, scheduling, and native-window integration. - Linux client titlebars now respect the desktop button side and order, hide unsupported minimize or maximize controls, maximize on double-click, open the compositor window menu on right-click, activate buttons on completed clicks, and route Close through the normal close-request flow. - Repaired Windows pointer-capture and cursor reconciliation when mouse-up or capture-loss messages are missing, restored scenes after window blur, completed edge and corner resize hit testing, and cleared stale caption-button state. This prevents the persistent I-beam cursor and application-wide click lock seen after interacting with selectable text and controls. - Constrained selectable text to measured glyph hitboxes, stopped zero-length selections from swallowing unrelated clicks, and prevented page headers, empty states, and controls from entering read-only text-selection ownership. - Restored the configured terminal/code font in the editor on Windows, bundled the code-font resources needed by the refreshed runtime, and retained UI-font fallback for non-Latin glyphs. Static AI tool-call names are now localized consistently across all 11 supported languages. #### 🔒 Security, Sync, and Portable Runtime - Sandboxed Kitty local-file transmission behind an explicit per-session approval. Approved sessions receive a private transfer directory whose path is copied only after confirmation; the permission and directory lifetime end with the terminal session. - Restored Cloud Sync and encrypted `.oxide` compatibility for authenticated archives created before SSH algorithm-preference fields were added, while continuing to reject payloads whose protected connection data was actually modified. - Added opt-in portable automatic unlock using the current device's system credential manager. The portable password remains required after moving the folder to another device, and stale device credentials are removed before falling back to normal password entry. - The maintainer completed GUI validation for this release; localization catalogs, registered tool-name coverage, release metadata, and composed bilingual notes are validated by the release preparation checks. ### 中文 OxideTerm 2.0.25 更新原生 GPUI 桌面运行时,新增共享连接及独立认证两种 SSH 终端分屏模式,统一独立协议的断联重连行为,改进会话与 SFTP 管理,并修复多项 Windows 指针、文本选择、编辑器字体和原生窗口回归,同时继续提升终端吞吐量。 #### ⚡ 终端性能与窗格工作流 - 在滚动损伤期间保留终端物理行,复用带代次标记的字形数据,批量执行原生绘制工作,并减少重复快照与绘制准备;未启用额外投影时继续沿用原有快速路径。 - 在当前可复现的 16 MiB 基准中,纯文本、ANSI 输出、Unicode 输出及长 CSI 序列的进程到 PTY 吞吐量中位数分别达到 89.959、94.358、77.642 和 100.820 MiB/s。相较已发布的 2.0.24 数据,分别进一步提升 8.6%、3.0%、10.9% 和 1.2%。 - 基准采用一次预热及三次测量的中位数。该结果衡量进程到 PTY 的吞吐量,不代表绘制完成耗时或输入延迟。 - 为符合条件的 SSH 终端补齐与本地终端一致的分屏控件,移除干扰视觉的活动窗格背景高亮,并将分隔线调整为静止时 3 px、悬停时 4 px、拖动时 5 px,同时不扩大布局占用。 - 保留 tmux 分屏尺寸,清空缓冲区后将光标恢复到起始位置,维持 `Ctrl+L` Shell 清屏行为,并避免 OxideTerm 历史建议在 Shell 自身补全界面应处理上下键时抢占按键。 #### 🔗 共享连接与重连 - 支持在一个由连接注册表持有的物理 SSH 传输上创建多个终端。关闭单个窗格不会再断开仍由其它终端、SFTP、端口转发或监控消费者使用的节点。 - 新增为每个 SSH 新终端单独认证的配置,同时保留相同的分屏工作流和稳定的已保存连接身份。共享与独立通道均使用明确的消费者租约,并会在创建失败时清理消费者,而不会把节点所有权交给窗格。 - 重构串口、Telnet、Mosh、RDP 和 VNC 会话记录,使断联会话保留原始配置身份,并通过与 SSH 一致的明确重连模型恢复,而不是被其它目标替换。 - 合并重复重连请求并正确取消过期重试,防止恢复的 SSH 节点标识与活动节点冲突;串口设备打开失败现在会直接显示,不再留下看似已连接但无法使用的会话。 #### 🗂️ 会话与文件管理 - 为已保存连接和分组新增拖拽整理,支持嵌套文件夹、覆盖整个分组范围的放置区域、明确的新建子分组、重命名与删除操作,以及位于目标分组旁的右键菜单。 - 将会话管理器顶部收敛为一个“新建分组”入口;具体分组的维护继续由对应文件夹的右键及更多菜单承担,统一编辑器仍一致处理创建与重命名。 - 通过有界调度、更少的逐条目协调、可取消任务及合并进度更新优化 SFTP 递归删除和传输进度交付,并恢复 SFTP 文件行的键盘焦点导航。 - 调整连接表单顺序,使传输类型与目标端点字段位于可选名称、分组和备注之前;同时从应用界面移除已经退役的独立连接监控入口和 macOS 启动台。 #### 🖥️ 原生桌面与编辑器可靠性 - 更新内置 GPUI 运行时并完成 macOS、Linux 和 Windows 上的应用迁移,覆盖文本、场景、输入、可访问性、调度及原生窗口集成。 - Linux 客户端标题栏现在遵循桌面按钮所在侧及顺序,隐藏不支持的最小化或最大化按钮,支持双击最大化和右键打开合成器窗口菜单,在完整点击后才执行按钮操作,并让关闭按钮经过正常关闭请求流程。 - 修复 Windows 在缺少鼠标松开或捕获丢失消息时的指针捕获与光标协调,恢复窗口失焦后的场景,补齐窗口边缘及四角缩放命中测试,并清理过期标题栏按钮状态;这可避免与可选文本或控件交互后鼠标持续显示工字形且整个应用无法点击。 - 将可选文本命中范围限制到实际测量的字形区域,避免零长度选区吞掉无关点击,并阻止页面标题、空状态及控件进入只读文本选择所有权。 - 恢复 Windows 编辑器对终端及代码字体配置的使用,为新运行时打包所需代码字体资源,并为非拉丁字符保留界面字体回退;全部静态 AI 工具调用名称现已在 11 个支持语言中保持完整本地化。 #### 🔒 安全、同步与便携运行时 - 将 Kitty 本地文件传输限制在逐会话明确授权之后。获准会话会得到私有传输目录,只有确认后才复制目录路径;权限及目录生命周期均在终端会话结束时终止。 - 恢复 Cloud Sync 和加密 `.oxide` 文件对新增 SSH 算法偏好字段之前所创建认证归档的兼容,同时继续拒绝受保护连接数据确实被修改的内容。 - 新增可选的便携模式自动解锁,通过当前设备的系统凭据管理器保存派生解锁密钥。将文件夹移动到其它设备后仍需便携密码,过期设备凭据会先被删除,再回退到正常密码输入。 - 维护者已完成本版本的 GUI 验证;发布准备检查同时验证语言目录、已注册工具名称覆盖、发布元数据及合成后的双语说明。 ## 2.0.24 ### English OxideTerm 2.0.24 adds native tmux control-mode sessions, parameterized Quick Commands, configurable session logging, named broadcast groups, cross-platform Kerberos authentication, richer remote-desktop workflows, and scoped terminal history while further improving terminal throughput and saved-connection routing correctness. #### ⚡ Further Terminal Performance - Reduced repeated work across PTY draining, snapshot conversion, text layout, link preparation, and rendering; compacted snapshot-cell storage and reused unchanged terminal data more aggressively; and batched common ASCII parsing and grid writes in the vendored terminal stack. - In OxideTerm's reproducible 16 MiB release-build benchmark, median process-to-PTY throughput increased from 69.031 to 82.864 MiB/s for plain text, from 88.384 to 91.609 MiB/s for ANSI output, from 68.711 to 69.988 MiB/s for Unicode output, and from 96.685 to 99.644 MiB/s for long CSI sequences. These are further gains of 20.0%, 3.6%, 1.9%, and 3.1% over 2.0.23 respectively. - Across both optimization rounds, 2.0.24 reaches 26.36×, 12.50×, 15.93×, and 9.78× the original baseline throughput for plain text, ANSI output, Unicode output, and long CSI sequences respectively. - The comparison used the same fixture size, one warm-up, and the median of three measured runs. It measures process-to-PTY throughput rather than completed rendering or input latency. - Corrected precise touchpad smooth scrolling so a new gesture preserves its fractional visual position and consumes the first pixel delta instead of briefly snapping in the opposite direction. #### ✨ Native tmux, Session Logs, Broadcast Groups, and History - Added native tmux `-CC` control-mode sessions with session, window, and pane actions, synchronized pane layouts, draggable dividers, rename and command prompts, and explicit detach or close controls inside the terminal workspace. - Added configurable terminal session logging with global and per-connection policies, file-name and line templates, unique, append, or overwrite modes, optional ANSI control sequences, retention and size limits, and start, pause, resume, stop, and open-file actions. Automatic logging remains disabled by default because terminal output may contain sensitive data. - Added named broadcast groups alongside temporary target selection. Group membership remains explicit, closed targets are not silently replaced, and the command sender continues to skip unavailable members instead of widening the target set. - Restored compact Rich Input as a single-line text field with scoped ghost-text completion and an Up/Down history menu. Terminal history suggestions remain in process memory, are scoped to the relevant local session or SSH node, and are not stored in the operating-system credential store. #### 🧩 Parameterized Quick Commands - Added text, choice, and secret parameters plus target-context tokens for host, username, port, current directory, connection, group, and selection. Templates support explicit POSIX shell quoting and are expanded independently for each selected target. - Added protocol and host-pattern availability, per-target previews, unavailable-target reporting, bounded expansion, and per-command confirmation policies. Commands approved by the user are frozen before dispatch so later target or input changes cannot alter the authorized payload. - Secret parameter values use short-lived protected buffers, stay out of stored Quick Command definitions and diagnostic output, and hide expanded previews that would expose them. Risk classification and confirmation are applied to the final expanded command. - Expanded Quick Command management across the desktop UI, CLI, plugins, Public MCP, terminal triggers, Cloud Sync, and `.oxide` transfer. Categories and commands now support explicit ordering, and desktop exports use atomic snapshot replacement. #### 🤖 AI Provider Compatibility - Aligned OpenAI-compatible model discovery, selector readiness, and chat execution. Local and private endpoints now reuse optional stored credentials and the same `/v1` fallback during readiness checks, while compatible keyless gateways remain selectable. #### 🔐 SSH, Kerberos, and Connection Identity - Added Kerberos-preferred SSH authentication on macOS, Linux, and Windows through the operating system's current credentials, with conventional fallback authentication, optional server identity, credential-availability feedback, and an explicit delegation warning and control. - Added editable SSH negotiation order for key exchange, host-key, cipher, MAC, and compression categories, together with stage-aware connection progress, redacted connection traces, and progress cards that can be dismissed without cancelling the connection. - Added operating-system connection handlers and an opt-in setting for external `ssh://`, `telnet://`, `mosh://`, `rdp://`, and `vnc://` links, including safe delivery from a second application launch into the existing workspace. - Corrected Saved Connection reuse so route endpoints, complete proxy paths, runtime ownership, and workspace ownership must all match before an existing logical node or terminal can be focused. Profiles that share a host, username, and port remain logically isolated, while different ports are also distinct physical connection identities. - Preserved local authentication material when synchronized connection metadata adds or changes Kerberos settings, so a metadata update cannot discard device-local passwords or passphrases. #### 🖥️ Remote Desktop and SFTP - Expanded remote-desktop file transfer with remote browsing, root and parent navigation, downloads, progress and cancellation, destination selection, and overwrite, rename, or skip conflict policies. - Expanded VNC security compatibility with VeNCrypt Plain and SASL authentication over TLS, including verified X.509 variants, credential-aware subtype selection, bounded protocol exchanges, and protected handling of usernames and passwords. - Added RDP network-quality profiles for automatic detection, local networks, broadband, and low-bandwidth links so visual effects and bandwidth hints can match the connection. - Improved SFTP upload buffering, hardened streamed archive transfers with bounded errors, idle timeouts, cancellation, cleanup, and unpacked-byte progress, and stopped slow terminal working-directory discovery from prematurely failing otherwise healthy SFTP workflows. #### ☁️ Backup and Sync Workflows - Moved local encrypted `.oxide` import and export into the Cloud Hub so local backups and cloud synchronization live in one place while remaining available without configuring a cloud provider. - Extended synchronized Quick Command and SSH metadata while keeping device-local secret values outside portable snapshots and preserving them across compatible updates. ### 中文 OxideTerm 2.0.24 新增原生 tmux 控制模式、参数化快捷命令、可配置会话日志、命名广播组、跨平台 Kerberos 认证、更完整的远程桌面工作流及分作用域终端历史,同时继续提升终端吞吐量并修正已保存连接的路由复用。 #### ⚡ 终端性能进一步强化 - 减少 PTY 排空、快照转换、文本布局、链接准备及绘制中的重复工作;压缩终端快照单元存储并更积极地复用未变化数据;同时在内置终端栈中批量处理常见 ASCII 解析与网格写入。 - 在 OxideTerm 可复现的 16 MiB 发布构建基准中,纯文本的进程到 PTY 吞吐量中位数由 69.031 MiB/s 提升至 82.864 MiB/s,ANSI 输出由 88.384 MiB/s 提升至 91.609 MiB/s,Unicode 输出由 68.711 MiB/s 提升至 69.988 MiB/s,长 CSI 序列由 96.685 MiB/s 提升至 99.644 MiB/s;相较 2.0.23 分别进一步提升 20.0%、3.6%、1.9% 和 3.1%。 - 综合两轮优化后,2.0.24 的纯文本、ANSI 输出、Unicode 输出及长 CSI 序列吞吐量分别达到最初基线的 26.36 倍、12.50 倍、15.93 倍和 9.78 倍。 - 对比采用相同的测试数据规模、一次预热及三次测量的中位数。该结果衡量进程到 PTY 的吞吐量,不代表绘制完成耗时或输入延迟。 - 修正精确触控板的平滑滚动:新手势会保留原有的小数行视觉位置并消费首段像素增量,不再先向相反方向短暂回跳。 #### ✨ 原生 tmux、会话日志、广播组与历史记录 - 新增原生 tmux `-CC` 控制模式,支持会话、窗口与窗格操作、同步窗格布局、可拖拽分隔线、重命名与命令输入,以及在终端工作区内明确分离或关闭会话。 - 新增可配置终端会话日志,提供全局与单连接策略、文件名及行内容模板、创建唯一文件、追加或覆盖模式、可选 ANSI 控制序列、保留期限与大小上限,以及开始、暂停、继续、停止和打开日志操作。由于终端输出可能包含敏感数据,自动记录默认保持关闭。 - 新增命名广播组并保留临时目标选择。组成员始终需要明确指定,已关闭目标不会被其他终端静默替换,命令发送器会跳过不可用成员而不会擅自扩大目标范围。 - 将紧凑 Rich Input 恢复为单行文本框,并新增分作用域幽灵文本补全及上下键历史菜单。终端历史建议仅保存在当前进程内,按本地会话或 SSH 节点隔离,不写入操作系统凭据存储。 #### 🧩 参数化快捷命令 - 新增文本、选项及敏感参数,并提供主机、用户名、端口、当前目录、连接、分组和选区等目标上下文令牌。模板支持显式 POSIX Shell 转义,并会为每个选中目标分别展开。 - 新增协议与主机模式可用范围、逐目标预览、不可用目标提示、有界展开及单命令确认策略。用户批准后的命令会在分发前冻结,后续目标或输入变化无法修改已经授权的内容。 - 敏感参数值使用短生命周期受保护缓冲区,不进入持久化快捷命令定义或诊断输出;可能暴露敏感值的展开预览会被隐藏。风险分级与确认针对最终展开后的命令执行。 - 扩展桌面界面、CLI、插件、Public MCP、终端触发器、Cloud Sync 及 `.oxide` 传输中的快捷命令管理。分类和命令现可明确排序,桌面导出采用原子快照替换。 #### 🤖 AI 服务兼容性 - 统一 OpenAI-compatible 模型发现、模型选择器就绪状态与聊天执行。对本地及私网服务的就绪探测现会复用可选的系统凭据和相同的 `/v1` 回退规则,同时继续允许选择兼容的无密钥网关。 #### 🔐 SSH、Kerberos 与连接身份 - 在 macOS、Linux 和 Windows 上新增优先使用当前操作系统凭据的 Kerberos SSH 认证,并提供常规认证回退、可选服务端身份、凭据可用性提示,以及明确的凭据委派警告与开关。 - 新增密钥交换、主机密钥、加密算法、MAC 及压缩类别的 SSH 协商顺序编辑,并提供分阶段连接进度、已脱敏连接追踪,以及可在不取消连接的情况下关闭的进度卡片。 - 新增操作系统连接协议处理及外部链接开关,支持 `ssh://`、`telnet://`、`mosh://`、`rdp://` 和 `vnc://`,并可将第二次应用启动收到的链接安全交付到现有工作区。 - 修复已保存连接的复用规则:只有路由端点、完整代理路径、运行时所有者及工作区所有者全部匹配时,才会聚焦已有逻辑节点或终端。即使多个配置共用相同主机、用户名和端口,逻辑终端仍彼此隔离;端口不同的连接也会使用不同的物理连接身份。 - 在同步连接元数据新增或修改 Kerberos 设置时保留本机认证材料,避免元数据更新丢弃设备本地的密码或口令。 #### 🖥️ 远程桌面与 SFTP - 扩展远程桌面文件传输,新增远端浏览、根目录与上级目录导航、下载、进度与取消、目标位置选择,以及覆盖、重命名或跳过冲突策略。 - 扩展 VNC 安全兼容性,支持 TLS 上的 VeNCrypt Plain 与 SASL 认证及经过验证的 X.509 变体,并根据凭据选择可用子类型,对协议交换设置边界,同时以受保护方式处理用户名和密码。 - 新增 RDP 网络质量配置,可选择自动检测、局域网、宽带或低带宽链路,使视觉效果与带宽提示更符合当前连接。 - 优化 SFTP 上传缓冲区;加强流式归档传输的有界错误、空闲超时、取消、清理及解包字节进度;同时避免较慢的终端工作目录探测过早中止本来正常的 SFTP 工作流。 #### ☁️ 备份与同步工作流 - 将本地加密 `.oxide` 导入与导出移入 Cloud Hub,使本地备份与云同步集中在同一位置,同时在未配置云服务商时仍可使用。 - 扩展同步的快捷命令与 SSH 元数据,并继续将设备本地敏感值排除在可移植快照之外,在兼容更新中保留这些值。 ![OxideTerm 2.0.24 release highlights: native tmux, parameterized Quick Commands, session logging, Kerberos SSH, and a faster terminal](https://raw.githubusercontent.com/AnalyseDeCircuit/oxideterm/v2.0.24/.github/release-notes/assets/oxideterm-2.0.24-release-highlights.png) ![OxideTerm terminal throughput before optimization, in 2.0.23, and in 2.0.24](https://raw.githubusercontent.com/AnalyseDeCircuit/oxideterm/main/.github/release-notes/assets/terminal-performance-2.0.24-comparison.png) ## 2.0.23 ### English OxideTerm 2.0.23 adds terminal-output triggers, substantially improves terminal throughput, strengthens cross-device Cloud Sync conflict handling, and fixes several SSH, Quick Command, semantic-highlighting, editor, and native-window workflows. #### ✨ Terminal Triggers and Toolbar Workflows - Added a global trigger rule library with per-session temporary toggles. Rules can be managed from Terminal settings and opened directly from the terminal toolbar, context menu, or Command Palette without losing the source pane. - Added literal and regular-expression matching with case sensitivity, whole-word matching, named captures, immediate or next-line execution, optional delay, and a per-rule cooldown to prevent echo loops and repeated bursts. - Added trigger actions for sending text to the matching terminal, running an existing Quick Command, and launching a local program. Direct-program arguments preserve argument boundaries, while Shell execution requires a separate explicit authorization and warning. - Added scopes for all terminals, local terminals, or selected saved SSH, Telnet, Mosh, and Serial connections. Delayed and confirmed actions remain attached to the pane that produced the match and are cancelled if the pane, session, or rule is no longer valid. - Kept trigger scanning incremental and bounded across fragmented UTF-8, ANSI control sequences, line rewrites, and chunk boundaries. Sessions without active rules retain a dedicated no-op path and do not enable full terminal-output events. - Consolidated **Record Session** and **Open Recording** into one terminal-toolbar control with a compact action popover. #### ⚡ Terminal Performance - Optimized terminal output processing and high-density scrolling by eliminating repeated scanning, copying, scheduling, layout, and rendering work while preserving protocol detection and terminal compatibility. - In OxideTerm's reproducible 16 MiB release-build benchmark, median process-to-PTY throughput increased from 3.144 to 69.031 MiB/s for plain text, from 7.330 to 88.384 MiB/s for ANSI output, from 4.393 to 68.711 MiB/s for Unicode output, and from 10.191 to 96.685 MiB/s for long CSI sequences. These results correspond to speedups of 21.96×, 12.06×, 15.64×, and 9.49× respectively. - The comparison used the same fixture size, one warm-up, and the median of three measured runs. It measures process-to-PTY throughput rather than completed rendering or input latency. #### ☁️ Cloud Sync Reliability - Corrected structured synchronization when another device publishes an empty section, so deletions and empty baselines are applied instead of being skipped and later reported as false conflicts. - Repaired conflict preview selection for empty connection, Quick Command, forwarding, profile, credential, application-setting, and plugin-setting sections. - Kept **Pull & Preview** available when a real conflict needs inspection, and added a separately confirmed **Force Upload** choice for users who intentionally want the local state to replace the remote state. #### 🔐 SSH and Connection Workflows - Imported OpenSSH `RemoteCommand` into the existing post-connect command field, including supported token expansion and source-aware refresh behavior when `~/.ssh/config` changes. - Fixed editing saved password authentication: typing or pasting now replaces the keychain-backed value without loading it into the form, while clearing an unfinished replacement restores the protected saved-password placeholder. - Preserved jump-host and proxy-chain routes when saved connections are edited, synchronized, imported, exported, or opened through supported public connection workflows. - Reorganized advanced SSH explanations into the existing information popovers for connection timeout, per-terminal authentication, agent forwarding, X11 forwarding, and legacy-server compatibility, reducing permanent form text without removing guidance. #### 🛠️ Terminal, Editor, and Window Fixes - Preserved semantic highlighting across wide and multi-column characters, including complete localized dates such as `6月22` instead of styling only part of the value. - Restored scrollable Quick Command category lists and the confirmation view for commands that require approval, including long commands that exceed the visible panel height. - Restored persisted normal, maximized, and full-screen window state after Wayland and macOS window-state transitions. - Painted editor selections across empty lines and clipped horizontally scrolled editor content at the gutter boundary. #### 🧰 Linux Build Maintenance - Removed obsolete GTK, JavaScriptCoreGTK, Soup, and WebKitGTK development packages from the Linux dependency installer while retaining the DBus development files required by system-keyring integration. OxideTerm's native GPUI interface continues to render directly to the GPU and does not require a WebView runtime. ### 中文 OxideTerm 2.0.23 新增终端输出触发器,显著提升终端吞吐量,加强跨设备云同步冲突处理,并修复多项 SSH、快捷命令、语义高亮、编辑器和原生窗口问题。 #### ✨ 终端触发器与工具栏工作流 - 新增全局触发器规则库及当前会话临时开关。用户可在终端设置中管理规则,也可从终端工具栏、右键菜单或命令面板直接进入,并保持来源窗格不变。 - 新增普通文本与正则表达式匹配,支持区分大小写、完整单词、命名捕获、立即或下一次换行时执行、可选延迟,以及用于避免回显循环和短时重复触发的规则级最小间隔。 - 新增向匹配终端发送文本、运行已有快捷命令及启动本机程序的触发动作。直接程序模式会保持参数边界;Shell 执行则必须单独明确授权并经过风险提示。 - 新增全部终端、本地终端或指定已保存 SSH、Telnet、Mosh、串口连接的适用范围。延迟及待确认动作始终绑定产生匹配的窗格;当窗格、会话或规则不再有效时会自动取消。 - 触发器扫描可在拆分的 UTF-8、ANSI 控制序列、行覆写及输出分块之间进行有界增量处理。没有活动规则的会话继续使用专用空操作路径,也不会开启完整终端输出事件。 - 将“录制会话”和“打开录制”合并为一个终端工具栏控件,并通过紧凑气泡菜单选择具体操作。 #### ⚡ 终端性能 - 优化终端输出处理及高密度滚动,减少重复扫描、复制、调度、布局和绘制工作,同时保持协议探测能力及终端兼容性。 - 在 OxideTerm 可复现的 16 MiB 发布构建基准中,纯文本的进程到 PTY 吞吐量中位数由 3.144 MiB/s 提升至 69.031 MiB/s,ANSI 输出由 7.330 MiB/s 提升至 88.384 MiB/s,Unicode 输出由 4.393 MiB/s 提升至 68.711 MiB/s,长 CSI 序列由 10.191 MiB/s 提升至 96.685 MiB/s,分别达到原来的 21.96 倍、12.06 倍、15.64 倍和 9.49 倍。 - 对比采用相同的测试数据规模、一次预热及三次测量的中位数。该结果衡量进程到 PTY 的吞吐量,不代表绘制完成耗时或输入延迟。 #### ☁️ 云同步可靠性 - 修复其他设备发布空结构化分区时的同步行为,使删除结果和空基线能够正确应用,不再被跳过并在后续同步中误报冲突。 - 修复空连接、快捷命令、端口转发、各类配置、凭据、应用设置及插件设置分区的冲突预览选择。 - 当真实冲突需要检查时保持“拉取并预览”可用,并为确实希望用本地状态替换远端状态的用户新增需要单独确认的“强制上传”选项。 #### 🔐 SSH 与连接工作流 - 将 OpenSSH 的 `RemoteCommand` 导入现有连接后命令字段,并支持相应的令牌展开,以及 `~/.ssh/config` 变化时按配置来源更新。 - 修复已保存密码认证的编辑流程:输入或粘贴新密码时会替换钥匙串中的值,而不会先将旧密码载入表单;清空尚未完成的替换内容时会恢复受保护的已保存密码占位状态。 - 在编辑、同步、导入导出已保存连接,以及通过受支持的公共连接工作流打开连接时,完整保留跳板主机与代理链路由。 - 将连接超时、每个终端单独认证、SSH Agent 转发、X11 转发及旧版服务器兼容性的高级说明统一收进现有信息提示中,在保留帮助内容的同时减少表单中的常驻文字。 #### 🛠️ 终端、编辑器与窗口修复 - 修复宽字符和多列字符两侧语义高亮丢失的问题,使 `6月22` 等本地化日期能够完整着色,而不是只处理其中一部分。 - 恢复快捷命令分类列表的滚动及需要批准的命令确认界面,并正确处理超过面板可见高度的长命令。 - 修复 Wayland 与 macOS 窗口状态切换后普通、最大化和全屏状态无法正确持久化的问题。 - 修复编辑器选区跨越空行时未完整绘制的问题,并在水平滚动时将编辑器内容正确裁剪在行号栏边界内。 #### 🧰 Linux 构建维护 - 从 Linux 依赖安装脚本中移除已不再需要的 GTK、JavaScriptCoreGTK、Soup 和 WebKitGTK 开发包,同时保留系统钥匙串集成所需的 DBus 开发文件。OxideTerm 的原生 GPUI 界面继续直接通过 GPU 绘制,不依赖 WebView 运行时。 ![OxideTerm release-build terminal throughput before and after optimization](https://raw.githubusercontent.com/AnalyseDeCircuit/oxideterm/v2.0.23/.github/release-notes/assets/terminal-performance-release-comparison.png) ## 2.0.22 ### English OxideTerm 2.0.22 is a feature-heavy update with several subsystem-level additions. It introduces independent and remote-to-remote SFTP workflows, a complete configurable terminal semantic-coloring system, richer saved connection profiles, and broad terminal, remote-desktop, editor, and native-window improvements while intentionally remaining on the 2.0 release line. #### ✨ Standalone SFTP and Connection Workflows - Added standalone SFTP profiles for cases where an SFTP endpoint must not reuse a saved SSH host, including servers with different SSH and SFTP ports or credentials. - Added both local-to-remote and remote-to-remote transfer modes. Remote-to-remote profiles expose two independently authenticated endpoints, each with its own host, port, username, authentication method, initial directory, timeout, `ProxyCommand`, and upstream proxy settings. - Added a dedicated advanced SFTP workspace that reuses the dual-pane file-transfer experience, keeps endpoint settings visually separated, and supports creating, saving, reopening, and editing standalone profiles. - Added application-managed relays between two remote SFTP endpoints with bounded buffering and concurrency, so large transfers do not require loading an entire file or directory into memory. - Added persisted restart recovery for single-file remote relays. Resume validates the profile, both endpoints, source identity, partial destination, and staging metadata before continuing; directory relays retain bounded in-session scheduling but do not yet resume after an application restart. - Integrated standalone SFTP profiles with the Session Manager and connection-opening flows and preserved them through `.oxide` import and export, Cloud Sync, and the shared connection data model. - Added a compact editable path field to the SFTP sidebar with remote directory completion, keyboard navigation, direct path submission, and synchronization with normal folder navigation without using the wider breadcrumb component. - Added optional multiline notes to every saved connection type except local terminals. Notes survive editing, import and export, Cloud Sync, and public or command-line connection data paths, with a clear warning not to store passwords, private keys, or other credentials. - Added SSH `ProxyCommand` configuration and persistence, and reorganized connection forms so transport selection precedes the endpoint-specific fields it controls. #### 🎨 Terminal Semantic Coloring and Highlighting - Added a semantic-coloring engine for otherwise unstyled terminal text while preserving explicit ANSI foreground colors, backgrounds, and text attributes emitted by terminal applications. - Added distinct semantic classes and colors for commands, keywords, options, operators, strings, variables, comments, links, paths, network addresses, timestamps, numbers, errors, warnings, successes, and informational values instead of routing unrelated matches through one accent color. - Expanded structured recognition for IPv4 and IPv6 addresses, MAC addresses, UUIDs, POSIX and Windows paths, URLs, localized dates, 12-hour and 24-hour times, elapsed and long-duration values, assignments, `key=value` fields, and common log status expressions. - Added command syntax recognition for Bash, Zsh, Fish, and PowerShell and a specialized `ps` output parser that distinguishes process identifiers, resource values, states, dates, elapsed times, options, assignments, commands, and paths by column and context. - Added punctuation and operator styling for pipes, assignment signs, separators, asterisks, and related shell symbols, including separate punctuation inside structured values such as the colon in a time. - Added balanced multi-level bracket coloring for parentheses, square brackets, braces, and supported full-width pairs. Nested levels cycle through distinct colors, and unmatched delimiters are handled without recursively scanning the terminal buffer. - Added built-in balanced and conservative schemes plus user-managed custom semantic schemes with per-class colors and create, import, export, select, and delete workflows. - Added transient command-context highlighting that extracts literal query terms from `grep` and `rg`, limits each term to the corresponding command output block, and automatically expires it for later commands instead of creating a persistent rule. - Reorganized the terminal highlight menu into semantic coloring, persistent keyword or regular-expression rules, and `grep` or `rg` command-context highlighting. Each layer can be controlled independently and overridden for the active session. - Semantic coloring is disabled by default and remains available as an explicit global or per-session choice from the terminal highlight controls. - Updated terminal row timestamps with clearer bracketed presentation while keeping timestamp display separate from text semantic coloring. #### ⚙️ Compatibility, Performance, and Reliability - Reduced redundant terminal scheduling, layout, and rendering work; bounded output draining and byte-aware backpressure; and reused scroll snapshots, rows, and layout results more effectively during high-output sessions. - Kept semantic analysis limited to relevant visible logical lines, reused compiled schemes and cached layouts, and skipped semantic work entirely when the feature is disabled or the terminal is in an alternate-screen application. - Added an RDP graphics-pipeline compatibility option for servers that render Progressive RemoteFX incorrectly, allowing those profiles to fall back to bitmap updates without changing the endpoint itself. - Compactly reorganized remote-desktop session feature controls while retaining saved RDP and VNC behavior. - Rebuilt stale GPU scenes after graphics-device recovery, stabilized Windows fallback-font identity, and applied the configured system-font fallback consistently. - Restored native Linux client-window edge resizing and added a horizontal overflow scrollbar to the editor for long lines and wide content. - Restored printable terminal input when the active shell remains visible but Workspace temporarily owns keyboard focus, matching the existing Enter, Tab, navigation, and protocol-key fallback without intercepting shortcuts or IME composition. - Preserved shifted text correctly in Kitty keyboard mode, kept long Quick Commands editable, and prevented forwarding statistics events from feeding back into repeated updates. - Preserved stored terminal options when command-line connection specifications are cloned. - Preserved backslashes in Windows drive-letter and UNC private-key paths imported from SSH configuration files. - Added copyable external MCP stdio JSON configuration so supported external clients can be connected without manually reconstructing the launch configuration. - Refined the local-terminal form and editor selection behavior for consistency with the other connection workflows. #### 🧰 Release Maintenance - Consolidated redundant and low-value tests, replaced repeated setup with shared defaults or builders, and moved runtime-dependent PTY, network, thread, and platform behavior into integration coverage while retaining security, credential, persistence, migration, protocol-compatibility, and data-loss protection. - Restored standalone SFTP synchronization snapshots and localization completeness checks across supported languages. - Made stable release notes bilingual, with aligned English and Chinese sections for each new release. ### 中文 OxideTerm 2.0.22 是一次包含多项子系统级新增能力的功能密集型更新。在继续保持 2.0 版本线的同时,本次更新引入独立及双远程 SFTP 工作流、完整且可配置的终端语义着色系统、更丰富的连接配置,并广泛改进终端、远程桌面、编辑器和原生窗口体验。 #### ✨ 独立 SFTP 与连接工作流 - 新增独立 SFTP 配置,适用于 SFTP 端点不应复用已保存 SSH 主机的场景,包括 SSH 与 SFTP 端口或凭据不同的服务器。 - 新增本地与远程、远程与远程两种传输方式。双远程配置包含两个独立认证的端点,每个端点都可分别设置主机、端口、用户名、认证方式、初始目录、超时、`ProxyCommand` 和上游代理。 - 新增专用高级 SFTP 工作区,复用双栏文件传输体验,清晰分隔不同端点的设置,并支持创建、保存、重新打开和编辑独立配置。 - 新增两个远程 SFTP 端点之间由应用管理的中继,并限制缓冲区及并发量,传输大文件或大型目录时无需将全部内容一次性载入内存。 - 新增单文件远程中继的持久化重启恢复。续传前会校验配置、两个端点、源文件身份、部分目标文件及暂存元数据;目录中继继续使用会话内的有界调度,但暂不支持应用重启后续传。 - 将独立 SFTP 配置接入会话管理器和连接打开流程,并在 `.oxide` 导入导出、云同步及共享连接数据模型中完整保留。 - 在 SFTP 侧栏新增紧凑的可编辑路径,支持远程目录补全、键盘导航、直接提交路径,并与普通目录导航同步,无需复用占用空间较大的面包屑组件。 - 为除本地终端外的所有已保存连接类型新增可选多行备注。备注可在编辑、导入导出、云同步及公共或命令行连接数据链路中保留,并明确提醒不要存储密码、私钥或其他凭据。 - 新增 SSH `ProxyCommand` 的配置和持久化,并重新组织连接表单,使传输方式选择先于其控制的端点表单展开。 #### 🎨 终端语义着色与高亮 - 新增用于处理终端无样式文本的语义着色引擎,同时保留终端应用显式发送的 ANSI 前景色、背景色及文字属性。 - 为命令、关键字、选项、运算符、字符串、变量、注释、链接、路径、网络地址、时间戳、数字、错误、警告、成功和信息值提供独立语义类别与颜色,不再让无关内容共用同一种强调色。 - 扩展 IPv4、IPv6、MAC 地址、UUID、POSIX 与 Windows 路径、网址、本地化日期、十二小时制与二十四小时制时间、运行时长、长耗时、赋值、`key=value` 字段及常见日志状态短语的结构化识别。 - 新增 Bash、Zsh、Fish 和 PowerShell 命令语法识别,并加入专用的 `ps` 输出解析器,可按列和上下文区分进程标识、资源数值、状态、日期、运行时间、选项、赋值、命令和路径。 - 新增管道符、赋值号、分隔符、星号及相关 Shell 符号的标点和运算符着色,并可独立处理时间中冒号等结构化值内部的标点。 - 新增圆括号、方括号、花括号和受支持全角括号的多层平衡着色。嵌套层级会循环使用不同颜色,未配对分隔符也不会触发对整个终端缓冲区的递归扫描。 - 新增内置的均衡与保守方案,并支持用户管理自定义语义方案,可按类别设置颜色以及创建、导入、导出、选择和删除方案。 - 新增临时命令上下文高亮,可从 `grep` 和 `rg` 提取字面查询词,仅在对应命令的输出块内生效,并在后续命令中自动失效,而不是创建永久规则。 - 将终端高亮菜单重新组织为语义着色、持久化关键词或正则规则、`grep` 或 `rg` 命令上下文高亮三层。每层均可独立控制,并可对当前会话进行覆盖。 - 语义着色默认关闭,用户可从终端高亮控制中明确选择全局开启或仅对当前会话开启。 - 更新终端行时间戳的括号样式,同时继续将时间戳界面与文本语义着色分开处理。 #### ⚙️ 兼容性、性能与可靠性 - 减少终端调度、布局和渲染中的重复工作,限制高输出场景的单次排空量并采用按字节计算的背压,同时更有效地复用滚动快照、行和布局结果。 - 将语义分析限制在相关的可见逻辑行,复用已编译方案和布局缓存,并在功能关闭或终端运行全屏交互应用时完全跳过语义处理。 - 新增 RDP 图形管线兼容选项;当服务器无法正确渲染 Progressive RemoteFX 时,可让相应配置回退到位图更新,而无需修改端点本身。 - 紧凑重组远程桌面会话功能控制,同时保留已保存的 RDP 与 VNC 行为。 - 修复图形设备恢复后 GPU 场景未正确重建的问题,稳定 Windows 后备字体标识,并一致应用用户配置的系统字体回退。 - 恢复 Linux 原生客户端窗口的边缘缩放,并为编辑器长行和宽内容增加横向溢出滚动条。 - 修复活动终端仍可见但键盘焦点暂时由工作区持有时普通字符无法输入的问题,使其与已有的回车、制表、导航和协议按键后备路径一致,同时不拦截快捷键或输入法组合输入。 - 修复 Kitty 键盘模式中的移位文本保留,确保较长的快捷命令仍可编辑,并阻止端口转发统计事件形成重复更新回路。 - 在复制命令行连接规格时保留已存储的终端选项。 - 修复从 SSH 配置导入 Windows 盘符路径和 UNC 私钥路径时反斜杠丢失的问题。 - 新增可复制的外部 MCP 标准输入输出 JSON 配置,使受支持的外部客户端无需手工重建启动参数即可连接。 - 调整本地终端表单和编辑器选区行为,使其与其他连接工作流保持一致。 #### 🧰 发布维护 - 合并重复及低价值测试,使用共享默认值或构建器替代重复初始化,并将依赖 PTY、网络、线程和平台运行时的行为移至集成测试,同时保留安全、凭据、持久化、迁移、协议兼容和数据丢失防护测试。 - 恢复独立 SFTP 的同步快照及全部受支持语言的本地化完整性检查。 - 将稳定版发布说明改为中英双语,并让每个新版本的英文与中文内容逐项对应。 ## 2.0.21 OxideTerm 2.0.21 adds controlled external MCP access, expands ACP and plugin interoperability, and improves SFTP, remote-desktop, Cloud Sync, and native window workflows. ### ✨ Highlights - Added authenticated External MCP Control for editors, command-line agents, and other clients, with loopback HTTP and stdio access to explicitly granted connection, terminal, SFTP, transfer, forwarding, remote-desktop, recording, IDE workspace, Quick Command, addon, Cloud Sync, and Host Tools workflows. - Added ACP presets for Gemini CLI and OpenCode, and allowed the built-in Codex and Claude Code adapters to consume session-scoped HTTP MCP servers without placing authorization values in process arguments. - Added a searchable native plugin marketplace with compatibility, platform, checksum, installation, and update checks, and moved the complete Host Tools Dashboard example into the official plugin catalog. - Added an embedded SFTP sidebar browser with a remembered sidebar, tab, or ask-each-time presentation preference while keeping transfers and shared SSH connections owned independently from the visible surface. - Added SSH jump and proxy-chain support to saved RDP and VNC connections, direct CLI opening of saved SSH connections, and complete Telnet profile coverage in `.oxide` import, export, and Cloud Sync. ### 🛠️ Fixes - Restored the main window's normal bounds, maximized state, and full-screen state across launches, retained valid secondary-display placement, and recentered windows that would otherwise reopen off screen. - Initialized the OneDrive application folder before creating nested Cloud Sync objects, reused existing parents, and recovered cleanly when another client created the same folder concurrently. - Preserved every saved connection profile type during structured synchronization and kept background MCP mutations, cancellations, revocations, and dependent refreshes aligned with their committed application state. - Removed the unintended divider above installed plugins and retired the obsolete downloadable Wasm runtime installer from builds that do not include Wasm plugin support. ### 🔒 Security - Kept external MCP credentials digest-only and device-local, required explicit tool-group grants, retained in-app approval for elevated access requests, and cancelled active work and released capabilities immediately when access is revoked. ## 2.0.20 OxideTerm 2.0.20 adds native Mosh and local-terminal workflows, refreshes session and start-page management, improves remote-desktop and Cloud Sync reliability, and expands terminal feedback and SSH controls. ### ✨ Highlights - Added native Mosh sessions with SSH bootstrap, adaptive prediction, saved-profile editing, Session Manager and sidebar integration, `.xoide` import and export, and Cloud Sync support. - Redesigned the start page around recent connections, local terminals, imports, Session Manager, and Cloud Sync, with responsive layouts for narrow workspaces and a clearer view of standalone active connections. - Expanded Session Manager selection and batch group operations to saved serial, Telnet, Mosh, and remote-desktop profiles, and added complete in-place editing for serial and Telnet settings without disturbing active sessions. - Added millisecond terminal timestamps, richer matched-text or logical-line highlight controls, and an optional accent for background tabs with unread terminal output. - Added direct local-terminal launch from the connection flow, refined the terminal Git workflow with inline commit messages and clearer action grouping, and updated DeepSeek v4 reasoning support. - Redesigned the connection runtime overview around pool usage, consumers, health attention, and refresh status, and allowed approved OxideSens tools to update non-secret Cloud Sync configuration. ### 🛠️ Fixes - Improved RDP automatic reconnect and frame uploads, preserved sparse update regions through presentation, and reduced RDP and VNC work for incremental framebuffer changes. - Repaired HTTP JSON Cloud Sync revision baselines, preserved configuration drafts across provider changes, reused snapshot encryption keys within one operation, and batched macOS credential authorization during imports. - Made SSH connection timeouts configurable across saved connections, SSH config import, `.xoide` transfer, Cloud Sync, and CLI specifications while preserving imported timeout values. - Preserved serial and Telnet profile identity and automatic-open metadata when editing, and ensured Telnet changes mark Cloud Sync state dirty. ## 2.0.19 OxideTerm 2.0.19 improves native window and terminal behavior, repairs Windows PowerShell and OneDrive compatibility, and simplifies supported update channels. ### ✨ Highlights - Added native full-screen shortcuts with F11 on Windows and Linux and Control-Command-F on macOS, exposed the action in shortcut settings, and made macOS title-bar double-clicks follow the system preference. ### 🛠️ Fixes - Prevented Windows PowerShell 5.1 from displaying OSC 7 directory-reporting bytes as visible `e]7;...` text in local and remote Shell integration. - Made detached tab windows movable through native Windows caption handling, and made closing a detached window close its tab and local terminal instead of leaving the terminal active in the background; shared SSH node connections remain independently owned. - Kept typed keys and pasted text flowing to selected broadcast terminals without re-entering the GPUI workspace entity during synchronous input delivery. - Repaired OneDrive app-folder hierarchy creation by sending Microsoft Graph conflict behavior through the supported request URL annotation. ### 🧰 Release Maintenance - Retired the GPUI Preview channel from runtime settings, updater selection, help content, and plugin compatibility while preserving Stable and Beta updates and safely migrating older saved channel settings. ## 2.0.18 OxideTerm 2.0.18 makes remote Shell integration safer across terminal clients, restores terminal and SSH interaction workflows, and repairs Windows Cloud Sync and OneDrive behavior. ### ✨ Highlights - Migrated remote SSH directory reporting to standard OSC 7 while retaining legacy protocol parsing and in-place upgrades for existing integration packages; private editor enhancements now activate only for marked OxideTerm channels and safely remain unavailable when the server rejects the optional marker. - Added complete editing for saved SSH proxy chains, preserving unchanged hop credentials, copying credentials into independent owners when needed, and resolving saved proxy authentication when connecting. ### 🛠️ Fixes - Restored terminal input broadcasting for typed text, protocol keys, and paste operations without rebroadcast loops or widening AI and credential input scope. - Prevented Tab Rename input from reaching the terminal behind its dialog, restored pane focus after the dialog closes, and stopped UTF-8 prompt glyphs such as `❯` from being mistaken for terminal control bytes. - Preserved terminal-driven SFTP directory navigation when shared-session readiness or an older listing completes after a newer path request. - Recovered valid Windows credentials when malformed chunk metadata exists, allowed damaged metadata to be replaced or deleted, and retained safe platform error context for Cloud Sync diagnosis. - Repaired OneDrive app-folder uploads with supported create-conflict semantics, more precise permission and conflict classification, and actionable operation and request identifiers. ### 🔒 Security - Suppressed private editor OSC messages in tmux, GNU screen, and Zellij shared panes, removed private OSC clipboard payloads from terminal recordings across fragmented and oversized messages, and zeroized captured payload buffers after use. ## 2.0.17 OxideTerm 2.0.17 strengthens Windows SSH, SFTP, and RDP workflows, adds terminal tab naming and optional SSH close-confirmation suppression, and improves AI provider compatibility and settings polish. ### ✨ Highlights - Added terminal tab renaming from attached or detached windows while preserving the existing pane and session. - Added direct custom model ID entry for AI providers and consolidated system monitoring into the Host Tools sidebar instead of a duplicate full-page health view. - Added an opt-out checkbox to SSH close and disconnect confirmations, persisting the preference only after the user confirms the action. ### 🛠️ Fixes - Preserved credentials entered during SSH connection tests when saving a connection, allowed unavailable X11 forwarding to fall back to a normal shell, and applied saved X11 policy changes to subsequent shells without restarting the application. - Made RDP display resizing recover through a controlled reconnect with stale-frame isolation instead of leaving the remote view stalled or incorrectly sized. - Prevented SFTP downloads from silently overwriting local files, strengthened collision and resume validation, and restored text-editor keyboard input on Windows. - Stored oversized Windows Credential Manager values, including long OneDrive tokens, in bounded chunks and restored them transparently. - Kept AI model chips visible in narrow provider cards, showed successful SSH connection tests with the success color, and stopped broad conversational wording from forcing unnecessary AI tool calls. ### 🧰 Release Maintenance - Added an artifact-repair workflow that can republish successfully built native packages without rebuilding unaffected platforms. - Updated issue intake to close reports from superseded major versions with a bilingual upgrade notice while retaining reminders for older stable patch releases. ## 2.0.16 OxideTerm 2.0.16 adds searchable settings, contextual nested session groups, and secure SSH X11 forwarding while improving terminal startup, remote previews, remote-desktop compatibility, and modem transfers. ### ✨ Highlights - Added localized settings search with ranked results and direct navigation to matching sections and controls. - Expanded Session Manager group management with contextual creation, child-group creation without typing full paths, rename and delete actions, and made the tree layout the default and first view option. - Added persistent trusted and untrusted X11 forwarding for SSH connections, including OpenSSH configuration import and synchronization, local display and xauth preparation, spoofed-cookie handling, forwarding timeouts, and connection-owned channel routing. - Allowed user-configured MCP server commands without a built-in executable allowlist while retaining structural validation and explicit settings ownership. ### 🛠️ Fixes - Restored output-independent terminal polling so first and subsequent SSH terminal panes no longer wait for remote output or the deferred PTY timeout before applying their real viewport size. - Kept terminal processing bounded under heavy output with incremental snapshots, asynchronous search and image preparation, render caches, and byte-aware backpressure while preserving responsive startup scheduling. - Reused the full text editor for SFTP text and Markdown previews, restoring consistent keyboard, selection, scrolling, and rendering behavior. - Accepted RDP progressive graphics updates that legitimately omit an optional context and launched local Zsh sessions as non-login shells to avoid duplicate login initialization. - Strengthened X/Y/ZMODEM transfers with transactional downloads, collision-safe file persistence, stricter frame validation, peer cancellation, resume handling, and safer filename processing. ## 2.0.15 OxideTerm 2.0.15 substantially expands OxideSens with application-aware tools, background tasks, Agent Skills, and modern MCP interoperability while improving AI context accuracy, terminal efficiency, and remote-session reliability. ### ✨ Highlights - Expanded OxideSens tools across interactive terminal control, prompt and command completion waits, RDP, VNC, serial and Telnet sessions, Host Tools, forwarding, plugins, Cloud Sync, credentials, and scoped memory, with the same capabilities available to ACP backends through the application bridge. - Added cancellable one-shot, interval, and condition-based background tasks owned by each conversation, including visible task state and bounded execution rules. - Added bounded Agent Skills discovery, explicit skill and resource loading, chat completion, settings visibility, and a portable `skills` directory that is preserved across application updates. - Added dual-era MCP negotiation that discovers modern servers first and falls back to legacy initialization, with protocol-specific tool and resource handling for compatibility across server generations. ### 🛠️ Fixes - Corrected AI context accounting across system instructions, tool definitions, skills, ACP handoff, compaction, and continuation turns, and changed conversation history badges to report logical user turns instead of raw stored message rows. - Improved the AI input surface with correctly layered skill and mention completion, clearer context-capacity feedback, responsive status controls, stable IME composition, and multiline placeholders that no longer interfere with editing. - Added terminal control and navigation keys, TUI-aware output waits, and tracked command completion and exit status so AI workflows can operate interactive programs without relying on blind text submission. - Reduced terminal memory and high-output pressure by loading the optional CJK font only when required, coalescing redundant wakeups, and bounding layout caching. - Restored authentication for additional SSH terminal sessions, SFTP editor keyboard ownership, and Cloud Sync form focus, and updated the remote-desktop codec dependency for broader progressive-codec compatibility. ### 🔒 Security - Added a read-only AI safety mode and category-level tool policy controls, keeping observation separate from mutating, destructive, credential, and interactive operations while preserving explicit approval boundaries. ## 2.0.14 OxideTerm 2.0.14 unifies ACP and ordinary AI conversations, makes long chats and privilege prompts more reliable, and improves portable credentials, SSH Agent routing, terminal input, and remote compatibility. ### ✨ Highlights - Integrated ACP agents into the existing OxideSens chat surface, allowing ordinary models and ACP backends to alternate within one conversation while preserving message ownership, incremental handoff, cancellation, and session lifecycle. - Added an authoritative, capability-scoped AI runtime context so approved terminal, SFTP, IDE, connection, and workspace state is projected consistently without exposing internal runtime handles or unredacted secret-bearing data. - Added configurable custom SSH Agent endpoints to new and edited SSH connections, including imported `IdentityAgent` values, while preserving automatic system Agent discovery when no override is selected. ### 🛠️ Fixes - Rebuilt sudo and su password-prompt detection at the decoded local and SSH session boundary, so the first prompt is available immediately even for shell-history commands, split output, localized prompts, and retry flows without leaking full terminal output into the UI event path. - Virtualized long AI conversation rendering, preserved per-message backend attribution, and limited tool-result progress indicators to the tool call that is actually being summarized. - Migrated portable Vault credentials to stable account identifiers, allowing managed SSH keys, connection passwords, private-key passphrases, and privilege credentials to remain accessible after moving the portable directory to another machine or operating-system account. - Restored clipboard editing in managed SSH key dialogs and added an optional right-click terminal paste setting alongside the existing middle-click behavior. - Restored the compact command input layout and cursor behavior, cleared submitted commands correctly, and kept QuickBar commands on a single horizontal row. - Updated the RDP ClearCodec dependency to decode valid short vertical-band regions that previously failed during compatible remote-desktop sessions. ### 🔒 Security - Kept privilege-prompt classification independent from credential retrieval: terminal sessions emit only bounded semantic prompt events, while scoped secret lookup, confirmation, zeroization, and direct PTY writes remain owned by the application boundary. ## 2.0.13 OxideTerm 2.0.13 introduces an advanced terminal command sender, completes portable-mode updates and storage, and substantially strengthens native workspace ownership while resolving important Windows, remote-desktop, font, and AI compatibility issues. ### ✨ Highlights - Added a unified terminal command sender with compact and expanded layouts, multiline text and hexadecimal input, line or character pacing, configurable intervals and repeat counts, multiple sender documents, progress and cancellation, and current, all, or explicitly selected terminal targets. - Added per-connection terminal behavior overrides for text encoding and Backspace and Delete sequences, with persistence, import, cloud synchronization, and editing support while retaining application defaults when no override is selected. - Enabled automatic updates for portable Windows builds and completed portable initialization for application data, secrets, plugins, logs, update staging, and runtime paths without writing those resources into installed-mode locations. - Reworked native workspace ownership across terminals, tabs, settings, Host Tools, plugins, forwarding, AI, remote desktop, connection monitoring, and updates so background work is actively delivered and cancelled by its owning GPUI entity instead of being polled from the root renderer. ### 🛠️ Fixes - Fixed Windows Server 2022 RDP sessions that failed while decoding valid single-color ClearCodec RLEX regions, and preserved the original protocol error instead of replacing it with a later closed-pipe message. - Fixed Windows local file navigation when switching drives and kept keyboard path-completion selection visible as it moves beyond the current popup viewport. - Corrected bundled JetBrains Mono family resolution and glyph metrics across native text backends, preventing abnormal terminal spacing when the built-in font is selected. - Preserved Gemini signed tool-call parts across streaming and continuation turns, preventing valid tool workflows from losing provider-required metadata. - Added AI conversation renaming, Enter-to-confirm editing, dated conversation and message timestamps, and multiline editing for memory and system prompts. - Restored toggle behavior for active sidebar sections, preserved the previous sidebar state when opening Settings, centered compact command input, and moved the terminal performance overlay to the upper-right corner. - Applied the OxideTerm application icon to the Windows installer and uninstaller interfaces as well as installed-app registration. ### 🧰 Release Maintenance - Made terminal playback, SSH keepalive, and reconnect timers explicitly owned and cancelled by their GPUI entities, eliminating timing-dependent cross-test scheduler failures seen in parallel CI. - Added the missing localized generic error status used by remote Shell integration and expanded packaging regression coverage for Windows installer icons and portable updates. ## 2.0.12 OxideTerm 2.0.12 substantially expands native remote desktop and SSH Agent workflows, adds richer asset and first-run appearance controls, and fixes several terminal, connection, and cloud-sync interactions. ### ✨ Highlights - Expanded native RDP and VNC support with persisted session options, negotiated capability reporting, stronger VNC security policies, improved display and input handling, audio redirection, and richer clipboard interoperability. - Added saved RDP and VNC assets to the session manager, including editing, selection, custom icons with independent foreground and background colors, and cloud synchronization alongside existing connection resources. - Completed SSH Agent authentication and forwarding across supported endpoint types, including OpenSSH certificate identities, `ForwardAgent` and `IdentityAgent` imports, macOS Agent discovery, Windows named-pipe discovery, connection-pool isolation, and visible forwarding rejection errors. - Expanded first-run appearance setup with bundled and custom terminal fonts, light and dark themes, background guidance, animation controls, and a continuous corner-radius slider. - Added built-in light palettes and made password and private-key passphrase fields revealable while users enter or edit their own credentials. ### 🛠️ Fixes - Fixed abnormal character spacing when the bundled JetBrains Mono font is selected on macOS by aligning embedded font metadata with the runtime family name. - Preserved SSH Agent authentication and asset appearance settings when editing saved connections and other managed resources. - Kept file-manager path completion navigation intact and added a terminal setting for recognizing local file paths as clickable links. - Made keybindings explicitly removable without forcing a replacement shortcut. - Corrected the cloud-sync automatic-upload toggle so the form reflects and saves the selected behavior consistently. ### 🧰 Release Maintenance - Hardened GPUI draw lifetimes and platform dispatch behavior, expanded platform-focused checks, and documented the maintained GPUI-CE patch set. - Added recoverable issue-maintenance automation and refined contribution and issue templates around the repository's current support policy. ## 2.0.11 OxideTerm 2.0.11 adds resilient SCP fallback and editor-aware Free Type Mode, improves IDE and terminal reliability, and avoids eager Metal memory allocation on macOS. ### ✨ Highlights - Added legacy SCP as a compatibility transfer protocol for POSIX hosts, with an Auto mode that continues to prefer SFTP, explicit protocol settings, file and directory transfers, progress and cancellation, restart-aware retry behavior, and capability-gated plugin APIs. - Expanded Free Type Mode with configurable Copy, Cut, and Paste actions, matched-bracket selection, true movement or copying of command selections, and insertion from command history while keeping the remote line editor authoritative. - Validated ordinary, Emacs, and Vi command editing against real PTY-backed Bash, Zsh, and Fish sessions, and added opt-in Vim, Neovim, and Emacs adapters that expose bounded editor state without weakening alternate-screen or mouse-tracking protections. ### 🛠️ Fixes - Prevented Sixel, Kitty graphics, iTerm image, and other terminal control-string payloads from being mistaken for ZMODEM, XMODEM, or YMODEM transfers, while preserving detection immediately after the control string ends. - Completed the IDE folder path field with focus, IME composition, selection, clipboard actions, grapheme-safe deletion, and pointer positioning; aligned editor cursors and selections with shaped CJK and emoji text and made conflict overwrite reliably bypass stale version preconditions. - Preserved Ctrl+B as the tmux prefix on Windows and Linux by moving the default broadcast shortcut to Ctrl+Shift+B. - Made compact Host Tools monitoring responsive at narrow widths, kept network rates structured and readable, and reduced horizontal padding to 12 pixels at every sidebar width. - Added operating-system name and version, architecture, boot time, and uptime to Host Tools system information. - Fixed AI conversation titles collapsing to an ellipsis, prevented completed tool messages from retaining an active loading indicator, and kept streaming conversations pinned to the newest content unless the user scrolls upward. - Allocated Metal path, scene, blur, and filter-group textures only when a frame needs them, avoiding full-window intermediate texture reservation for ordinary idle scenes and invalidating old resources without eager recreation after resize. ### 🧰 Release Maintenance - Documented the Metal intermediate-texture lifecycle in the GPUI-CE vendor patch ledger and added regression coverage for ordinary scenes, independent path and filter allocation, and resize invalidation. - Aligned every localized README with the main product overview, native-runtime comparison, CLI examples, technology stack, and host-key security guidance. - Normalized the leading release-summary paragraph during note composition so source wrapping cannot create artificial line breaks in the GitHub Release editor. - Made macOS DMG packaging track and detach the root disk-image device so APFS volume teardown cannot race the final compression step. ## 2.0.10 OxideTerm 2.0.10 opens a substantially broader native plugin platform, expands connection migration, and improves terminal, SFTP, and IDE workflows across the app. ### ✨ Highlights - Expanded the native plugin API with useful redacted data by default plus capability-gated access to connection lifecycle, terminals, Host Tools, notifications, quick commands, complete theme tokens, IDE and AI operations, cloud sync, transfers, and other product controls. - Added versioned, host-rendered plugin UI components together with plugin tabs, sidebar panels, activity-bar actions, bundled icons, and a complete Host Tools Dashboard example that demonstrates approved custom monitors. - Added connection import for SecureCRT XML exports, Electerm JSON bookmarks, and FinalShell data folders, with a reviewable preview that excludes passwords and other secret material. - Promoted Free Type Mode for ordinary shell command lines, including mouse cursor placement, selection replacement, drag editing, a configurable shortcut, and explicit Backspace and Delete sequence settings. - Added a cross-platform window-opacity slider with persisted settings. - Added authenticated application-owned Host Tools for ACP agents so approved tools can target explicit OxideTerm terminal sessions without exposing internal runtime handles. ### 🛠️ Fixes - Added local and remote path completion to SFTP and local file-manager address bars, kept long breadcrumbs horizontally reachable, and prevented completion popups from leaking clicks or wheel input to the file list behind them. - Made the SFTP local/remote split and transfer-queue height draggable, preserved independent pane sizing, documented the left/right transfer shortcuts in the queue, and refreshed local files without disturbing the remote session. - Reworked IDE project search around native text input with focus, IME, selection, clipboard, and Unicode-safe deletion; reopening an existing IDE tab no longer asks for a folder again. - Fixed IDE folder-picker cancellation, added missing toolbar hints and file-tree scrolling, and kept overflowing editor tabs horizontally scrollable with a visible draggable scrollbar. - Corrected editor cursor, selection, and wrapping calculations for CJK text, emoji, and combining characters; added a visible document scrollbar and consistent monospace fallbacks. - Aligned syntax-block guide lines with their closing braces instead of shifting them one indentation level into the block. - Preserved legacy SSH compatibility fields while editing saved connections and improved session-manager selection, tab closing, and stale-action handling. - Kept the right companion sidebar resizable against the actual maximized viewport after live Host Tool updates. - Persisted welcome-flow legal acceptance, blocked click-through to the workspace behind the welcome layer, and added a direct entry for importing connections from other applications. ### 🧰 Release Maintenance - Added policy coverage so manually reopened maintainer issues remain open instead of being closed again by the quality workflow. - Added release-version consistency checks and expanded focused coverage for plugin permissions, connection imports, SFTP navigation, editor input, and Host Tools. ## 2.0.9 OxideTerm 2.0.9 adds multi-vendor GPU and NPU monitoring, expands native Markdown compatibility, and improves reliability across sidebars, remote editing, and terminals. ### ✨ Highlights - Added a GPU / NPU Host Tool with available per-device utilization, memory, temperature, power, health, and process visibility for NVIDIA, AMD ROCm, Hygon DCU, Huawei Ascend, Intel XPU, Moore Threads MUSA, and Cambricon accelerators. - Added safe native rendering for common inline and block HTML in Markdown, including headings, tables, lists, links, details, alignment, highlighting, and subscript or superscript content without executing active HTML. ### 🛠️ Fixes - Kept the right companion sidebar freely resizable after live Host Tool refreshes and removed the visible seam between the main workspace and sidebar. - Stopped high-frequency accelerator polling after a host proves that no supported device is available, while retaining manual refresh for re-detection. - Rebuilt IDE rename input around the shared text-input contract so the existing name, base-name selection, IME input, clipboard actions, validation, and localized errors behave consistently. - Preserved CRLF line endings when opening, editing, and saving remote text files through the SFTP editor. - Returned scrolled terminals to live output when the user types, without changing the viewport for terminal-owned protocol traffic. - Restored the OxideTerm icon in Windows installed-app and uninstall surfaces. ### 🧰 Release Maintenance - Split accelerator sampling into provider-owned adapters with focused parsing coverage for each supported vendor family. - Added a standalone CC BY 4.0 license alongside the bundled background resources. ## 2.0.8 OxideTerm 2.0.8 unifies application proxy routing, strengthens SSH forwarding and SFTP transfer ownership, and makes network configuration easier to understand. ### ✨ Highlights - Reorganized Network & Proxy settings around one reusable upstream proxy and explicit routing choices for SSH connections, application requests, and update checks. - Added system, direct, and shared-proxy routing for application HTTP traffic, covering OxideSens, cloud sync, plugin services, and runtime downloads. ### 🛠️ Fixes - Preserved explicitly requested remote-forwarding ports when SSH servers return an empty allocation field, while continuing to use server-assigned ports for dynamic allocation. - Kept local, dynamic, and remote forwarding work owned by their rules so stopping a forward also cancels its listeners, handshakes, bridges, and server registration cleanly. - Corrected remote-forward health checks to validate the local target and restored uploads to virtual SFTP gateways that reject temporary sibling files. - Preserved active SFTP transfer ownership across session replacement and reconnects, including paused, cancelled, and resumable transfer state. - Corrected the disabled OxideSens prompt so it points to Settings → OxideSens instead of the former AI settings label. ### 🧰 Release Maintenance - Moved proxy policy, settings conversion, credential hydration, and HTTP client construction into a dedicated network-proxy crate with focused security and compatibility tests. - Moved local directory, project probing, and plugin-settings persistence rules out of the GPUI application layer into their owning domain crates. - Added end-to-end SSH forwarding coverage for explicit remote ports and shutdown behavior. ## 2.0.7 OxideTerm 2.0.7 expands SSH configuration interoperability and startup controls, fixes cross-platform terminal rendering defects, and improves workspace reliability. ### ✨ Highlights - Added automatic SSH Config synchronization that imports new hosts and updates previously imported connections without overwriting same-name manual connections or user-managed metadata. - Expanded imported SSH routes with recursive `ProxyJump` resolution and opt-in direct `ProxyCommand` execution; shell operators remain rejected and command values stay out of persistence and diagnostics. - Added launch-at-login controls for Windows and Linux, with a direct link to the system Login Items settings for ad-hoc signed macOS builds. ### 🛠️ Fixes - Prevented Vim terminal queries from being misclassified as Sixel images, eliminating the repeated black artifact blocks they could leave across supported platforms. - Preserved a full-screen terminal application's hidden-cursor state instead of replacing it with the configured visible cursor shape. - Fixed Windows DirectWrite text corruption caused by mutable shaping buffers being reused after their callback lifetime ended. - Kept all four welcome-screen shortcut hints on one row in standard Windows layouts while preserving wrapping in narrow windows. - Restored Host Tools when OxideSens AI is disabled and corrected saved-connection search focus so hidden inputs no longer intercept terminal keys. - Fixed keyboard and IME input routing in portable connection-transfer dialogs. - Preserved ACP agent context across tool-call continuations and restored the configured default-key fallback when agent authentication is unavailable. - Added the complete ANSI palette to asciicast v2 recordings for compatibility with conforming players. - Reported stale saved-connection actions explicitly instead of silently operating on missing entries. ### 🧰 Release Maintenance - Made issue-quality checks recoverable and covered their policy decisions with focused tests. - Published repository-owned release, SSH session-ownership, and secret-handling skills for contributors and coding agents. - Simplified stable release notes so the GitHub Release title is not repeated in the body and change details appear before download links. ## 2.0.6 OxideTerm 2.0.6 improves terminal input and command-mark reliability, adds customizable settings navigation, and expands Linux window-manager integration. ### Highlights - Added drag-and-drop settings navigation so pages and groups can be reordered, regrouped, saved, or restored to the default layout. - Added a Linux-only option to hide the application titlebar for tiling compositors while leaving macOS and Windows behavior unchanged. ### Fixes - Prevented the terminal command bar from crashing when IME composition creates overflow inside its compact input surface. - Restored the blinking caret before the placeholder when an empty terminal command bar is focused. - Reset visual command marks when saved history is cleared or terminal resizing reflows the grid, while preserving completed command facts. - Improved Fish Shell command capture and command-line placement when shell integration events arrive without the usual prompt-start event. ### Release Maintenance - Refreshed the terminal, SFTP, port-forwarding, and Mini IDE documentation screenshots. ## 2.0.5 OxideTerm 2.0.5 restores several native interface details and improves terminal selection, glyph rendering, appearance controls, and packaging reliability. ### Fixes - Fixed custom-drawn Powerline separators and related terminal glyph geometry across supported shapes and cell sizes. - Fixed copying terminal selections that span multiple wrapped or visible pages. - Restored the proven grayscale text path on Windows to prevent overlapping or duplicated glyphs. - Restored onboarding step content that could collapse to zero height in the GPUI layout. - Refined select-menu hover and selected surfaces, and added localized tooltips to icon-only terminal actions. - Expanded the managed appearance gallery to three protected bundled backgrounds and extended background opacity control to the full supported range. - Corrected the introduction page to describe the current WASM plugin system instead of the legacy ESM runtime. ### Release Maintenance - Made macOS DMG packaging recover from transient busy-volume detach failures. - Shipped provenance and CC BY 4.0 licensing for bundled background artwork, and limited remote-agent CI to relevant agent changes. ## 2.0.4 OxideTerm 2.0.4 refreshes the native GPUI runtime, improves Linux and virtualized graphics compatibility, and polishes remote desktop, transfers, scrolling, and desktop integration. ### Highlights - Migrated the native desktop layer to a pinned, vendored GPUI-CE baseline while preserving OxideTerm's platform integration across macOS, Windows, and Linux. - Improved Linux and virtual-machine graphics startup with deterministic Vulkan/OpenGL adapter selection, virtual-GPU handling, recoverable WGPU device resets, and actionable failure diagnostics. - Updated remote desktop rendering to reuse a stable dynamic texture, apply incremental framebuffer updates, restore content after renderer resets, and hide the local pointer when displaying a remote cursor. ### Fixes - Fell back from Wayland to X11 when the selected compositor is missing required capabilities, including affected WSLg environments, and reported both backend failures when neither can start. - Prevented one trackpad or mouse-wheel gesture from scrolling nested inner and outer surfaces at the same time. - Improved title-bar window controls and wrapped long graphics-startup diagnostics so they remain readable. - Enlarged the small Windows taskbar and Linux desktop-panel icon artwork without changing macOS application icons or larger launcher assets. - Recovered interrupted active SFTP transfers as paused work after restart and removed stale completed or cancelled progress records. - Limited native application logs to one bounded 10 MiB file while retaining the most recent complete entries. - Refined cloud-sync metadata layout, background-scope selection motion, and localized remote-agent size information. ### Release Maintenance - Added a pinned GPUI-CE provenance ledger, vendored-source verification, refreshed third-party notices, and packaged license validation. ## 2.0.3 OxideTerm 2.0.3 improves terminal input compatibility, remote directory awareness, Linux desktop integration, and interface scaling across the native workspace. ### Highlights - Added user-controlled remote Shell integration for exact SSH working-directory awareness, with inspectable hook files, ask/always/disabled deployment policies, and explicit install, repair, and removal actions. - Added an application-wide UI font-size setting and a temporary on-screen indicator when terminal font-size shortcuts are used. - Added a terminal link activation preference that requires Ctrl + click by default on Linux and Windows, or Command + click on macOS, while retaining direct-click activation as an option. ### Fixes - Restored Ctrl + Insert and Shift + Insert clipboard shortcuts in terminal panes. - Fixed Linux window identification so the running application matches the stable desktop entry in Ubuntu Dock and other desktop shells. - Fixed terminal mouse hit testing during fractional smooth scrolling so selections and command blocks align with the painted rows. - Kept terminal-grid completion owned by the active Shell or TUI application by limiting OxideTerm ghost text to privilege prompts. - Prevented edited saved connections and jump-host routes from reusing stale SSH nodes that point to an earlier endpoint. ## 2.0.2 OxideTerm 2.0.2 improves application privacy controls, terminal session ownership, and visual consistency across the native workspace. ### Highlights - Added application locking with macOS Touch ID and Windows Hello unlock support, plus a setting to hide the lock action from the activity bar. - Improved terminal, pane, tab, and SSH node ownership so independent consumers keep shared sessions alive and terminal endpoints remain traceable. - Added animated authentication selection while preserving the existing connection form appearance and reduced-motion behavior. ### Fixes - Fixed modal backdrops so confirmations dim the complete application window instead of only the current content surface. - Refined plugin manager typography, selected connection styling, sidebar selection motion, and other native workspace details. - Improved terminal graphics cache ownership, rendering state, session cleanup, and transfer integration. - Fixed local terminal background lifecycle handling and several tab, split-pane, SFTP, forwarding, cloud-sync, and plugin host edge cases. ## 2.0.1 OxideTerm 2.0.1 is a maintenance release focused on Linux startup reliability, cross-version updater compatibility, and settings navigation consistency. ### Fixes - Fixed a Linux startup panic caused by a Rust/WGSL backdrop-blur structure name mismatch in the Blade renderer. - Kept stable updater manifests compatible with 1.x clients, including the gzip-compressed macOS application archives and installer-specific platform keys expected by the legacy Tauri updater. - Fixed settings navigation selection and hover surfaces stretching vertically when the window had spare height. ### Release Maintenance - Stable releases now become GitHub's Latest release automatically, while prereleases remain excluded from Latest promotion. - Added release-time validation for the legacy updater package contract so future 2.x releases remain reachable from 1.x installations. - Removed obsolete preview-status messaging from the localized READMEs and refreshed third-party notices. ## 2.0.0 OxideTerm 2.0 is the largest release in the project's history. The desktop application has been rebuilt around Rust and GPUI, replacing the bundled WebView application shell with a GPU-rendered workspace while preserving OxideTerm's local-first approach to remote operations. This release brings terminals, saved connections, SFTP, remote editing, port forwarding, Host Tools, RDP/VNC, serial devices, cloud sync, plugins, the `oxideterm` CLI, and OxideSens AI into one shared workspace and runtime model. ### Highlights - A new GPUI desktop workspace for macOS, Windows, and Linux, with no Electron or bundled browser runtime. - Replaced the Tauri WebView and xterm.js terminal path with a direct Rust implementation built around `alacritty_terminal`, `portable-pty`, and `russh`, rendered by GPUI. - Reduced measured idle memory from roughly 300 MB in 1.x to just over 100 MB in the current 2.0 build. - One SSH node can now serve terminals, SFTP, remote editing, port forwarding, Host Tools, and downstream connections without tying their lifetime to one terminal tab. - Grace Period reconnect can preserve an existing SSH runtime across short network interruptions when the original connection recovers in time. - Host Tools add monitoring, processes, services, logs, ports, scheduled tasks, disks, packages, containers, and tmux workflows beside the active connection. - Built-in RDP and VNC sessions, plus a Windows WSL Graphics connection flow. - OxideSens now operates inside the native workspace with BYOK providers, MCP, local knowledge retrieval, risk-aware tools, and user-controlled action policy. - A new native plugin model supports manifest-only, Wasm, and external process runtimes with capability-scoped host APIs. - Oxide cloud sync is now a built-in workspace feature with multiple user-owned storage backends, conflict preview, history, and rollback. - The old `oxt` desktop RPC client is replaced by a standalone `oxideterm` CLI for configuration, automation, diagnostics, migration, and recovery. ### Desktop Workspace - Rebuilt the activity bar, saved-session sidebar, tab strip, auxiliary sidebar, dialogs, overlays, command palette, and settings surfaces in GPUI. - Added a Session Manager for searching, sorting, grouping, importing, exporting, and editing saved connections. - Separated saved connections, active SSH nodes, terminal panes, SFTP sessions, forwarding rules, IDE workspaces, and Host Tools so closing one view does not implicitly destroy unrelated runtime owners. - Added connection topology and runtime views for jump-host relationships, downstream nodes, active consumers, reconnect state, and connection capabilities. - Added split terminal panes with draggable dividers, pane focus, pane close behavior, and layout restoration. - Added horizontal tab overflow with wheel-to-horizontal mapping, a visible scrollbar, pointer dragging, and automatic reveal of the active tab. - Added matching overflow behavior to Host Tools and other compact tool strips. - Added resizable and persistent sidebars, including resize behavior that remains available after virtualized content loads. - Added page, dialog, tab-close, sidebar, toast, and popover motion with Normal, Fast, Reduced, and Off profiles. - Added Zen mode, workspace restore, notification center, connection-status surfaces, diagnostics, and command-palette navigation. - Added single-instance application handling and responsive system-tray behavior on Windows. - Restored reopening from the Dock after the last window closes on macOS. ### Terminal and Local Shell - Replaced the WebView/xterm.js terminal path with a Rust terminal model rendered directly by GPUI. - Added local and SSH terminals with shared selection, search, scrollback, hyperlink, context-menu, clipboard, and encoding behavior. - Added terminal search, command marks, shell integration, scrollback viewing, command playback metadata, and clickable links. - Added Kitty, Sixel, and iTerm-style terminal graphics infrastructure. - Added IME composition, Unicode bidirectional text handling, CJK font fallback, selectable terminal encodings, and improved wide-character layout. - Added configurable cursor shape and blink behavior, terminal fonts, separate CJK fonts, font preview, and an opt-in font-ligatures setting. - Added smooth scrolling, draggable scrollbars, double-click word selection, shift selection, and native terminal context menus. - Added a multiline command bar with command history, path suggestions, Quick Commands, completion specifications, and risk-aware execution. - Added terminal-aware current-directory controls and hooks for Git and project context. - Added optional `sudo` and `su` credential helpers with scoped prompt detection. - Added in-band trzsz transfers and modem transfer paths for X/Y/ZMODEM workflows. - Added configurable automatic pane close after the underlying terminal exits. - Added local shell discovery and configuration for common Unix shells, Command Prompt, Windows PowerShell, PowerShell Core, Git Bash, and Nushell. - Added shell integration for Bash, Zsh, Fish, Nushell, and PowerShell so local and remote working-directory metadata does not depend on prompt parsing. - Suppressed background console windows for local shell discovery and helper commands on Windows. ### SSH, Authentication, and Connection Management - Moved desktop SSH transport to the Rust `russh` stack with `ring` cryptography and no OpenSSL/libssh2 dependency in the SSH implementation. - Added password, private-key, OpenSSH certificate, managed-key, SSH Agent, and Keyboard-Interactive authentication flows. - Added support for keyboard-interactive prompts used by common one-time-password, hardware-token, and challenge-response systems. - Added managed SSH keys that can be imported or pasted, referenced by saved connections, and optionally moved through encrypted `.oxide` bundles. - Added SSH Agent forwarding. - Added multi-hop connection trees with independent host, port, username, and authentication settings at each hop. - Added reuse of saved connections as jump hosts and next-hop nodes. - Added HTTP CONNECT and SOCKS5 upstream proxies with global, per-connection, and force-direct policies. - Added strict host-key confirmation, saved host-key removal, and clearer host-key mismatch handling. - Added a per-connection legacy SSH compatibility option for servers that cannot negotiate the default algorithms. - Added more specific algorithm-negotiation and authentication diagnostics without including credential values. - Added optional post-connect commands. - Improved OpenSSH config parsing for `Match` blocks and multiple aliases in one `Host` declaration. - Added import flows for OpenSSH config and supported third-party connection managers, including import preview, unsupported-field warnings, duplicate handling, and source groups. - Added temporary SSH connections that do not need to be saved first. ### Grace Period Reconnect and Runtime Ownership - Added a node-level Grace Period reconnect pipeline. - When a supported SSH connection appears lost, OxideTerm probes the original connection for up to 30 seconds before replacing it. - If the original connection recovers during the grace period, existing terminal programs can continue on that runtime. - If replacement is required, OxideTerm updates the node runtime and lets supported consumers reacquire the new transport. - SFTP and remote editing retain their node identity while reacquiring SSH-backed capabilities. - Saved and active forwarding rules can be restored after a node reconnect, subject to local port availability, permissions, and remote bind acceptance. - Downstream nodes now observe jump-host link loss and enter the corresponding disconnected or reconnecting state. - Added clearer runtime and connection-monitor status for connecting, active, idle, link-down, and reconnecting states. - Removed duplicate reconnect messages from terminal output. ### Directory, Git, and Project Awareness - Added current-working-directory awareness for local and SSH terminals. - Added remote shell integration that reports directory, host, Git, and project metadata without scraping the visible prompt. - Preserved SSH login banners, MOTD output, and last-login text while staging shell integration outside the visible interactive input stream. - Added current-directory navigation, parent and child browsing, path insertion, and workspace search entry points. - Added local and remote Git repository detection, branch or detached-HEAD identity, upstream state, ahead/behind counts, staged changes, modifications, untracked files, and conflicts. - Added time-bounded remote Git status scans that return repository identity before slower working-tree details. - Added branches, worktrees, changes, staging, history, references, sync, and conflict-oriented Git views. - Added detection of merge, rebase, cherry-pick, and revert operations in progress. - Added project-root and project-type detection, project task discovery, task search, and task execution. - Isolated Git and project snapshots by host, terminal runtime, and working directory to prevent state from leaking between sessions. ### SFTP, Files, and Remote Editing - Rebuilt SFTP as a node-level capability rather than a terminal-session attachment. - Added remote navigation, path editing, refresh, selection, bookmarks, and independently opened SFTP views. - Added single-file and directory upload/download with background queues, parallelism controls, speed limits, progress, throughput, and ETA. - Added pause, resume, retry, and cancellation for supported transfer stages. - Added archive-based directory transfer for suitable workloads with fallback to ordinary recursive transfer. - Added remote archive extraction. - Added overwrite, skip, rename, and apply-to-all conflict strategies. - Improved directory progress accounting, remote modification-time handling, short-read recovery, symlink classification, and Windows/POSIX path normalization. - Made SFTP paths selectable and copyable. - Added local file management with navigation, drives, sorting, filtering, favorites, creation, copy, cut, paste, rename, delete, drag-and-drop, and context-menu actions. - Added previews for supported text, source code, Markdown, images, audio, video, hexadecimal data, and fonts. - Added font specimen and glyph coverage views for code fonts, CJK fonts, and Nerd Font symbols. - Added a lightweight local and remote editor with project trees, multiple tabs, syntax highlighting, line wrapping, dirty-buffer tracking, save conflicts, safe writes, and workspace state. - Added symbol indexing and completion support to remote-agent-backed project workflows. ### Port Forwarding and Network Tools - Added local (`-L`), remote (`-R`), and dynamic SOCKS5 (`-D`) forwarding in the native runtime. - Bound forwarding ownership to SSH nodes and exposed running, failed, stopped, paused, and restoring states. - Added saved forwarding rules, optional connection-time startup, pause/resume, reconnect-aware restore, and actionable failure details. - Added remote listening-port discovery and connection-topology entry points. - Improved IPv4, IPv6, host-and-port normalization, local port conflict reporting, permission errors, and remote bind diagnostics. - Added X11 forwarding infrastructure with DISPLAY allocation, Xauthority management, and remote `xauth` setup. - Added update and SSH proxy settings without exposing proxy credentials in ordinary diagnostics. ### Telnet and Serial - Added native Telnet sessions with option negotiation, binary mode, echo, terminal type, and window-size negotiation. - Added local serial terminals with device enumeration or manual device paths, configurable baud rate, data bits, stop bits, parity, and flow control. - Added saved, editable, importable, and exportable serial profiles with classified device, permission, busy-port, parameter, and disconnect errors. ### Host Tools and Runtime Views - Added node-scoped Host Tools that remain available independently of any one terminal pane. - Added CPU, memory, swap, disk, load, network, mount, interface, process, GPU-when-available, and RTT monitoring. - Added process search, filtering, sorting, TERM/KILL, stop/continue, and nice-value actions where the remote platform permits them. - Added service discovery and supported lifecycle operations for systemd, launchd, BSD services, and Windows services. - Added Docker container status, metadata, ports, start, stop, restart, and log actions. - Added host logs with presets, snapshots, and follow mode. - Added tmux session, window, and pane discovery with create, attach, rename, close, and send-command operations. - Added listening-port inspection with process association and public-exposure hints. - Added filesystem and mount views with capacity, usage, read-only state, and low-space indicators. - Added scheduled-task discovery and supported run, enable, disable, and log operations across Linux, macOS, and Windows. - Added remote package-manager discovery, package lists, status, and package detail views. - Isolated samplers and parsers by capability so one unsupported tool does not mark the SSH node itself as disconnected. - Added responsive and virtualized tables that prioritize entity names at narrow sidebar widths. - Host Tools degrade to partial or unavailable states when the remote operating system, command-line utilities, or privileges do not provide a capability. ### Remote Desktop and Graphics - Added built-in RDP and VNC workspace sessions with separate helper-process boundaries. - Added keyboard, mouse, clipboard, scaling, reconnect, and viewport-aware rendering paths. - Added dynamic remote resolution handling for supported RDP sessions. - Added VNC decoding for Raw, CopyRect, Hextile, and ZRLE server updates. - Added a Windows WSL Graphics connection flow for discovering and opening WSLg graphical sessions. - Added workspace graphics surfaces for terminal-owned images and supported remote graphical workflows. ### OxideSens AI - Moved OxideSens into the Rust workspace with access to user-selected terminal, file, connection, and workspace context. - Kept the BYOK model with OpenAI, Anthropic, Gemini, DeepSeek, Ollama, and custom OpenAI-compatible providers. - Added a unified workspace tool layer for target selection, terminal observation, command execution, file operations, transfers, navigation, and preference changes. - Added risk classes for read, write, execute, interactive, destructive, and credential-related operations. - Added command-policy detection for destructive filesystem operations, formatting, reboot, privilege escalation, container deletion, and Kubernetes resource deletion. - Read-only tools may execute directly; other actions follow the user's configured approval and safety policy. - Added streaming output, conversation persistence, message branching, follow-up suggestions, tool-result compaction, and context-window budgeting. - Added ACP agent integration with configurable external processes and presets for supported coding-agent CLIs. - Added provider-bound context redaction for common private keys, authorization headers, database URLs, tokens, and credential-like values as a defense-in-depth measure. ### MCP and Knowledge - Added native MCP transports for local stdio, Streamable HTTP, and Legacy SSE servers. - Added MCP tool discovery and invocation, resource listing and reading, authentication headers, custom headers, environment variables, retry, and runtime status. - Redacted MCP authentication values, headers, and environment secrets from ordinary debug output. - Added document collections, document editing, scopes, index rebuilds, and knowledge search. - Added BM25 and persistent HNSW vector retrieval with Reciprocal Rank Fusion and duplicate-reduction ranking. - Added BM25 fallback when no embedding provider is available. - Added character-bigram tokenization for Chinese, Japanese, and Korean retrieval. ### Plugins - Introduced the 2.0 plugin model with manifest-only, Wasm, and external process runtimes. - Bundled the Wasm executor in standard desktop packages. - Added manifest contributions for custom tabs, sidebars, settings, terminal hooks, connection hooks, AI tools, and scoped host API access. - Added host-rendered declarative plugin UI instead of loading plugin React, CSS, or WebView pages. - Added capability and namespace checks for terminal, SFTP, forwarding, IDE, settings, sync, application state, and plugin-secret APIs. - Added plugin discovery, install, enable, disable, update, settings, compatibility, health, and runtime status flows. - Added protocol, guest ABI, WASI profile, host channel, host version, platform target, and checksum compatibility checks for Wasm runtimes. - Added stable, validated keychain account identifiers for plugin secrets. - Legacy Tauri/Web plugins can be discovered for information or removal, but their JavaScript entry points do not execute in 2.0. ### Oxide Cloud Sync - Moved cloud sync from an optional 1.x plugin into the built-in 2.0 workspace. - Added WebDAV, HTTP JSON, Dropbox, OneDrive, Google Drive, GitHub Gist, S3, and Git backends. - Added manual upload, remote inspection, pull preview, conflict handling, automatic upload, history, and rollback backups. - Added independent sync scopes for connections, forwards, Quick Commands, serial profiles, application settings, and plugin settings. - Sensitive credentials and local-terminal environment variables remain excluded by default and require explicit opt-in. - Added partition revisions, baselines, and tombstones for incremental updates and deletion tracking. - Added pre-apply checkpoints and best-effort whole-operation rollback when connection, setting, forwarding, or plugin-setting writes fail. - Added local rollback retention and bounded sync history. - Fixed managed SSH keys blocking GitHub Gist upload preflight. - Tightened upload, pull, conflict, tombstone, delivery-state, and rollback transitions. ### Encrypted `.oxide` Bundles and Portable Workflows - Expanded and rebuilt `.oxide` import/export for connections, forwarding rules, application settings, Quick Commands, serial profiles, plugin settings, managed SSH keys, and optional portable secrets. - Added content preview and per-resource selection before import. - Added rename, skip, replace, and merge conflict policies, with rename as the conservative default. - Added managed-key fingerprint reuse and explicit choices for restoring managed keys and passphrases. - Kept saved server passwords, portable secrets, and managed-key passphrases out of ordinary exports unless the user explicitly includes them. - Added validation and storage checkpoints before applying imports, with rollback when later stages fail. - Continued ChaCha20-Poly1305 payload encryption and added the current Argon2id KDF profile while retaining support for older `.oxide` KDF files. - Added portable profile locking, status, keystore, and recovery workflows. ### Standalone `oxideterm` CLI - Replaced the 1.x `oxt` desktop JSON-RPC client with the standalone `oxideterm` command. - The new CLI links directly to Rust domain modules and does not require the desktop app to be running. - Added commands for settings, connections, temporary SSH, forwarding, Quick Commands, plugins, portable profiles, secrets, `.oxide`, cloud sync, paths, diagnostics, doctor checks, backups, batches, reports, completion, and error lookup. - Added structured JSON output and machine-readable error codes for scripts and CI. - Added dry-run plans and `--yes` guards to state-changing and high-impact operations where supported. - Added redacted diagnostic reports and support bundles. - Added shell completion for Bash, Zsh, Fish, PowerShell, and Elvish. ### Security and Secret Handling - Unified passwords, key passphrases, AI keys, cloud credentials, plugin secrets, and portable secrets behind the OS keychain or portable keystore boundaries. - Added encrypted local storage for saved connection metadata, with the local encryption key protected by the platform credential store. - Added `SecretString`, `Zeroizing`, and redacted `Debug` handling across major secret-owning Rust boundaries. - Kept credential values out of connection diagnostics, plugin status, cloud-sync summaries, CLI reports, and structured logs. - Added standard-input and environment-based CLI secret input so scripts do not need to place secrets in process arguments. - Continued strict SSH host-key verification with rejection of unexpected key changes. - Added risk-aware AI tools and command-policy checks while keeping approval behavior user-configurable. ### Appearance, Settings, and Internationalization - Rebuilt settings with native controls, categorized navigation, virtualized long pages, validation, and search-oriented organization. - Added custom theme editing, interface fonts, terminal fonts, separate CJK font selection, application icon selection, and terminal highlight rules. - Added background image libraries, opacity, blur, fit modes, per-surface selection, and content-only or full-window background scope. - Added platform visual-material settings where supported. - Added configurable shortcuts and native keybinding recording. - Added update proxy, SSH proxy, SFTP, reconnect, terminal, AI, plugin, cloud-sync, and privacy-oriented settings surfaces. - Added 11 shipped interface languages across the major 2.0 workflows. - Added reduced and disabled animation modes; disabling motion removes transition delays instead of scheduling zero-duration exits. ### Packaging, Installation, and Updates - Added six release targets: macOS arm64/x64, Windows arm64/x64, and Linux arm64/x64. - Added macOS DMG, app archive, and portable archive outputs. - Added Windows NSIS installers and portable ZIP outputs. - Added Linux AppImage, DEB, RPM, and portable archive outputs. - Added signed updater metadata and SHA-256 release checksums. - Added Windows installer options for Start Menu and optional desktop shortcuts. - Added a dedicated Windows update helper that stages the installer, waits for OxideTerm to exit, uses Restart Manager on a best-effort basis, keeps an `old` rollback directory, and completes replacement outside the running app. - Added no-window process creation for Windows shell discovery, Git helpers, PowerShell, updater helpers, and other background commands. - Added stable, beta, and GPUI Preview update-channel boundaries. - Stable 2.0 updates use the GitHub Latest manifest; the old Preview-facing stable manifest remains frozen to prevent unintended cross-channel replacement. ### Important Fixes Since the GPUI Previews - Restored Ubuntu MOTD, login banners, and last-login output during SSH shell integration startup. - Fixed initial remote directory metadata reporting `~` instead of the actual directory. - Fixed remote directory awareness becoming unavailable after the next prompt. - Fixed remote Git and project detection ordering and bounded slow status scans. - Fixed Host Tools showing counts while rows remained empty. - Fixed Host Tools becoming impossible to resize after monitoring or process data arrived. - Fixed tab and Host Tools scrollbars that were visible but could not be dragged. - Fixed Windows background shell and Git discovery repeatedly opening console windows. - Fixed Windows auto-update uninstall/reinstall sequencing with the dedicated update helper. - Fixed Windows system-tray interaction after minimizing the app. - Fixed saved connections failing to switch from key or Agent authentication to a newly entered password. - Fixed keychain-backed passwords being read before the user explicitly requested to reveal them. - Fixed SFTP path selection, Windows home-directory handling, remote extraction, transfer short reads, and several progress-state stalls. - Fixed terminal IME focus, text-selection drag, Windows editing shortcuts, duplicate paste handling, pane-close cleanup, and duplicate reconnect output. - Fixed remote desktop frame updates, sizing, clipboard, and reconnect edge cases. - Fixed plugin runtime packaging so standard builds include Wasm execution again. - Fixed cloud-sync managed-key preflight, conflict accounting, tombstone handling, and rollback state. - Fixed multiple modal, toolbar, dropdown, toast, sidebar, and narrow-window interaction regressions across the GPUI workspace. ### Breaking Changes - **CLI:** `oxt`, its JSON-RPC protocol, Unix socket, Windows named pipe, and old command syntax are not compatible with 2.0. Automation must move to the standalone `oxideterm` subcommands. - **CLI scope:** the new CLI focuses on configuration, automation, diagnostics, migration, and recovery; not every live desktop-session RPC operation from `oxt` has a direct replacement. - **Plugins:** Tauri/Web plugins that depend on `main.js`, React components, CSS injection, WebView APIs, or arbitrary Tauri commands do not execute in 2.0. - **Plugin migration:** plugins must move to the 2.0 manifest, declarative UI, Wasm, or process protocol and request explicit host capabilities. - **Cloud sync:** cloud sync is now built in; the old cloud-sync plugin is no longer the feature owner. - **Preview updates:** GPUI Preview builds do not update directly to Stable 2.0 through the Stable channel. ### Upgrading to 2.0 #### Before You Upgrade - Close active terminals, transfers, port forwards, Host Tools actions, and remote desktop sessions before installing the update. Active runtimes and in-progress operations do not survive the required application restart. - Keep a current backup or encrypted export of important connections and settings. - On first launch, OxideTerm creates a one-time snapshot of the existing data directory before loading and migrating mutable settings and connection data. - The migration snapshot is a recovery copy, not an automatic rollback mechanism. - OxideTerm continues to use the existing default data directory and honors a custom data directory selected through `bootstrap.json`. #### From OxideTerm 1.x Stable - Installed macOS releases can use the Stable update after 2.0 is promoted, using a compatibility archive understood by the 1.x updater. - Current-user Windows installations can use the Stable update; the 2.0 installer detects the existing per-user installation and upgrades it in place. - Linux AppImage installations can use the application update path, which replaces the AppImage after OxideTerm exits. - Linux DEB or RPM users should install the matching 2.0 package manually. OxideTerm 2.0 publishes both package formats alongside AppImage and portable archives. - Portable installations do not update themselves. Extract the 2.0 portable package separately and preserve the existing portable data directory before replacing files. - If a GPUI Preview is installed alongside 1.x, verify that the 1.x stable application is the one performing an automatic Stable upgrade. - Existing connection and settings data is migrated into the 2.0 storage model where supported, but review connections, authentication, cloud sync, plugins, and AI provider settings after first launch. - Legacy keychain entries may be migrated to protected 2.0 entries on first read; the operating system may display a one-time credential access prompt. - Existing keychain passwords remain unloaded in edit forms until the user explicitly reveals them. - Strict host-key verification remains active after upgrade. - Third-party connection imports may report fields that cannot be represented exactly; review the import preview before applying it. - Data written by 2.0 is not guaranteed to remain fully understandable to a subsequently launched 1.x application. #### From a GPUI Preview - GPUI Preview cannot update directly to Stable 2.0 through the Stable update channel. - Install the final 2.0 package manually from the stable GitHub Release, or use an installed 1.x stable build as the supported automatic-upgrade origin. - Older Preview builds use a frozen `updater-stable` manifest and will not receive 2.0 Stable in place. - Preview and Stable use separate application identities and can remain installed side by side while Stable is verified, but they share the same OxideTerm data directory. - After confirming that Stable opens the existing data correctly, the GPUI Preview application can be removed. ### Compatibility and Known Boundaries - Release packages are provided for macOS, Windows, and Linux on x64 and arm64. - The optional remote project agent is packaged only for Linux x86_64 and Linux aarch64. OxideTerm asks before deployment; other remote architectures require a separately built agent or SFTP-compatible fallback behavior. - Host Tools depend on the remote operating system, installed command-line tools, service manager, and privileges. Unsupported capabilities are shown as partial or unavailable. - Grace Period reconnect is best-effort and depends on the original SSH runtime recovering or supported consumers successfully acquiring a replacement transport; it is not a guarantee of lossless recovery for every network failure. - Unsaved editor buffers still require an explicit save, reload, or discard decision and should not be treated as remotely persisted state. - Port-forward restore can fail when local ports are occupied, privileges are insufficient, or the remote server rejects binding. - RDP and VNC support common interactive workflows but do not claim parity with every platform-specific enterprise client or extension. - VNC uses the server framebuffer and scales it into the local viewport; dynamic remote resolution behavior primarily applies to supported RDP sessions. - File preview supports selected text, code, Markdown, image, audio, video, hexadecimal, and font formats. PDF preview is not included in 2.0. - Configurable keyboard shortcuts are included; vi-mode is not a 2.0 feature. - Shell directory, Git, and project awareness is available through supported shell integration or explicit probing. Restricted shells, unusual startup files, or custom environments may reduce available metadata. - Wasm plugins run inside Wasmtime; external process plugins are separate executables and should not be described as OS-sandboxed. - Sensitive cloud-sync sections are disabled by default but can be explicitly included by the user in the encrypted sync payload. - `.oxide` payload content is encrypted, but non-secret file metadata used to identify and describe a bundle is not a secret-storage boundary. - OxideSens context redaction is defense in depth, not a formal guarantee that arbitrary user content can never contain an undiscovered secret pattern. - AI conversation persistence is application-wide in 2.0; it is not guaranteed to remain semantically bound to the lifetime of an individual tab or workspace surface.