Commit Graph
91 Commits
Author SHA1 Message Date
XuzandClaude Opus 5.5 269fab6550 版本号改为 0.1.0-beta.6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.0-beta.6
2026-10-03 11:45:10 +08:00
XuzandClaude Opus 5.5 3c0871eb4e 外部 CLI:shellrs list 也列出临时连接
堡垒机打开的临时连接排在保存的主机后面,JSON 里 "temporary": true,表格的
分组一栏写「(临时连接)」。标签开着期间 ID 不变;每条命令照常新建连接,用
内存里的链接密码登录,一次性令牌的堡垒机会拒绝这次登录。旧版应用的回答缺
这个字段时读成保存的主机,不升协议版本。skill 里写明这些。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 11:44:33 +08:00
XuzandClaude Opus 5.5 87c5cfb120 堡垒机用 ssh:// 链接打开临时连接(兼容 Xshell 的调用方式)
`ShellRS ssh://用户[:密码]@地址[:端口]` 或 `ShellRS -url … -newtab 名称`
开一个终端标签连过去。只看第一个参数判断是不是链接,外部 CLI 的命令不受
影响;Windows 发布版也认。

- 临时连接不保存:HostStore 把它放在单独的 transient 里,按 id 找得到,
  但不在 hosts() 里,不写库、不进最近连接;终端和 SFTP 标签都关掉就忘掉。
- 链接里的密码只在 TransientSecretStore 的内存里(SecretRef::Transient),
  不进钥匙串。
- ShellRS 已在运行时,Request::Activate 带上链接交给它打开;不带链接时消息
  和以前一字不差,旧版收到也只是调出窗口,所以不升协议版本。
- 链接有问题时弹通知说明原因,文字里不带链接原文。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 11:24:42 +08:00
XuzandClaude Opus 5.5 ba63b3d73f 在线升级:标题栏按钮更醒目,更新对话框不再列更新说明
标题栏的更新按钮改成 success 色的浅色按钮(出错时 warning 色),不再是
普通图标加一个小绿点。更新对话框不再显示更新说明,页脚两个按钮:「查看
更新内容」打开 https://shellrs.com/changelog,「重启并安装」照旧;去掉
「稍后」,用关闭按钮或 Esc 关。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:25:41 +08:00
XuzandClaude Opus 5.5 de0fafe6ee Docker:有多个容器的 compose 项目默认折叠
只有一个容器、而且它在运行的项目默认展开;多个容器的项目展开会把下面的
都挤下去,卡片上已经写着「运行中/总数」。手动展开或折叠照旧记在面板里。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:25:36 +08:00
XuzandClaude Opus 5.5 7886cb7138 外部 CLI:Agent Skills 增加 WorkBuddy
安装到 ~/.workbuddy/skills(Windows 是 %USERPROFILE%\.workbuddy\skills)。
设置页的 skill 行数按 AgentKind::ALL 的长度算,不再写死。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:25:40 +08:00
XuzandClaude Opus 5.5 e27bb0cb63 版本号改为 0.1.0-beta.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.1.0-beta.5
2026-10-02 20:38:29 +08:00
XuzandClaude Opus 5.5 290650bd18 改 src/testing.rs 时也跑 Windows CI
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:38:29 +08:00
XuzandClaude Opus 5.5 1b6a0b6b9b 修复 Windows CI:测试辅助函数 sh 只在 Unix 上编译
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:29:17 +08:00
XuzandClaude Opus 5.5 a20b3bae3b 主机右键菜单增加复制 IP 地址
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:23:21 +08:00
XuzandClaude Opus 5.5 ee8441e301 命令片段:右侧栏的新工具,按分类保存常用命令,点一下输入或执行
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:09:20 +08:00
XuzandClaude Opus 5.5 9143e387bc 历史命令:右侧栏的新工具,列出主机上 bash 的历史命令,点一下放进终端输入行
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 19:08:16 +08:00
XuzandClaude Opus 5.5 2576b46e43 Docker:右侧栏的 Docker 工具,管理容器、卷、镜像和网络
- 容器按 compose 项目分组,可启停、重启,查看详情和日志;卷、镜像、网络可查看详情和删除
- 工具图标换成 Docker 的鲸鱼;单元测试起子进程时加锁,修好外部 CLI 测试的偶发失败

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 18:18:27 +08:00
XuzandClaude Opus 5.5 610cb12fbf 系统服务:右侧栏的新工具,管理 Linux 主机的 systemd 服务
- 按自定义 / 系统分组,按状态分页、搜索;启动、停止、重启,启用或禁用开机启动
- 点服务打开详情,含状态和最近的日志

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:51:39 +08:00
XuzandClaude Opus 5.5 3e8f635fa7 进程管理:右侧栏的新工具,列出 Linux 主机的进程,可查看详情和结束进程
- 按内存或 CPU 排序、搜索,每 15 秒刷新;点进程打开详情,含完整命令
- 右键或详情里结束 / 强制结束进程,先确认

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:10:56 +08:00
XuzandClaude Opus 5.5 0d455e02f5 网络连接:右侧栏的新工具,列出 Linux 主机的 TCP、UDP 连接和监听端口
- 卡片显示协议、状态、地址、进程和用户,可搜索、按协议和状态筛选
- 打开或切换终端时读取一次,点刷新再读;系统监控和它共用终端里执行命令的部分

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:41:00 +08:00
XuzandClaude Opus 5.5 8a0436caf6 系统监控:右侧栏的第一个工具,经终端自己的 SSH 连接读取 Linux 主机的 CPU、内存、网络和磁盘
- 右侧栏只跟远程终端出现,已知不是 Linux 的主机不显示监控图标,最窄 320 px
- 端口转发、凭据列表和开始页的滚动条挂到不滚动的外层上,修正滑块位置

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:34:23 +08:00
XuzandClaude Opus 5.5 616bcead0f 终端右侧栏:窗口最右边一列工具切换,右侧 Dock 里显示所选工具,先放四个占位面板
- 窗口级的一份右侧栏,只跟着终端出现(远程终端和本地终端):SFTP、设置、开始页在前时
  右侧栏连同按钮列都不显示,回到任一终端时按原样恢复,内容对应这个终端(主机或本机)
