Commit Graph
16 Commits
Author SHA1 Message Date
XuzandClaude Opus 5.5 e09adeefb7 外部 CLI 新增 exec --terminal:在已打开的终端里执行命令
只允许登录一次的堡垒机(外部连接)上,exec 重新登录会被拒绝,另开通道又会结束会话。
--terminal 把命令打进这台主机在 ShellRS 里已打开的远程终端:先发 Ctrl-C,探测出
交互 shell(bash、dash、busybox ash)后输入命令行,经 OSC 标记取回输出、退出码和
执行上下文(--json 的 context)。不做忙碌检测,只拒绝全屏程序和同一终端已有一次运行。
外部连接上普通 exec 登录失败时,说明里提示改用 --terminal。

shells.yml 在 Docker 里对 bash 4.2–5.2、dash、busybox ash 跑真实终端测试。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:16:30 +08:00
XuzandClaude Opus 5.5 cd3d41c496 接入 Aptabase 匿名使用统计,「设置 › 关于」新增开关
- 自己调 Aptabase 的批量接口 POST /api/v0/events(没有纯 Rust SDK)。只发版本、系统名和版本、CPU 架构、设置快照(取值固定,主机等数量只报档位)和功能使用次数;不发主机、凭据、命令、文件名、路径,也没有任何标识
- 四种事件:app_installed(首次启动,送达后记进 analytics.json)、app_started、app_active(窗口到前台且当天 UTC 还没报过)、usage(43 项功能计数,从第一次使用起满 4 小时汇总一条)
- 不用定时器:只在启动、窗口激活、用到功能、改设置时动作,满期的汇总和失败重试都等下一个信号;计数存盘,退出不等网络、不丢数据
- 内网断网不受影响:联网、系统检测、写文件都在后台线程,连接 5 秒、整体 15 秒超时,失败不提示,重试从 1 分钟起翻倍、最长 6 小时,4xx 不重试
- 「设置 › 关于」新增「隐私」组的「发送匿名使用统计」,默认开,关掉清空本机攒下的计数
- 只有发布构建发;开发构建设 SHELLRS_ANALYTICS_DEBUG=1 才发调试事件,汇总周期 1 分钟、失败 10 秒后重试
- 手册新增「隐私」一节列出全部上报内容,README 同步

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:04:38 +08:00
XuzandClaude Opus 5.5 7e32ac7033 外部 CLI 补齐主机与凭据管理和目录同步,命令写法对齐 termark
- 新增 shellrs hosts / credentials 的 list、show、create、update、delete,create / update 从标准输入读 JSON,show 的输出可以直接交回 update
- 校验和文案同对话框(HostDraft::validated),分组路径不存在就逐级新建;改了地址、端口或用户时保存的密码跟着搬
- 秘密只写不读:密码、口令、私钥进钥匙串或 keys/,show 只说有没有保存
- hosts delete 遇到有打开标签的主机报 host_in_use,--force 才关标签;删凭据时用它的主机改回自己登录
- 改动经服务端队列交给 UI 线程逐条执行,超时只算排队;写库和钥匙串失败报 save_failed
- 新增 shellrs sync:本地目录同步到远程,没变的文件跳过,--delete 删远程多余项(不删 .filepart 和备份,本地读不了的目录不清理)
- 去掉顶层 shellrs list,统一用 shellrs hosts list;skill、手册、README 同步更新

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:11:40 +08:00
XuzandClaude Opus 5.5 36293e8959 设置新增「键盘快捷键」:查看、改绑、禁用、恢复默认
- 设置左栏「关键字高亮」下面新增「键盘快捷键」,通用、标签、终端、
  编辑器四组主要功能。点按键后按下新组合即换上,Esc 放弃;每行可禁用、
  恢复默认。没有修饰键的键,以及同一处已被占用或输入框等内置功能使用
  的组合会被拒绝,并提示被谁占用。
- 新增标签切换:下一个 / 上一个标签(⌘⇧] / ⌘⇧[,其他平台 Ctrl+Tab /
  Ctrl+Shift+Tab),切换到第 1…9 个标签(⌘1…⌘9,Alt+1…9)。
- ⌘= / ⌘- / ⌘0 在终端里调终端字号并记进设置,在终端外仍缩放界面。
- 终端字号范围改为 10–28。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:16:50 +08:00
XuzandClaude Opus 5.5 e9700d0e32 设置新增「应用 › 窗口」:记住窗口大小和位置
- 设置左栏在「关于」上面新增「应用」,「窗口」组两个开关,默认都打开:
  记住窗口大小(含最大化状态)、记住窗口位置(连同所在屏幕),下次启动
  时生效。
- 窗口移动、缩放停下后记进数据目录的 window.json,退出时再记一次。
- 恢复时那块屏幕不在了、或窗口大半在屏幕外,就放在屏幕中间;比屏幕大
  就缩到能放下。全屏不记,按退出全屏后的大小恢复。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 23:17:55 +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 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
Xuz 3d6801d469 README 改写成开源首页:中英文两版、真实窗口截图(主界面深浅两色、分栏、SFTP、端口转发),原来的逐项说明、发布和开发说明移到 docs/;以 MIT OR Apache-2.0 双许可发布 2026-10-01 23:36:05 +08:00
Xuz e887ffc66b Windows 上 SFTP 本地面板的路径不再带 \\?\ 前缀:读目录和上传的来源改用 dunce 规范化,Windows CI 加跑本地读目录的测试 2026-10-01 21:23:45 +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 a9a7e7087f 发布流程:建 DMG 时显式给出映像大小和 HFS+ 文件系统,失败重试;hdiutil 自己估的大小装不下应用 2026-10-01 19:59:33 +08:00
Xuz 533d7aa3a1 更新清单里给每个包加上 GitHub Release 作为第二个下载地址 2026-10-01 19:04:15 +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
XuzandClaude e1c11df792 Windows CI:给以冒号结尾的测试命令加引号,修复 YAML 语法错误
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-25 14:04:36 +08:00
XuzandClaude d6e1ed69ec 外部 CLI 支持 Windows:命名管道、独立控制台程序 shellrs-cli 与用户 PATH 安装
- 新增 shellrs-cli 二进制(各平台都构建);Windows 发布版的 GUI 改为
  windows_subsystem = "windows",命令由 shellrs-cli.exe 承担
- Windows 上经命名管道 \\.\pipe\shellrs-cli-<数据目录散列> 与应用通信:
  DACL 只允许当前用户、拒绝远程客户端、首个实例独占名字;客户端以
  SECURITY_IDENTIFICATION 打开并校验管道属主,防止抢注冒充
- 设置 → 外部 CLI 在 Windows 上把 shellrs-cli.exe 复制成
  %LOCALAPPDATA%\ShellRS\bin\shellrs.exe 并加入用户 PATH;旧副本启动时
  自动更新,正在使用的副本也能替换;新增「已安装旧版本」「不在 PATH」
  「找不到 shellrs-cli.exe」状态
- 客户端拆成按平台的 connect 与共用的读帧循环;进度行改用空格覆盖;
  Windows 控制台上非法 UTF-8 输出替换为 U+FFFD;命令文本去 BOM、CRLF 转 LF
- 新增 tests/cli_bin.rs 进程级端到端测试与 Windows CI 工作流
- SKILL.md 增加 Windows / PowerShell 说明,README、CLAUDE.md 同步

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-25 14:00:21 +08:00