Files
Bill 14f5963706
CI / typecheck + test + build (windows) (push) Canceled after 0s
build: drop MSI installer, NSIS exe only
electron-updater never supported MSI auto-updates; the exe is the only
installer from v1.0.22 on. release.cjs no longer expects/uploads the msi.
2026-10-08 13:25:01 +08:00

199 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenTerminal 更新日志
## v1.0.22 - 2026-10-08
### 输入法
- **修复中文输入法候选窗不跟随光标**(v1.0.21 回归):v1.0.21 的构建环境中终端组件依赖未按锁定版本安装,安装包实际打进的是不含上游输入法修复的旧版本;本版本恢复 v1.0.20 所用的终端组件版本,候选窗重新紧贴光标。
### 安装包
- 不再提供 MSI 安装包(electron-updater 本就不支持 MSI 自动更新),统一使用 NSIS exe 安装包。
### 内部
- 打包流程新增依赖一致性校验:构建前自动比对实际安装的依赖与锁定清单,不一致即中止,防止同类问题再次发生。
## v1.0.21 - 2026-10-07
### 背景图体验
- **浅色主题不再「洗白」**:设置背景图后,调低透明度在任何主题下都是压暗图片(此前浅色主题下调透明度会把图洗成白色,文字完全看不清)。
- **文字自动提亮**:图片模式下终端文字对比度提升到 WCAG AA 级别,浅色主题的深色文字在壁纸上也能清晰可读。
- **新增「背景压暗」滑杆**(设置 → 主题):在图片之上叠加独立压暗层,图片保持饱和度的同时整体变暗,亮图建议 30–50%。
- 背景图默认透明度从 60% 调整为 30%。
### 性能
- 设置写入不再让所有终端窗格重写参数并重排(字段级订阅,只有相关窗格响应)。
- SFTP 文件列表虚拟滚动:上万条目的目录(如 node_modules)不再卡死窗口。
- 单个窗格崩溃不再拖垮整个工作区:每个面板独立错误边界 + 重试按钮。
- SSH 底部面板拖动更顺滑;传输面板与监控图表的渲染开销显著降低。
### 安装包体积
- 安装包精简约 **90MB**(内置依赖 98MB → 8.1MB):纯界面依赖不再重复打进安装包。
### 安全加固
- SFTP 上传/下载与 ZMODEM 收发的本地路径,只接受通过系统对话框选择的位置,阻断恶意构造路径的读写。
- SSH 私钥文件增加校验(必须是 ≤1MB 的普通文件)。
- 窗口安全选项显式固定(contextIsolation / nodeIntegration / webSecurity),不再依赖默认值。
### 稳定性修复
- ZMODEM:写入错误正确终结传输、进度事件节流、会话 detach 时补发终结事件。
- 连接/命令配置文件损坏时自动备份旧文件再重建,不再静默丢配置。
- 布局模板应用失败时恢复原布局;锁屏期间后弹出的浮层也被正确禁用。
- 发布通道防降级(拒绝把旧版本盖到更新通道),资产按 sha512 校验。
- SFTP 各操作增加超时兜底,半死连接自动重试一次。
- 启动链路与主机密钥校验多处加固。
### 其他
- 终端标签的自动编号标题(「终端 3」)现在跟随界面语言切换。
- 锁屏快捷键 Ctrl+L 改用物理键位判定,Dvorak 等非 QWERTY 布局也能正确触发。
- 设置页移除无效的「更新通道」下拉框。
## v1.0.20 - 2026-10-01
### 输入法修复
- **修复中文输入法候选窗不跟随光标**:此前在终端里输入中文时(尤其是 Kimi Code、Claude Code 等高频刷新的 TUI 界面),候选窗会漂到远离光标的位置;现已紧贴光标显示。内置终端组件升级至包含上游输入法修复的版本。
### 锁屏加固
- **锁定期间移除应用菜单**:Alt 键唤出的菜单里「重新加载 / 开发者工具 / 缩放」可通过鼠标点击绕过键盘拦截,锁定期间整个菜单摘除,解锁后自动恢复。
- Ctrl+L 立即锁屏的按键判定重构为独立模块并补充 29 条测试用例,防止回归。
- 全局唤起快捷键的录制器保留 Ctrl+L 不允许占用,避免全局注册在系统层静默禁用紧急锁屏。
- 修复:系统休眠或窗口失焦后,锁屏密码框的冷却倒计时可能超过真实截止时间,导致可输入时间被无谓延长。
## v1.0.19 - 2026-09-28
### 更新机制调整
- **更新源改为 GitHub 优先**:检查更新先走 GitHub releases(跟随系统代理),并带 20 秒连通性探测——没有代理或连不通时不会干等,自动改用国内更新通道(强制直连)兜底。
- **GitHub releases 恢复随版本发布安装包**(exe + blockmap + latest.yml),与国内通道保持一致。
### 终端高亮:性能与兼容性
- **引擎提速**:颜色序列改为编译期预计算(不再逐处解析 hex);高亮区间认领从线性扫描改为有序插入(二分查找);纯文本洪流(如 cat 大文件)跳过重扫描。实测 200KB 负载:密集匹配场景提速约 19–56%,纯文本流式提速约 54%,输出与旧版逐字节一致。
- **转义序列覆盖更全**:新增 DCS/APC/PM/SOS(tmux 透传、sixel、kitty 图形协议)与 DEC 单字符序列(保存/恢复光标等)的识别,这些场景下同行的正常文本不再丢失高亮。
### 高亮设置页修复
- 「按分类分组」视图现在真正按分类聚簇(此前会被优先级排序打散)。
- 规则编辑器新增「基础规则」开关:可将自建规则加入「仅基础」模式的生效集合。
- 规则集(profile)编辑器勾选部分规则时,会列出未包含的规则。
- 「替换现有规则」导入增加确认提示,且每次打开弹窗默认回到「追加」。
- 修复若干小问题:快速连续开关规则可能丢改动、数值分级行不按阈值排序、清除背景色后色块残留等。
## v1.0.18 - 2026-09-24
- **修复 v1.0.17 的严重回归:锁屏后无法输入密码**。v1.0.17 在锁屏期间由渲染层拦截了全部键盘输入(本意是挡住缩放/刷新快捷键),但按键的默认行为正是「向聚焦的输入框插入字符」,导致锁屏界面密码框收不到任何输入、无法解锁。
- 快捷键拦截已全部移到主进程(`before-input-event`),只拦截刷新/开发者工具/缩放组合键,普通输入不受影响。
- **新增锁屏快捷键 Ctrl+L**:应用内任意位置(包括终端里)按下立即锁屏;未设置锁屏密码时不占用该组合键(shell 的 Ctrl+L 清屏不受影响)。
- **已被 v1.0.17 锁定的用户恢复方法**:完全退出应用 → 删除 `%APPDATA%\OpenTerminal\lock.json` → 重新启动(锁屏数据删除后不会再弹锁屏),升级到本版本后可重新设置锁屏密码。
## v1.0.17 - 2026-09-24
- **新增 设置 → 锁屏 选项卡**:可设置、修改、移除锁屏密码(仅存本机,scrypt 单向哈希,不存明文、无账号体系)
- **三种锁定方式**:立即锁屏、系统闲置指定时长后自动锁定(1/5/15/30/60 分钟,默认关闭)、启动时锁屏
- 锁定后以完全不透明的遮罩覆盖窗口,背后的终端会话保持运行、不会断开,解锁后恢复原状
- 密码输错进入渐进冷却(1 秒→30 秒),防止在键盘前暴力猜测
- **退出并重新启动应用后锁定仍然生效**:托盘退出、任务管理器强杀、崩溃都绕不过锁屏
- 锁定期间停用 Ctrl+R / F5 重新加载、开发者工具与缩放快捷键,避免误触终止遮罩背后的会话
- 忘记密码无法找回,只能删除本机 `%APPDATA%\OpenTerminal\lock.json` 后重新设置
- 打包版本不再读取 `ELECTRON_RENDERER_URL` / `OT_UPDATE_URL` 环境变量,阻断把应用或更新通道指向恶意地址的注入路径
- 渲染进程 preload 重新启用沙箱隔离
- known_hosts 储存无法读取或损坏时改为拒绝连接、提示修复或删除文件,不再静默覆盖全部已固定的主机指纹
- 连接时的密码/口令输入与书签的认证方式统一(密钥/agent 认证的书签不再弹出密码框、不再送出残留的已存密码)
- 修复 SSH 连接异常中断时会话退出通知漏发或重发的问题,终端不再卡在「连接中」
- 分割面板的系统监控在一侧关闭后不再误停另一侧的监控
- 会话日志索引加入路径校验,防止被篡改的索引把日志写到目录之外
- 设置保存改为原子写入,Windows 下文件被占用时自动重试,修复偶发的设置保存失败
- 新增 CI(GitHub Actions):类型检查 + 10 个离线测试 + 构建
- 窗口隐藏到托盘时,冻结检测日志不再把定时器节流误报为约 1 分钟的「卡死」
## v1.0.16 - 2026-09-23
- **内置规则 11 条 → 22 条**:新增危险/破坏性命令(`rm -rf`、`mkfs`、`dd if=`、`chmod 777`、`drop database`、管道给 `sh` 等)、疑似密钥/令牌提醒、删除/移动/覆盖操作、新建/创建操作、日志级别、退出码、HTTP 状态码、耗时(毫秒)、百分比进度、网络与 IP 地址、时间日期、`root@` 提示符、Shell 关键字、字符串、环境变量等
- **状态词三分配色且不分大小写**:成功(`Success` / `Succeeded` / `Successfully` / `good` / `done` / `OK` / `✓`)、警告(`Warning` / `Caution` / `Deprecated` / `⚠`)、错误与致命(`Error` / `NG` / `err` / `bug` / `fail` / `FATAL` / `CRITICAL` / `PANIC` / `✗`)各自一种颜色
- `not ok` / `not found` 正确显示为错误,不会被误染成成功绿
- **数值分级取色**:百分比低于 20% 红、20–50% 黄、50–80% 浅绿、80% 以上绿;退出码、HTTP 状态码、耗时同样按数值分级取色
- **高亮模式三档**:全部 / 仅基础(只保留错误、成功、警告、危险命令、密钥等关键规则,开销约为全部的 1/4)/ 关闭(零开销)
- 规则支持「忽略大小写」与「数值分级」开关,编辑器内可用测试文本实时预览着色效果
- 规则可导入 / 导出 JSON,方便团队分享同一套配色
- **按主机规则集**:可把规则子集存成命名规则集,并在 SSH 连接编辑里绑定给某台主机(默认关,未绑定的主机跑全部规则)
- **命中/耗时统计**:每条规则在本会话的命中次数与扫描耗时(默认关,关闭时零开销)
- **高亮颜色跟随终端主题**:规则颜色映射到当前主题的调色板,换主题不再突兀(默认关)
- 高亮设置页新增分类列(安全 / 状态 / 文件 / 网络 / 文本 / 数值),可按分类分组查看规则
- 修复高亮设置页工具栏在窄窗口下标签被挤成竖排、按钮不靠右的问题
- 新增关键词高亮规则回归测试(词边界、大小写、反向词、数值分级、导入导出、分块流),`npm test` 全量通过
## v1.0.15 - 2026-09-20
- **自定义终端背景图片**:设置 → 主题 → 背景图片,可为终端指定任意本地图片作为背景,并支持 10%–100% 的图片不透明度调节;移除图片后恢复纯色背景
- **主题编辑器重名提醒**:新建/编辑主题与内置或其他主题重名时给出黄色提示(仍可保存)
- 主题编辑器种子颜色自动规范化,非法颜色值不再能进入自定义主题
- 自定义主题颜色数据损坏时自动修复为默认色,并记录告警日志
- 设置弹窗左侧导航选中项文字改为白色,与未选中项对比度一致(修复蓝色文字在深色背景上看不清的问题)
- 设置弹窗背景图片、透明度等新增控件与四语言(简/繁/英/日)文案同步上线
- 渲染进程与主进程新增冻结时长探测日志,便于后续诊断"卡死无响应"类问题
## v1.0.14 - 2026-09-20
- 修复上传 **大于约 250KB** 的文件会被静默损坏的问题(文件大小正确但内容出现字节错乱)
- 修复每次下载泄漏一个远端文件句柄、每次传输遗留一个 SFTP 通道的问题;服务器协议异常不再导致整个应用退出
- 上传遇到同名文件时先询问是否覆盖;删除多个文件时部分失败会如实报告
- 权限编辑修复:未知权限的文件不再误发 `chmod 000`;GID 留空不再被误改成 UID 的值;正确显示并保留 setuid / setgid / sticky 特殊位
- chmod / chown 增加超时,远端无响应不再永久转圈
- 修复 SSH 输出中文乱码(跨网络包被截断的多字节字符)
- 修复按 Tab 接受补全后命令历史丢失或记录错乱的问题
- 修复 Ctrl+U / Ctrl+W 等编辑键被写进命令历史(表现为历史里出现"两条命令拼接")
- `cd ~/目录`、`cd $HOME/...` 现在能正确记忆目录,新终端按此恢复
- 中文行内的网址链接点击范围不再错位;窗口尺寸过小时不再向终端发送异常尺寸
- SSH 会话退出时显示真实退出码;ZMODEM 超时/出错不再向终端和日志倾倒乱码
- 启动恢复失败不再导致本次运行期间会话快照永久停止保存
- 监控面板 CPU / 网络历史曲线现在会实时重绘;切到本地终端工作区时停止向服务器轮询
- 广播输入:SSH 分屏关闭一侧不再让另一侧丢失广播目标;取消勾选一个目标不再清空其余选择
- 连接失败时显示真实原因(密码错误 / 拒绝连接等),双击不再重复创建连接
- 修复"关闭其他 / 关闭右侧"会漏关标签的问题
- 界面语言切换首帧即生效;切换主题后活动标签文字颜色自动适配,不再出现浅色主题下看不清
- 私钥路径字段提示纠正为"本机路径"(此前提示为服务器路径,照做会连接失败)
- 禁止把文件拖入窗口导航;外部链接仅允许 http(s) / ftp;IPC 增加来源校验
- 仅密码认证的连接才使用存储的密码(密钥认证的连接不再回退发送密码)
- 连接书签、主机指纹等配置改为原子写入,崩溃不再导致数据丢失
- 渲染进程异常退出时自动回收其全部终端会话与日志
- 自定义主题数据损坏不再导致应用无法启动
- 内置更新通道发布改为原子操作,发布中途失败不再导致自动更新不可用
## v1.0.13 - 2026-09-20
- 支持简体中文 / 繁體中文 / English / 日本語,入口在「设置 → 系统 → 界面语言」,切换即时生效并持久化
- 全应用文案完成迁移:设置各页、工作区、终端右键菜单与搜索、SSH 连接管理、文件面板、系统监控、命令面板、托盘菜单与关闭询问
- antd 组件内置文案(空状态、分页等)随界面语言切换
- 更新日志改为**随安装包内置**,离线也能查看;不再依赖网络接口
- 更新日志支持多语言:按当前界面语言显示,某版本缺翻译时自动回退简体中文
- 修复「关闭按钮行为 = 每次询问」不生效的问题(此前会被静默改回「最小化到托盘」,选项形同虚设)
- 高亮规则不再因字段形状问题被静默丢弃:优先级字符串、0/1 布尔值、缺失前景色等会被自动修复,未知字段保留
- 设置解析告警写入 `settings-warnings.log`,配置异常可追溯
- 终端右上角工具条可配置(设置 → 渲染与行为):打开工作区目录(默认开启)、记录会话日志、打开日志目录
- 「打开工作区目录」按钮:一键在资源管理器打开终端当前目录,随 `cd` 实时跟踪
- 全局唤起快捷键改为**按键录制**:点击输入框后直接按组合键,Esc 取消、退格清空;需带修饰键或功能键,避免误占普通按键
- 「输入建议」「记录命令历史」默认关闭(已有安装会一次性重置,之后手动开关不再被覆盖)
- 修复设置弹窗内容列无法滚动的问题(antd v6 容器类名变更导致),主题页去掉多余的双层滚动条
- 界面细节:渲染模式与界面语言按钮改为连体分段样式,选中态文字对比度修正
发布时由 `scripts/sync-changelog.cjs` 自动把 RELEASE_NOTES.md 合并进此文件;
内容随安装包内置,「关于」页的更新日志直接读这里,不依赖网络。
## v1.0.12 - 2026-09-20
### 浅色主题对比度修复
- 标签栏/侧栏颜色改为按主题背景亮度自适应:浅色主题下标签栏与终端同色系(不再出现浑浊灰色条),深色主题外观不变
- 修复浅色主题下标签呈深色块、白字的问题:标签底色与文字改由主题变量接管,非活动标签浅底深字,活动标签文字自动压深
- 设置弹窗全面适配浅色主题:字体、高亮、主题等页面的标签/描述/表格/调色板文字改为跟随主题前景色,浅色下清晰可读
### 稳定性
- 会话日志写入改为每文件缓冲 + 单条写循环:高输出场景下合并写入、顺序有保障,不再随写入次数无限堆积
- 设置保存串行化:托盘修改关闭行为与设置界面保存并发时不再互相覆盖丢更新