- 右侧 Dock 只有一个面板 ToolSidebar,按钮列由工作区画在 DockArea 外面;点工具显示、
  再点收起,⌘⌥B / Ctrl+Alt+B 显示或隐藏;默认收起、宽 320 px,不持久化
- 占位工具:命令片段、历史命令、Docker、系统监控,写明将来显示什么和「即将推出」
- 当前标签统一经 Workspace::set_active_tab 改,它同步右侧栏的显示与指向的终端
- 右侧 Dock 不可折叠,只在关闭时临时可折叠,避免中间区标签栏多出 gpui-kit 的折叠按钮;
  按钮不抢终端焦点,收起时焦点在右侧栏里就交还给中间的标签
- 新增 UI 测试;CLAUDE.md 记下产品决定、实现要点和测试标识

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:42:31 +08:00
XuzandClaude Opus 5.5 0ff59d07bc 侧栏三个列表的行 tooltip 统一成主机列表的样式:开在行的右侧、主题反色、在行间跟着指针移动
- 主机列表的 TooltipOverlay、主人判断和动画抽成 shared::RowTooltips,主机、端口转发、凭据三个面板共用;
  转发和凭据原来用 ListItem::tooltip,贴着鼠标弹出、盖住下面的行、和菜单同色
- 内容一律是一行要点、下面小一号的补充:主机是 user@地址:端口加备注,转发是完整的规则说明,
  凭据是行里第二行的全文,密钥凭据下面是私钥文件的完整路径
- 转发行的启停按钮有自己的 tooltip:指针在按钮上时行的 tooltip 收起,回到行里再出来;
  ListItem 的 suffix 不在内容盒里,按钮区另外量一次,tooltip 按并集定位,不再压在按钮上
