diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d4c53c..255a552 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,156 +5,35 @@ 格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。 -## [Unreleased] +## [v0.5.0] - 2026-08-27 ### 新增 -- 新增应用退出快捷键。macOS 默认使用 `Command+Q`,Windows 默认使用 `Alt+F4`, - 其他平台默认使用 `Ctrl+Q`。 -- 在设置页快捷键面板增加“退出应用”配置项,支持修改或取消绑定。 -- 新增窗口位置、尺寸及最大化或全屏状态记忆,并在显示器布局变化后自动校正窗口位置。 -- 新增系统级应用菜单,提供关于、文件、编辑、视图、窗口和帮助等常用操作。 -- 新增“记忆标签页”设置,默认关闭。启用后可恢复标签组、分屏布局、活动标签、 - 本地工作目录和终端编码。 -- 新增终端编码切换,支持 UTF-8、GB18030、GBK、Big5、Shift_JIS、EUC-KR 和 - Windows-1252;SSH 标签页可独立设置,本地终端通过设置面板统一管理。 -- 远程文件编辑器新增编码切换,额外支持 UTF-16 LE、UTF-16 BE、BOM 检测与保留。 -- 新增 CSV 连接导入和导出功能。 -- 连接管理新增分组功能,支持新建、重命名、删除、折叠和批量移动连接; - 分组标题提供三态复选框,可按当前筛选结果批量选择或取消组内连接,删除分组时连接自动移至“未分组”。 -- 连接列表新增筛选、批量选择、已选数量统计和批量删除功能。 -- 新增全局 SSH 历史命令功能,支持筛选、选择、批量删除、复制和执行。 -- 新增通用终端通知,支持 OSC 9、OSC 99、OSC 777 和 BEL,并在 macOS Dock 或 - Windows 任务栏图标上显示红色未读徽标;非当前标签以闪动铃铛标记未读通知,点击系统 - 通知可激活窗口并切换到对应终端标签,当前可见标签不重复提醒。 -- 标签标题左侧新增命令活动动画,优先识别 OSC 133/633 shell integration 生命周期; - 未提供协议标记时根据近期终端输出回退显示 Loading 状态。 -- 新增 SSH 远程进程查看功能,可按 CPU 或内存占用查看、筛选、刷新、展开详情和复制信息。 -- 新增远程进程终止功能,并增加二次确认和系统进程 PID 保护。 -- 新增 SSH 网络端口查看功能,支持筛选、刷新以及查看协议、地址、端口、状态和进程。 -- 远程文件面板新增目录树、定位当前目录、折叠全部目录和目录加载错误提示。 -- 远程文件新增重命名及应用内文件编辑功能。 -- 远程文件编辑窗口支持拖动和调整大小,按 `Esc` 可放弃修改并关闭窗口。 -- 发布流程新增 macOS x64/arm64 DMG 安装包,以及 Windows x64/x86/arm64 安装程序; - 各平台同时保留便携压缩包。 +- 支持 ANSI 转义序列中的 F1–F12 功能键映射,解决在终端工具(如 `htop`、`mc`、`vim` 等)中按 F1–F12 无法响应的问题 (#91)。 +- 连接管理新增分组功能,支持创建分组、重命名、删除分组、折叠展开与按组归类管理连接 (#108)。 +- 扩展终端通知协议支持,兼容 OSC 9、OSC 99、OSC 777 和 BEL (响铃),支持 macOS Dock 与 Windows 任务栏未读徽标,后台标签页显示闪烁提醒,点击通知可自动唤醒窗口并切换至对应标签页 (#110)。 +- 新增系统级应用菜单,提供包含关于、文件、编辑、视图、窗口和帮助等常用操作 (#111)。 ### 变更 -- 将英文连接管理标题由 `CONNECTION MANAGEMENT` 简化为 `CONNECTIONS`。 -- 默认使用融合标题栏,并重新整理标签栏样式与操作区;折叠入口位于标签栏左侧, - 搜索和设置入口位于右侧。 -- 工作区交互统一为下划线活动页签、平面连接列表和低干扰图标工具栏;标签过多时提供溢出菜单, - 空连接列表可直接新建连接。 -- 标签列表选择标签时,标签栏会以平滑动画定位到完整可见位置,同时保留手动滚动能力。 -- 标签列表菜单条目新增删除按钮,可直接关闭指定标签页。 -- SSH 监控区增加当前会话身份条,显示会话名称、连接地址和连接状态;断开时保留状态上下文, - 但禁用远程资源详情入口。 -- 侧边栏折叠后完全隐藏,不再保留折叠态连接图标或连接列表入口。 -- 重新整理连接管理操作区,集中展示导入、导出和新建连接操作。 -- 连接列表改为名称靠左、连接地址靠右的整行布局,并保持列表项宽度一致。 -- 点击连接行只切换勾选状态,只有点击连接图标才发起连接。 -- 编辑连接保存后不再自动打开该连接。 -- 新建和编辑页面标题调整为“新建连接”和“编辑连接”。 -- 新建和编辑 SSH、SSH Config 及串口连接时,分组字段改为下拉选择, - 只能选择“未分组”或已有分组,并自动回显原分组。 -- SSH 表单改为 IP 与端口同行、账号与密码同行,并增加默认终端编码设置。 -- 右上角加号改为紧凑下拉菜单,仅保留“本地终端”和“新建连接”。 -- CSV 导出格式精简为 `name,group,host,port,username,password`,不再导出 ID、认证类型、 - 私钥路径、私钥内容和私钥口令。 -- CSV 导入和导出支持可选连接分组,连接唯一标识仍使用 `host + port + username`。 -- CSV 导入支持常见字段别名、UTF-8 BOM、带引号内容和多行密码,端口为空时默认使用 `22`。 -- CSV 导入使用 `host + port + username` 识别同一连接,匹配时更新原配置并保留本地专用字段。 -- 同一 CSV 中的重复连接以最后一条为准;本地存在多个相同标识时跳过更新并计入导入结果。 -- 保留对旧版 CSV 可选认证、私钥和口令字段的兼容导入能力。 -- 强化活动标签样式,通过文字、颜色和背景区分当前标签页。 -- 本地终端标签标题改为当前目录,并使用 `~`、`~/Sites/ashell` 等紧凑路径。 -- 恢复的 SSH 标签页不再自动连接;当前选中恢复或已断开的 SSH 标签时才询问是否重新连接。 -- 重新连接窗口精简标题、说明文字和宽度。 -- 历史命令改为宽度适中的小型弹出窗口,最多显示 10 行,超出后滚动。 -- 历史命令跨 SSH 标签页可用,当前连接的命令优先显示;超长命令保持单行并使用省略号。 -- 点击历史命令行只切换勾选状态,执行和复制分别使用独立图标;执行后自动关闭弹出窗口。 -- 相同历史命令自动去重并保留最新记录,每个 SSH 连接最多保存 200 条。 -- SSH 终端编码入口移至历史按钮右侧;本地终端编码改由设置面板统一管理。 -- 远程文件面板只在当前标签为 SSH 时显示,并随活动 SSH 标签切换对应的 SFTP 会话。 -- SSH 当前目录变化时自动同步远程文件路径。 -- 远程文件面板改为左侧目录树、右侧当前目录内容的双栏布局,分隔宽度可拖动并持久化。 -- 面板头部整合传输记录、历史命令和更多操作,移除原底部传输栏。 -- 精简远程文件面板头部,移除面板名称和左侧图标,并保留带文字的常用操作。 -- 同步路径、刷新、添加和更多操作按钮增加名称并调整图标。 -- 文件列表复选框固定在左侧,列宽支持独立拖动。 -- 文件列表支持点击高亮与 `Shift` 连续范围多选,范围内项目同步勾选并可直接批量操作。 -- 文件列表仅在内容确实溢出时显示滚动条,并支持触摸板纵向和横向滚动。 -- 文件右键菜单和其他下拉菜单根据文字长度自适应宽度。 -- 远程文件编辑改为应用内编辑,支持按扩展名进行语法高亮、2 MB 文件限制和原权限保留。 -- CPU、内存和网络模块仅在已连接 SSH 标签页中提供远程详情入口。 -- 监控显示位置设置统一应用于本地和 SSH 标签页;SSH 选择底部时,远程监控显示在文件面板下方。 -- 进程表头与 CPU 或内存数据列保持对齐,复制操作位于终止操作之前。 -- 统一按钮、复选框、删除、连接、执行和复制控件的鼠标指针反馈。 -- 统一连接列表和历史命令列表的复选框对齐、行间距、操作区间距及选择数量显示。 -- 清理未使用的本地化定义,统一 YAML 双引号格式,并保持中英文键一致。 +- 重新设计侧边栏连接管理交互:侧边栏头部增加显式的“编辑 / 完成”模式切换按钮,编辑模式下在搜索框下方提供全宽“+ 新增分组”按钮,并移除侧边栏右下角切换 Switch 开关。 +- 优化侧边栏连接项点击体验:非编辑模式下点击整行即可直接发起连接并隐藏冗余外链图标;允许侧边栏宽度自定义拖拽调小至 200px。 +- 将 CSV 导入与导出入口位置由侧边栏头部整合移至设置对话框的“配置文件与备份”页面中。 +- 优化标签栏加号下拉菜单:将第二个菜单项更新为“打开连接”,点击后直接弹出连接选择器对话框。 +- 支持侧边栏完全折叠隐藏,折叠后隐藏连接列表并最大化终端界面绘制区域。 ### 修复 -- 修复点击“新建分组”时程序崩溃的问题。 -- 修复本地终端位于主目录时状态圆点越出标签栏的问题。 -- 修复本地目录变化后标签仍显示旧路径或错误项目路径的问题。 -- 修复管道、重定向等复合命令只记录最后一段内容的问题。 -- 修复历史命令未正确处理退格、`Ctrl+U`、`Ctrl+W` 和 `Ctrl+C` 的问题。 -- 修复 Vim、`crontab -e` 等全屏编辑状态下的内容被错误记录为历史命令的问题。 -- 修复历史命令重复、无故丢失或配置并发保存时被旧数据覆盖的问题。 -- 修复连接列表和历史命令列表的滚动条遮挡右侧操作按钮的问题。 -- 修复 SSH 终端滚动条遮挡最右侧文字的问题。 -- 修复展开系统进程详情后列表行宽不一致的问题。 -- 修复远程进程详情重复显示命令内容的问题。 -- 修复空目录展开后目录图标缩进漂移、无法重新折叠的问题。 -- 修复异步目录响应错误覆盖当前远程路径的问题。 -- 修复远程文件表头列宽无法自由拖动的问题。 -- 修复文件内容较窄时仍产生过大横向滚动范围的问题。 -- 修复窗口缩小时远程文件面板右侧按钮被遮挡的问题。 -- 修复触摸板无法正确进行文件列表纵向或横向滚动的问题。 -- 修复编辑器选择错误编码后可能将乱码永久写回远程文件的问题。 -- 修复重新连接后旧终端后端的延迟事件覆盖新连接状态的问题。 -- 修复设置、进程、端口、新建连接及编辑连接窗口在部分状态下无法打开的问题。 -- 修复系统进程和网络端口筛选框未随显示语言更新中英文占位文案的问题。 -- 修复多个交互元素缺少指针光标及下拉菜单宽度过大的问题。 -- 修复 macOS 构建中 Windows 专用窗口句柄参数产生未使用变量警告的问题。 -- 修复窗口尺寸变化以及本地终端最大化后恢复时,终端网格重复重排并产生空行的问题。 -- 修复窗口布局切换期间终端接收单列临时尺寸并导致界面卡死的问题。 -- 修复 SSH 连接后工作区横向收缩,命令窗口内容只能显示在狭窄区域的问题。 -- 修复本地终端链接识别错误保留末尾不成对括号的问题,同时保留链接内合法的成对括号。 -- 修复终端关键词高亮规则重叠时同一单词出现多种颜色的问题。 -- 修复终端关键词误匹配更长单词子串的问题,仅高亮完整单词或短语。 -- 修复连接列表无法连接仅提供旧版 SSH 密钥交换算法的 OpenSSH 服务器的问题。 -- 修复 CentOS 6 等旧版 Linux 内核缺少 `MemAvailable` 字段时内存用量显示为总内存的问题。 -- 修复 CentOS 6 等旧版 Linux 的 CPU、网络、磁盘和端口探测在旧命令输出或计数器异常时显示不准确的问题。 -- 以 SSH 文件列表面板头部按钮为基准,统一应用按钮的高度、字号和图标尺寸;界面默认字体调整为 14px、终端默认字体调整为 12px,改善整体可读性与操作一致性。 -- 修复标签列表菜单无法拖动调整标签分组顺序的问题,并同步更新标签栏与已保存的标签状态。 -- 修复标签列表选择标签时标签栏定位不准、末尾标签无法完整显示以及手动滚动被回弹的问题。 -- 修复 Windows 融合标题栏无法通过鼠标拖动窗口的问题。 -- 修复新建 SSH 标签页后因布局时序或分屏数量导致标签按钮未准确滚动到完整可见位置的问题。 -- 为 SSH 文件列表面板的展开/折叠按钮补充明确文字,并随面板状态同步切换。 +- 修复 SSH 历史命令输入时的残留字符与光标定位偏差问题 (#114)。 +- 优化 Windows 平台下终端拖拽与窗口细节表现 (#112)。 ### 兼容性与稳定性 -- 增加 Linux、macOS 和 Windows 远程系统信息、进程及端口探测兼容。 -- 终端焦点变化会通过标准转义序列上报,支持遵循终端焦点协议的 CLI 仅在窗口失焦时发送通知。 -- CI 同时监听上游 `main` 与当前仓库 `master` 分支,避免主分支提交遗漏跨平台检查。 -- Windows 远程探测使用 PowerShell 编码命令,Unix 环境根据可用工具自动回退。 -- 远程探测增加超时、退出状态和错误输出检查。 -- 本地终端目录跟踪同时兼容 Unix 进程检测和 Windows PowerShell 路径报告。 -- 窗口恢复会根据当前显示器可见区域限制尺寸和坐标,避免窗口恢复到屏幕之外。 -- 配置保存改为加锁、临时文件原子替换和备份恢复,降低并发写入或意外退出导致的数据损坏风险。 -- 主配置损坏时尝试从 `.bak` 恢复,并优先恢复修订号更新的历史命令。 -- 配置文件继续兼容旧版本缺少编码、历史命令和标签页字段的数据。 -- 远程文件保存采用临时文件替换方式,并尽可能保留原文件权限。 -- CSV 导出前增加明文密码安全提示;Unix 系统下导出文件权限设置为 `0600`。 -- 替换存在未来 Rust 不兼容警告的 `block` 依赖,并增加本地 `stacksafe-macro` 兼容补丁。 -- 移除 `proc-macro-error2` 相关依赖,消除对应的 Cargo 未来不兼容警告。 -- 增加 CSV、编码、配置恢复、标签恢复、SFTP 目录树、远程进程端口解析和过期事件过滤测试。 +- 代码架构模块化重构:将核心代码拆分为 `session`、`terminal`、`app`、`backend`、`sftp` 与 `sync` 模块,提升可维护性 (#105-#107)。 +- 优化 GitHub Actions CI 构建工作流 (#109)。 ### 注意事项 -- “记忆标签页”默认关闭,需要在设置页手动启用。 -- CSV 导出的密码为明文,不包含私钥和私钥口令,请妥善保管并在迁移后及时移除。 -- 应用内远程文件编辑器仅支持不超过 2 MB 的文件。 -- 文件内容无法使用当前编码完整解码,或修改内容无法使用目标编码表示时,将禁止保存以避免损坏文件。 +- CSV 导出的密码为明文格式,请妥善保管并在迁移后及时删除导出的 CSV 文件。 + + diff --git a/Cargo.lock b/Cargo.lock index f7ed860..4d29c02 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -315,7 +315,7 @@ dependencies = [ [[package]] name = "ashell" -version = "0.4.12" +version = "0.5.0" dependencies = [ "alacritty_terminal", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 50b7d4c..32ae95c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ashell" -version = "0.4.12" +version = "0.5.0" edition = "2024" authors = ["ashell contributors"] description = "A GPUI Component based SSH and local terminal client"