 |
|
CoderKang
V2EX member #589871, joined on 2022-08-01 14:53:36 +08:00
|
CoderKang's recent replies
## NyaTerm v2.0.3
v2.0.3 是一次覆盖终端、连接、远程管理、云同步与 AI 工作流的综合更新。从上一正式版 v2.0.2 到本次发布准备期间,主分支累计合入约 200 个提交。以下内容按最终用户实际可感知的功能与问题归纳,合并了同一功能的修复和后续完善,不逐条罗列开发提交。
本次重点包括:**终端按命令输出类型着色与块选择、上下文命令补全、Telnet/Raw TCP 代理路由、SSH 逐连接兼容模式、隧道分组批量操作、WindTerm 账户关联导入、云同步可靠性修复、AI/MCP 任务处理改进**,以及独立的 **glibc 2.31 Linux 兼容发行包**。
### ✨ 新增功能
- **终端命令输出语义着色**:新增根据命令输出结构识别字段并分别着色的能力,覆盖 `ip addr`、`ls -l`、`ps`、`git`、`docker`、`systemctl`、`ss`、`df`、`free`、日志、SQL 等常见场景。相比只按关键词匹配,对权限、地址、进程字段及状态信息的区分更细致;相关颜色可跟随终端主题的 ANSI 调色板变化( PR #1098 )。
- **高亮规则专用开关**:终端高亮设置新增“按命令输出类型高亮”及“显示专用高亮规则”等控制。后者用于按需展示网络设备、权限、日志、SQL 等场景的专用规则,避免设置界面被大量规则占满;同时修复规则配色与设置持久化的问题( PR #1098 )。
- **终端矩形块选择**:在支持的终端换行模式下,可使用 **Alt + 鼠标拖动**选择矩形区域。补充块选择的跨行复制、选区绘制、拖动确认与状态清理逻辑,适合提取表格或对齐输出中的局部列内容。
- **上下文命令补全**:新补全引擎结合离线命令目录、历史输入和快捷命令,按当前命令及参数位置匹配候选,并提供描述和排序;同时识别不同 Shell 上下文及部分 WSL 场景。补全与历史索引在后台处理,减少重复扫描命令记录。
- **Telnet 与 Raw TCP 网络路由**:现有 Telnet/Raw TCP 会话可以使用保存的代理配置与多级 SSH 跳板,连接编辑器中增加相应网络路由选项。改进跳板优先级、连接取消和 `ProxyCommand` 子进程清理。Telnet/Raw TCP 本身仍是明文协议,代理路由不等于为终端协议端到端加密(#601 )。
- **逐连接 SSH 兼容模式**:SSH 连接编辑器新增独立开关,可为旧版 Dropbear 等兼容性较弱的服务器减少资源、进程、Docker 、GPU/NPU 与自动图标等附加探测,避免这些探测影响连接使用。普通终端、显式执行的命令、SFTP 和 SSH 隧道继续保留;开关会随连接配置保存、导入和备份(#886 )。
- **连接搜索增强**:保存的连接列表可按连接名、主机与端点、协议类型、备注等信息筛选;搜索命中分组名时保留该分组下的子分组和连接,更适合在大量分组中定位目标。
- **隧道分组批量管理**:支持批量启动或停止一个隧道分组中的连接,并在操作完成后汇总成功、跳过和失败数量及部分失败原因。隧道编辑器中的关联连接选择器也支持搜索,减少长列表滚动。
- **WindTerm 连接导入关联账户**:导入 WindTerm 连接时可识别账户关联信息,并提供关联与确认流程,尽量避免导入后再逐项重新绑定认证账户;同时完善导入数据校验和临时凭据的处理。
- **诊断日志文件大小配置**:可设置单个诊断日志文件的分片上限,默认 **10 MiB**,允许在 **1–100 MiB** 范围内调整。达到阈值后按本地日期和递增分片号继续记录,并在加载持久化设置后按保留周期清理历史日志,减少单个日志无限增长的情况。
- **MCP 终端任务接口**:完善对外 MCP 的会话与命令任务管理,引入 `terminal_start`、`terminal_poll`、`terminal_stop` 等可轮询的终端任务能力,支持有界输出读取及 SSH 执行结果跟踪;同步加强取消、会话归属与重复请求处理,主要服务于通过 MCP 调用 NyaTerm 的集成场景。
- **Linux glibc 2.31 独立兼容包**:增加面向部分 Ubuntu 20.04 等旧版 glibc 2.31 x86-64 环境的兼容构建,提供独立的压缩包与 Debian 安装包,包含相应的 OpenGL 兼容准备和启动脚本。常规 Linux 发行包仍保持独立,不因此降低其运行环境要求( PR #1106 )。
### 🐛 问题修复
- **云同步兼容数据恢复**:修复历史兼容指针损坏时可能阻断同步的问题,改善兼容数据解析与恢复流程,并处理旧版 V4 偏好信息导致 GitHub Gist 同步被阻止的情况( PR #1185 )。
- **WebDAV 跨源访问**:修复部分 WebDAV 服务跨源读取失败的情况,并补充对相关服务行为的回归测试( PR #1185 )。
- **云同步拉取后应用配置**:修复拉取到新设置后,已有设置草稿可能无法正常应用的问题;同时修正配置替换门禁对本地 Shell 或已经断开的标签页的判断,避免错误地将其视作需要阻止配置替换的活动会话( PR #1144 、PR #1102 )。
- **自动同步调度**:改善本地设置变化后的同步触发、远端可用性判断及冲突预览处理,减少不必要的自动同步和不合适的覆盖行为。
- **SSH 认证状态**:修复在连接编辑器中切换 SSH 认证方式时凭据可能丢失的问题,并扩展额外密码提示识别,以适应部分服务器的认证流程(#1128 )。
- **HTTP CONNECT 代理**:修复代理隧道建立后首批数据可能未被正确保留的问题,避免影响经过代理建立的 SSH 等连接。
- **RDP ActiveX 会话卡顿**:修复 Windows ActiveX RDP 会话断开后再编辑连接或切换会话标签时可能卡住的问题,调整原生会话表面判断及初始化时机。
- **原生 RDP 浮动面板**:修复浮动面板在原生 RDP 表面下被遮挡、失去焦点却未收起的问题,保留不同原生窗口之间一致的外部点击收起行为( PR #1183 、PR #1179 )。
- **RDP 客户端标识**:调整发送给 RDP 服务器的系统主机名信息,以改善服务器端识别客户端的兼容表现。
- **SFTP 返回父目录**:修复从子目录返回父目录后未正确选中原目录的问题;对于排序、过滤或隐藏项目,恢复选择时只定位实际可见的对应条目,并滚动至合适位置( PR #1142 )。
- **文件树跟随与展开**:改进文件树展开、终端路径跟随、悬停反馈以及导航状态保留;对祖先目录加载设置边界,减少远程目录层级较深时的多余操作( PR #1177 )。
- **文件管理器路径导航**:完善面包屑、历史导航与返回上级目录时的选中位置和滚动恢复,降低多窗格浏览中的定位成本。
- **终端命令历史导航**:修复连续浏览历史命令时导航状态中断的问题,恢复更连贯的命令切换行为(#988 )。
- **终端输入法组合文本**:修复应用自行绘制光标时,输入法预编辑文字与光标位置可能冲突的问题,改进不同输入状态下的组合文本显示( PR #1138 )。
- **macOS Option 方向键**:修复将 Option 作为 Meta 使用时,按 Option + 左右方向键不能正确向 Shell 发送跳词控制序列的问题,并更新相应帮助文案( PR #1143 )。
- **终端粘贴换行**:在未启用 bracketed paste 的场景中修正粘贴换行的发送行为,避免换行控制字符不符合终端预期( PR #1134 )。
- **Windows Ctrl+Insert 复制**:恢复该组合键在本地终端中的复制处理,并避免快捷键回退路径干扰原有 PTY 输入行为。
- **终端行号与高亮**:修复行号与文本重叠、滚动缓存中的行号锚点偏移、UTF-8 文本语义着色范围不正确,以及输入时高亮颜色闪烁等问题( PR #1139 、PR #1098 )。
- **`ls -l` 输出识别**:完善 macOS 扩展属性 `@`、SELinux `.` 和 ACL `+` 等权限标记场景下的字段识别,避免整行退出专用着色规则( PR #1098 )。
- **trzsz / ZMODEM 文件传输**:修复 trzsz 部分协议报文格式和解析细节、`rz` 上传时间戳处理,以及传输结束后接收提示残留的问题,并完善文件元信息处理。
- **终端录制文本**:修复录制转写中退格、覆盖、光标移动及命令回显边界的处理,使文本记录更接近终端实际呈现的内容( PR #1151 )。
- **外部唤起与分屏恢复**:修复从外部打开连接后输入焦点未落在终端的问题,并调整启动阶段会话与分屏布局恢复的时序,避免布局在会话恢复过程中被覆盖( PR #1184 、PR #1165 )。
- **快捷命令变量输入**:修复变量弹窗打开或确认后焦点丢失、终端未重新取得焦点等问题,默认聚焦首个可编辑变量输入框( PR #1175 、PR #1139 )。
- **本地 zsh 历史路径**:修复按平台定位默认 zsh 历史文件时使用错误路径的问题( PR #1033 )。
- **Linux 窗口装饰与兼容构建**:调整部分 Linux 服务器/X11 环境的窗口装饰处理,修正兼容发行包图标可读性、窗口类名、文件权限和打包一致性( PR #1106 )。
- **AI 异常响应**:对部分无效 Agent 响应补充有限重试;改进模型供应商错误分类、工具参数与结果对应关系的处理,降低异常响应导致工作流直接中断的概率。
### ⚡ 性能与稳定性优化
- **终端渲染与内存使用**:调整终端单元格文本存储方式,减少高频更新时的额外分配;优化行摘要生成、文本摄取与解析批次,降低大型输出场景的重复工作( PR #1096 )。
- **关键词与语义高亮刷新**:将部分高亮计算合并到 UI 刷新之外,减少同一内容被反复分析的开销,并优化逐行角色判断与主题配色计算( PR #1098 )。
- **SFTP 大目录排序**:减少文件浏览器自然排序和数字片段比较过程中的临时内存分配,改善文件数较多时的列表处理( PR #1141 )。
- **远程进程搜索**:对进程搜索键按需生成并缓存,减少重复查询和筛选中的文本构造成本( PR #1141 )。
- **文件树与目录定位**:减少祖先节点重复加载,保留展开和滚动状态,使目录浏览、切换及终端路径跟随更加稳定( PR #1177 )。
- **后台同步与日志**:加强自动同步请求去重和状态判断;诊断日志按完整记录分片并延后执行安全清理,避免日志写入时出现半条记录。
- **发布构建稳定性**:修正部分 Windows MSVC 链接器选择、打包检查与跨平台回归测试问题,减少 CI 环境差异造成的发布阻断;正式多平台构建仍以 GitHub Actions 的实际结果为准。
### ♻️ 重构与优化
- **AI 客户端与执行流程**:拆分 AI 客户端实现与桌面适配层,统一供应商错误、响应帧、工具调用结果及 Agent 决策的处理边界,为已有 AI 功能提供更清晰的故障定位。
- **MCP 任务与终端会话生命周期**:集中管理终端后台任务、取消状态、输出游标和会话归属,改进并发请求与完成事件竞态;不将内部实现调整表述为整个 MCP 功能的重新发布。
- **云存储与同步内部结构**:整理云存储适配器、固定同步范围的投影与兼容数据读取逻辑,区分完整本地备份和云端同步的数据契约。
- **桌面模块拆分**:将更新器、终端录制、文件管理与远程操作的部分实现提取为独立模块或 crate ,减少桌面层直接依赖,便于回归测试与维护。
- **终端历史及选区状态**:整合选择、历史索引、焦点和输入事件的状态管理,并补充矩形选区、输入法、行号及大输出场景的测试。
### 🎨 界面与交互优化
- **AI 会话标题**:AI 面板标题可显示当前会话的首个问题,更容易区分多个历史对话;调整面板标题、折叠图标和部分工具操作区域的布局。
- **AI 诊断与工具反馈**:对无效请求、参数不受支持、上下文过长、工具结果不匹配等错误进行更细分的识别,改善报错定位;优化引用、复制等紧凑菜单的宽度及文字展示。
- **连接列表搜索**:搜索结果同时考虑连接属性与分组层级,避免仅能按名称查找或搜索到分组后丢失子连接。
- **快捷命令面板**:改进从活动栏及快捷键打开/收起面板的行为,打开时聚焦搜索框,关闭时将焦点还给工作区;同时调整快捷命令分类选择和相关文案。
- **浮动面板焦点行为**:点击面板外部或切换焦点时自动收起,针对原生 RDP 会话修复层级差异与意外遮挡( PR #1179 、PR #1183 )。
- **文件浏览器交互**:改进树形展开、鼠标悬停、路径回退后的自动选中和滚动位置,使连续浏览更符合预期( PR #1177 )。
- **设置页面布局**:改进不同宽度窗口下的设置项布局和输入控件可操作性,减少窄窗口中的布局挤压。
- **活动栏与窗口交互**:修正活动栏拖拽时的鼠标指针样式与交互细节,并改善外部唤起会话后的焦点切换。
@
wowpaladin v1 版本是支持 WindTerm 的密码导入的,可能是 v2 还没有跟进。我定位修复一下。