- 新增转发和凭据行 tooltip 的 UI 测试;主机备注的测试 id 改为 host-tooltip-note;CLAUDE.md 同步

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:57:06 +08:00
XuzandClaude Opus 5.5 471282f3e3 SFTP 列表的框选框改用选中名称的配色:浅蓝底色加深一点的蓝色边框(table_active / table_active_border),原来是 primary 的灰底深色框,和选中的浅蓝不搭
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:18:26 +08:00
Xuz 874f3149df 增大应用图标内容边距并更新各平台图标 2026-10-02 01:18:45 +08:00
XuzandClaude Opus 5.5 0b72cf098f 发布的最后一步调用部署挂钩,让官网 shellrs.com 重新构建:官网的下载页和更新日志在构建时读更新清单,所以放在清单上传、清 CDN 缓存之后;挂钩地址是 release 环境的 secret SITE_DEPLOY_HOOK
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 01:03:02 +08:00
XuzandClaude Opus 5.5 260e5f493f README 的下载部分加上官网 shellrs.com/download
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 00:54:05 +08:00
XuzandClaude Opus 5.5 8ae0c38998 许可证改为 GPL-3.0:分发修改版本须同样以 GPL-3.0 公开源代码;README 开头一句强调 Rust 编写、GPU 渲染界面
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 23:45:21 +08:00
Xuz 3d6801d469 README 改写成开源首页:中英文两版、真实窗口截图(主界面深浅两色、分栏、SFTP、端口转发),原来的逐项说明、发布和开发说明移到 docs/;以 MIT OR Apache-2.0 双许可发布 2026-10-01 23:36:05 +08:00
Xuz 8df26abf37 版本号改为 0.1.0-beta.4 v0.1.0-beta.4 2026-10-01 21:24:13 +08:00
Xuz e887ffc66b Windows 上 SFTP 本地面板的路径不再带 \\?\ 前缀:读目录和上传的来源改用 dunce 规范化,Windows CI 加跑本地读目录的测试 2026-10-01 21:23:45 +08:00
Xuz 7fa7fefeb0 版本号改为 0.1.0-beta.3 v0.1.0-beta.3 2026-10-01 21:02:31 +08:00
Xuz 75a0e76e17 开始页没有连接记录时去掉「双击左侧的主机即可连接」:标题下面已经写了 2026-10-01 21:00:22 +08:00
Xuz ef2bd8c3a6 macOS 上点关闭按钮改为把 ShellRS 隐藏到后台:连接、传输和端口转发照常运行,点 Dock 图标恢复窗口,⌘Q 才退出 2026-10-01 21:00:22 +08:00
Xuz bcf2db0413 Windows CI 只在推送改到平台相关代码、构建脚本或依赖时运行,tag 不再触发 2026-10-01 20:12:03 +08:00
Xuz e1a74faa53 版本号改为 0.1.0-beta.2:beta.1 打包失败、没有发布,第一个测试版改用这个版本号 v0.1.0-beta.2 2026-10-01 20:08:02 +08:00
Xuz a9a7e7087f 发布流程:建 DMG 时显式给出映像大小和 HFS+ 文件系统,失败重试;hdiutil 自己估的大小装不下应用 2026-10-01 19:59:33 +08:00
Xuz 0fbcb7adbf 版本号改为 0.1.0-beta.1,准备第一个测试版 v0.1.0-beta.1 2026-10-01 19:34:32 +08:00
Xuz 43b5f81d51 README 去掉 SHELLRS_RELEASE_BASE 的说明:make-manifest.sh 里没有这个变量 2026-10-01 19:05:04 +08:00
Xuz 533d7aa3a1 更新清单里给每个包加上 GitHub Release 作为第二个下载地址 2026-10-01 19:04:15 +08:00
Xuz ee6633c401 make-manifest.sh 可用 SHELLRS_RELEASE_BASE 把下载地址指向本地服务器,便于本机演练升级 2026-10-01 17:32:09 +08:00
Xuz 1f330212e8 填入在线升级的发布公钥:日常签名用的一把和离线备用的一把 2026-10-01 17:32:09 +08:00
Xuz c69d14dc4b 其余新建、编辑对话框的校验错误统一改用错误通知
- 分组、端口转发、凭据、SFTP 重命名 / 新建和「打开目录」不再在表单最下面放错误行,
  校验不过时弹 form_error_notification;同一种通知新的替换旧的,点一下收起,
  对话框关闭时由 on_close 收掉(凭据加密完后自行关闭的那条路单独收)
