 XuzandClaude Opus 5.5
|
9799f88ade
|
版本号改为 0.1.8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-10 23:22:26 +08:00 |
|
 XuzandClaude Opus 5.5
|
026e0d44d8
|
版本号改为 0.1.8-beta.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-10 22:34:46 +08:00 |
|
 XuzandClaude Opus 5.5
|
5fdfce239a
|
版本号改为 0.1.7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-10 15:18:22 +08:00 |
|
 XuzandClaude Opus 5.5
|
3a9e72eab3
|
版本号改为 0.1.7-beta.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-10 13:47:24 +08:00 |
|
 XuzandClaude Opus 5.5
|
e1600ce05c
|
SFTP 本地目录列表在 Windows 上列出各个驱动器
Windows 上每个盘是一个独立的根,目录列表原来只有当前路径的各级和主目录、桌面、文稿、下载,
离不开起始的盘(只能在「打开目录/书签」里手动输入 D:\)。现在「位置」里按 WinSCP 的样子
列出所有盘符:「C: 本地磁盘」「E: 可移动磁盘」「Z: 网络驱动器」「F: CD 驱动器」。
盘符用 GetLogicalDrives 和 GetDriveTypeW 取,不读卷标。位置改在后台随每次读本地目录
一起重新取,所以新插上的 U 盘刷新一下就出现,也不在 UI 线程上碰网络驱动器。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-10 13:46:54 +08:00 |
|
 XuzandClaude Opus 5.5
|
5be3f56b0c
|
版本号改为 0.1.7-beta.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-10 11:52:19 +08:00 |
|
 XuzandClaude Opus 5.5
|
63d1e4281c
|
版本号改为 0.1.6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-08 18:23:54 +08:00 |
|
 XuzandClaude Opus 5.5
|
2df67bc639
|
版本号改为 0.1.6-beta.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-08 16:16:42 +08:00 |
|
 XuzandClaude Opus 5.5
|
2dd1f1995a
|
版本号改为 0.1.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-08 00:08:42 +08:00 |
|
 XuzandClaude Opus 5.5
|
1c855f1508
|
多语言基础设施:rust-i18n 接入,界面语言默认跟随系统
文案放进 locales/<模块>.yml,经 crate::i18n 的 t! / tn! 取用;启动时先按设置定语言,
改设置时实时切换并发出 UiLocale。守卫测试检查两种语言齐全、占位一致、没有遗漏和死键。
UI 测试夹具固定中文并隔离本线程的语言。共用件(shared/)先转换。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-07 21:24:06 +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
|
a957b3b5a3
|
版本号改为 0.1.4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-07 14:12:34 +08:00 |
|
 XuzandClaude Opus 5.5