- 删除不再使用的 shared::form_error
- 新增测试:主机、分组、端口转发、凭据四个对话框各弹一条错误通知,关闭对话框后消失
- CLAUDE.md 写明「表单的校验错误一律弹错误通知」
2026-10-01 15:47:24 +08:00
Xuz b97d5b493e 修正通知画在对话框背景底下:通知层的绘制优先级提到弹出层之下一级
- gpui-base 的对话框按 10 + 层号的优先级绘制,通知层原来是 1,一直被对话框背景盖住、
  发灰,点它也点到背景上;改为 POPUP_PRIORITY - 1,高过对话框、低于菜单和 tooltip
- 主机表单的错误通知点一下就收起
- 新增测试:点主机对话框的错误通知能点到它并收起(旧优先级下这个测试超时)
- CLAUDE.md 更正对话框绘制优先级的说法
2026-10-01 15:35:54 +08:00
Xuz d9fcb78ea4 主机对话框的校验错误改用错误通知弹出,不再显示在表单最下面
- 新增 shared::form_error_notification / dismiss_form_error:错误以通知弹出,元素沿用
  form-error 标识;同一种通知新的替换旧的,不叠;对话框关闭时一并收掉
- 主机表单去掉错误行和对应的状态
- 新建主机的校验测试补上:错误是一条通知、再点一次仍只有一条、保存后消失
2026-10-01 15:34:09 +08:00
Xuz 82fcdd4296 SFTP 标签栏右侧显示连接延迟,和终端标签一样
- SFTP 工作线程另起一个任务测往返:新连接建好就测,之后每 5 秒一次,传输进行中也照测;
  只在一次 ping 期间持有连接,客户端被换掉或断开就放手,「断开」照样立刻关掉连接
- 新事件 SftpEvent::Latency;SFTP 标签在已连接时于标签栏右侧显示,断开、重连时清掉
- Latency / LatencyLevel 从终端模块移到 connection.rs;测往返的函数提到 ssh/latency.rs,
  终端和 SFTP 共用;标签栏上的延迟文字抽成 shared::LatencyLabel
- 新增协议测试(连上后很快报出实测延迟)和 SFTP 标签栏的界面测试
2026-10-01 15:32:24 +08:00
Xuz 388a1aa68a UI 测试按功能拆成模块:tests/ui.rs → tests/ui/
- 仍是一个测试程序(tests/ui/main.rs,cargo test --test ui),每个文件单独成测试程序会再链接一遍 GPUI
- 按功能分 11 个模块:host_dialog、host_tree、connection、terminal、workspace、settings、
  sftp、transfer、forward、credential、update
- 两个以上模块共用的夹具和假实现放进 support/:mod.rs 是公共的 use、种子 id 和通用助手,
  其余按终端、SFTP、端口转发、测试连接、凭据分文件;只有一个模块用的留在那个模块里
- 纯搬移,测试逻辑不变:147 个测试名称与搬移前一致,全部通过
- CLAUDE.md 写明模块划分和新测试该放哪里,AGENTS.md、README 改路径
2026-10-01 14:53:33 +08:00
Xuz e8b04b1344 README 不再提退出时安装更新 2026-10-01 14:46:31 +08:00
Xuz 03dfd8d8eb 设置「关于」简化为「应用更新」三行,更新渠道可在运行时切换
- 「关于」页只剩「应用更新」一组:当前版本(下面是状态,右边是版本号和一个按钮:
  检查更新,或重启并安装… / 下载更新 / 前往下载页)、更新渠道、自动升级;
  构建号和平台挪到版本号的悬停提示里,去掉官网、更新日志链接和更新内容
- 更新渠道(稳定版 / Beta)存在 settings.json,默认是安装包自己的渠道;切换后丢掉
  已找到和已下好的版本,开着自动升级时立刻查新渠道
- 状态文案改成整句,去掉「上次检查」时间;设置页和更新对话框共用 UpdateStep,
  对话框的按钮改叫「重启并安装」
- 主机对话框「无密码」和「SSH 跳板」的说明文字缩短
- 新增切换渠道的 UI 测试,假更新源按渠道签发清单
2026-10-01 14:43:17 +08:00
Xuz 2dff7be7db 主机行的悬停提示显示备注
- 悬停主机行时,tooltip 在「用户@地址:端口」下面用小一号、淡一些的字显示备注;
  最宽 20 rem、自动折行,超过 6 行省略,没有备注的主机不变
- 新增 UI 测试:备注在地址下面,没有备注的主机不显示这一行
- CLAUDE.md 与 README 同步更新
2026-10-01 14:14:41 +08:00
Xuz ef83812f45 表结构发布前重构,「会话」在代码和数据库里统一改名为 Host
- 数据库升到第 13 版:主机的登录、连接方式、代理和备注合进 hosts 一行,只有一对多的跳板、书签和端口转发单独成表;全部表改为 STRICT,并用 CHECK 写明约束;用凭据的主机不再冗余存用户名,凭据外键不再级联,在用的凭据删不掉
- 表名 sessions → hosts、session_jumps → host_jumps,session_id → host_id,地址列 host → address;schema 比对去掉排版,以后加字段可以直接 ADD COLUMN
- 删除开发期的历史迁移代码:版本 1–12 的库直接拒绝打开、不动文件
- 代码里 Session / SessionId / SessionStore 等改为 Host*,模块 session/ → host/,Host.host → Host.address,菜单命令与界面元素 id 同步改名
- 外部 CLI 的参数、JSON 字段和错误码改为 host(host_not_found),协议版本升到 2
- CLAUDE.md、AGENTS.md、README 与 Agent skill 同步更新
2026-10-01 14:04:30 +08:00
Xuz f0690fe6b2 在线升级:后台检查、下载并在重启或退出时安装新版本,发布流水线与应用图标
- 新增 update 模块:从 dl.shellrs.com 取已签名的更新清单(minisign,签名绑定通道和版本),
  按大小和 SHA-256 校验安装包;下载可续传、可换镜像,走系统代理
- 按安装方式安装:macOS 整包交换并核对开发者签名,Windows 静默运行安装程序,Linux 覆盖 AppImage;
  开发构建和无法自更新的安装只提示前往下载页
- 设置新增「关于」:版本信息、检查更新、下载进度和「自动检查并下载更新」开关;
  新版本就绪后标题栏右上角提示,更新对话框写明重启会中断什么;退出时自动安装,新版本启动后提示已更新
- 数据库拒绝打开更新版本建的库,迁移已有的库之前先备份成 shellrs.db.v<旧版本>.bak
- 新增 release workflow 和 packaging 脚本:universal macOS 包签名公证、Inno Setup 安装程序、
  AppImage、上传 R2、生成并签名更新清单;新增 CHANGELOG.md
- 应用图标放在 assets/logo;开发模式下 macOS Dock 显示 logo,Windows exe 嵌入图标
- 修正 AppImage 里 shellrs 命令链接到临时挂载点;启动时刷新已安装但过期的 Agent skill
- 新增清单、验签、下载、各平台安装器和界面的单元测试与 UI 测试
2026-10-01 12:33:01 +08:00
Xuz e60275dfde 主机增加「备注」
- 主机对话框最后新增多行「备注」(回车换行,不提交对话框),记下机器的用途、负责人、
  到期时间之类;只保存在本地数据库,不进登录快照,修改备注不会重连
- 数据库升到第 12 版,新增 session_notes 表,只有填了备注的主机有一行;复制主机时备注一起复制
- 新增迁移、存取、复制和对话框的测试
2026-10-01 12:30:26 +08:00
Xuz f1485fe8f5 主机增加「连接方式」:直接连接 / SSH 跳板 / 代理连接
- 主机对话框「分组」下新增「连接方式」分段控件:SSH 跳板选已保存的主机、可多级(只走列出的链,跳板主机自己的连接方式不生效),代理连接支持 HTTP(CONNECT)和 SOCKS5,用户名和密码可选,代理密码进系统钥匙串
- SshConnector 按路由建立底层流:代理握手后的 TCP,或上一台跳板的 direct-tcpip 通道;跳板连接随最终连接一起关闭;跳板和代理的问答与报错写明是哪一台
- 数据库升到第 11 版,新增 session_jumps / session_proxies 两张表;删除被用作跳板的主机时留下「已删除的主机」占位,连接时报错,不悄悄改成直连
- 改跳板主机的地址或认证方式,经过它的主机也会重连;删除确认框写明有几台主机把它用作跳板
- 新增代理握手单元测试、跳板与代理的协议测试和对话框 UI 测试
2026-10-01 11:10:37 +08:00