|
7c9501e4cb
|
终端:程序开了同步更新却没结束时,到点照样画出来,不再冻住屏幕
- 程序用 \e[?2026h 开始一帧、却没发 \e[?2026l 结束(在一帧中间被杀掉、
崩溃,连接断在一帧中间,或 cat 了含这段字节的文件)时,后面的输出全被
攒着不画:屏幕冻住、敲字没回显,要等攒够 2 MiB 或下一个程序再结束一次
同步更新才恢复。
- 解析线程等输出时带着同步更新的截止时间(150 ms,同 alacritty),到点
就把攒下的画出来;输出一直不停时在处理前补查一次。
- 进程退出、连接出错时先结束同步更新,再追加「进程已退出」「终端错误」
的提示,断在一帧中间也看得到那一帧和断开的原因。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-06 18:10:04 +08:00 |
|
 XuzandClaude Opus 5.5
|
5f588a4a18
|
终端关键字高亮:按规则给匹配的文字上色,可选匹配时通知
- 规则是关键字(smart case,同查找)或正则表达式,加颜色(主题的红、黄、
绿、青、蓝、紫)和加粗,在所有终端里显示,回滚历史里的也一样;重叠时
靠前的规则优先。
- 只改显示:每帧对可见行把折行接成逻辑行再匹配,不改服务器的输出,复制
出的文字不变;窗口缩放重排、折成两行的词都照样上色。用 regex crate
匹配,不用 alacritty 的 RegexSearch(编不了 \b,^ 只认第一行)。
- 勾了「匹配时通知」的规则在看不到那个终端时提醒,同响铃;解析线程在
换行前读完整的一行,同一终端 10 秒一次,反复重画的同一行 5 分钟一次。
- 全屏程序(vim、less、top、tmux)里不高亮也不通知。
- 设置左栏新增「关键字高亮」,排在「终端」后面;首次预置 ERROR 红粗、
WARN 黄、IPv4 蓝三条示例。settings.json 里读不了的规则单条丢掉,不让
整个设置回退成默认值。
- 光标闪烁不再每 500 ms 取一整份终端快照。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-06 17:54:04 +08:00 |
|
 XuzandClaude Opus 5.5
|
09ccaa3036
|
版本号改为 0.1.3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-06 16:23:06 +08:00 |
|
 XuzandClaude Opus 5.5
|
c679d9d8a0
|
SFTP 加内置编辑器:双击文件在编辑器标签里编辑,⌘S 原地写回
SFTP 里双击、回车、F4 或右键「编辑」一个文件(远程和本地都行),在中间区的「编辑器」标签里打开;
「新建 › 文件…」建好后也直接打开。同一个文件只开一个标签。先读后开:超过 5 MB、二进制或不是
UTF-8 的文件只弹说明,远程的可以改用「下载…」。
远程文件经打开它的 SFTP 标签的连接读写,不另起登录。保存是原地改写(截断后写原文件),所有者、
权限和链接都不变;保存前核对大小和修改时间,被别人改过就先问「覆盖」。BOM 和 CRLF 原样写回。
常见的约 15 种语言有语法高亮(gpui-kit 的 tree-sitter 特性;SQL 的语法库要求 cc ~1.2,所以
Cargo.lock 里 cc 退到 1.2.67)。
关闭有修改的标签问「保存 / 放弃修改 / 取消」;批量关闭、关 SFTP 标签、⌘Q(Windows / Linux 还有
窗口的关闭按钮)有未保存的文件时问一次。状态栏显示光标位置和编码、换行方式。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-05 21:37:26 +08:00 |
|
 XuzandClaude Opus 5.5
|
09dc45e7a2
|
版本号改为 0.1.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-04 19:24:36 +08:00 |
|
 XuzandClaude Opus 5.5
|
f1a7c68907
|
版本号改为 0.1.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 17:51:28 +08:00 |
|
 XuzandClaude Opus 5.5
|
6dcd084840
|
版本号改为 0.1.0:第一个正式版
更新日志的 0.1.0 一节补上右侧栏和从堡垒机打开;README 不再说目前只有 Beta 版。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 17:09:33 +08:00 |
|
 XuzandClaude Opus 5.5
|
ac6f8eaeba
|
版本号改为 0.1.0-beta.9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 15:44:49 +08:00 |
|
 XuzandClaude Opus 5.5
|
fd34edfc1c
|
版本号改为 0.1.0-beta.8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 13:40:05 +08:00 |
|
 XuzandClaude Opus 5.5
|
67d36c8210
|
版本号改为 0.1.0-beta.7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 13:03:48 +08:00 |
|
 XuzandClaude Opus 5.5
|
269fab6550
|
版本号改为 0.1.0-beta.6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-03 11:45:10 +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
|
e27bb0cb63
|
版本号改为 0.1.0-beta.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 20:38:29 +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
|
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
|
2026-10-01 21:02:31 +08:00 |
|
Xuz
|
e1a74faa53
|
版本号改为 0.1.0-beta.2:beta.1 打包失败、没有发布,第一个测试版改用这个版本号
|
2026-10-01 20:08:02 +08:00 |
|
Xuz
|
0fbcb7adbf
|
版本号改为 0.1.0-beta.1,准备第一个测试版
|
2026-10-01 19:34:32 +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
|
f1485fe8f5
|
主机增加「连接方式」:直接连接 / SSH 跳板 / 代理连接
- 主机对话框「分组」下新增「连接方式」分段控件:SSH 跳板选已保存的主机、可多级(只走列出的链,跳板主机自己的连接方式不生效),代理连接支持 HTTP(CONNECT)和 SOCKS5,用户名和密码可选,代理密码进系统钥匙串
- SshConnector 按路由建立底层流:代理握手后的 TCP,或上一台跳板的 direct-tcpip 通道;跳板连接随最终连接一起关闭;跳板和代理的问答与报错写明是哪一台
- 数据库升到第 11 版,新增 session_jumps / session_proxies 两张表;删除被用作跳板的主机时留下「已删除的主机」占位,连接时报错,不悄悄改成直连
- 改跳板主机的地址或认证方式,经过它的主机也会重连;删除确认框写明有几台主机把它用作跳板
- 新增代理握手单元测试、跳板与代理的协议测试和对话框 UI 测试
|
2026-10-01 11:10:37 +08:00 |
|
Xuz
|
ee488309f3
|
密钥凭据可粘贴和生成私钥,状态栏显示终端尺寸
- 密钥凭据的私钥分「本机文件 / 粘贴 / 生成新密钥」三种来源,仍是一个对话框;
生成支持 Ed25519 与 RSA 4096,可用口令加密,对话框里显示并可复制公钥
- 粘贴和生成的私钥写成数据目录 keys/ 下的 0600 文件,凭据引用其路径;
再次粘贴或生成时原地覆盖,换掉或删除凭据时随之删除,用户自己的私钥文件从不改动
- 空列表和空白处右键新增「生成密钥…」,密钥凭据右键新增「复制公钥」
- 窗口状态栏右侧由写死的光标位置改为当前终端的尺寸(列×行),
SFTP 标签、开始页和设置页不显示
- UI 测试的基础夹具关闭动画,修正对话框滑入导致的偶发失败
|
2026-10-01 09:06:31 +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 |
|
Xuz
|
9704a8cc20
|
新增外部 CLI:给 AI Agent 用的 shellrs 命令与设置页「外部 CLI」
- shellrs list / exec / upload / download:经本机套接字交给正在运行的 ShellRS 执行,命令本身不接触密码、钥匙串和数据库
- 设置 → 外部 CLI:启用开关(默认关)、把 shellrs 链接进 PATH、为通用 Agent / Codex / Claude Code / OpenCode 安装 skill
- exec 非交互登录,陌生主机或缺少密码直接失败;读到通道关闭为止,退出码透传远程命令
- 传输复用 SFTP 引擎,无人值守地回答提问;按 scp 规则解析目标并保留可执行位
- 套接字 0600 并校验对端 uid;开关关闭时仍监听但拒绝请求
- 修复 SFTP 批次准备失败时不发送 Idle 的问题
|
2026-09-25 13:11:23 +08:00 |
|
Xuz
|
ead3712045
|
会话增加对外标识 public_id,右键菜单支持「复制 ID」
- sessions 表加 public_id 列(schema v7,唯一索引),16 位字母数字随机串,由 rand 生成
- 新建、复制会话时生成且不与已有的重复;编辑不变,删除后不复用;老库和手工插入的行在打开时补上
- 会话树和最近连接的右键菜单新增「复制 ID」,复制到剪贴板并通知
|
2026-09-25 11:30:53 +08:00 |
|
Xuz
|
e3b5e20efe
|
程序改名为 ShellRS,命名空间改为 shellrs
- 界面显示名(窗口标题、标题栏、文案)改为 ShellRS
- crate、二进制、动作命名空间、线程名改为 shellrs
- 数据目录、数据库文件、SHELLRS_DATA_DIR、钥匙串服务名改为 shellrs;程序尚未发布,不保留旧名兼容代码
|
2026-09-25 10:49:37 +08:00 |
|
Xuz
|
5b6eee0b71
|
新增设置:外观(界面语言、应用外观)与终端字体配置,最近连接支持右键菜单
- 会话列表底部新增「设置」按钮(⌘, / Ctrl+,),在中间区打开单例的「设置」标签页
- 设置页用 gpui-kit 的 Settings 组件分两栏:左边分类(外观、终端,可搜索),右边设置分组
- 设置写穿到数据目录的 settings.json,写失败或读不出时弹通知;由工作区统一应用到窗口
- 外观 → 常规:界面语言(跟随系统 / 简体中文 / English,目前只切换 gpui-kit 自带文案)、应用外观(深色 / 浅色 / 跟随系统,随系统切换);标题栏主题按钮改为写这一项
- 终端 → 字体配置:字体(仅列出已安装的等宽字体,后台扫描)、字号、行高,默认值与原来一致,立即作用于已打开的终端;下方按终端排法预览数字、符号和中文
- 最近连接列表的主机支持右键菜单,与会话树共用同一个会话菜单
|
2026-09-25 10:00:20 +08:00 |
|
Xuz
|
4badde667f
|
SFTP 双栏对标 WinSCP:两行工具栏、WinSCP 列、多选、右键菜单、文件操作与下载
|
2026-09-25 01:54:32 +08:00 |
|
Xuz
|
23da7a6724
|
实现真实 SFTP 上传与 WinSCP 式断点续传
|
2026-09-16 10:32:50 +08:00 |
|
 XuzandClaude Opus 5
|
f0d66c4f8b
|
用系统钥匙串保存 SSH 密码与私钥口令
会话对话框新增密码字段和私钥口令字段,填一次之后连接就不再弹认证框。
秘密存进系统钥匙串(keyring 4:macOS Keychain / Windows 凭据管理器 /
Secret Service),数据库里依然不出现任何秘密。
- 新增 secrets 模块:SecretRef 按 user@host:port 归属密码、按文件路径
归属私钥口令,所以会话改名、复制都不丢,同一把钥匙只问一次。
SecretStore 的方法全是阻塞的,只能在后台执行器或传输层工作线程上调用。
- SSH 认证在弹框前先查钥匙串;被服务器拒绝时退回弹框并说明原因,条目
保留不动,因为那是用户在对话框里填的。
- 写入的唯一入口是 SessionStore::save_secret,失败沿用 PersistFailed。
会话换端点或被删除时,用 password_in_use 判断旧条目是否还有人用。
- 对话框的预填是异步的,*_loaded 置上之前空字段不算「用户清空了」,
预填还没回来就点保存不会误删。
- 修正 CLAUDE.md / AGENTS.md 里「SSH 仍是 mock」的过期描述。
测试服务端原先对错误密码返回 UnsupportedMethod,russh 会因此摘掉密码
方式,真实服务器不是这个行为;改成 OpenSSH 那样拒绝但保留密码方式。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Ub6VpmWWAJB15MnYLT9G5
|
2026-09-12 10:23:22 +08:00 |
|
Xuz
|
05e05709f0
|
实现真实 SSH 客户端并支持多连接
|
2026-09-12 09:27:14 +08:00 |
|
 since2006andClaude Opus 5
|
6bec390ecd
|
用 SQLite 持久化会话与分组
会话和分组不再只活在进程里。`SessionStore` 带 `Context` 的 mutator 现在
「改内存 → 写库 → notify」,落到 `~/Library/Application Support/shellr/
shellr.db`(`SHELLR_DATA_DIR` 可覆盖目录)。内存仍是唯一事实来源:写库
失败只丢持久化、不丢用户的编辑,store 发 `PersistFailed`,工作区据此弹
错误通知,绝不静默吞掉。
分组从只读的种子数据变成真正的配置项:任意层级嵌套,可新建 / 重命名 /
改上级 / 删除,删除按外键 `ON DELETE CASCADE` 连同子分组和里面的会话一起
带走,确认框写明数量。会话因此可以不属于任何分组,渲染在树的根层级——
首次启动是空库,第一个会话必须能在还没有任何分组时建出来。
- rusqlite 0.40(bundled):同步写、WAL、外键、`PRAGMA user_version` 迁移
- `app/paths.rs` 解析数据目录;`dirs` 6 已在依赖树里,不增加编译量
- `Workspace::new` 改为外部注入 store:`main.rs` 从库加载,测试注入 seed
- `ConnectionState` 不入库;`last_connected_at` 入库,最近连接跨启动保留
- 新增 5 个 UI 测试,其中一个走真实写路径后用第二个连接读回同一个文件
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JcMDBhETbHS7rEucBMAVvv
|
2026-09-11 22:32:10 +08:00 |
|
Xuz
|
3bceb8879d
|
初始化 shellr 项目
|
2026-09-11 20:41:07 +08:00 |
|