Commit Graph
7 Commits
Author SHA1 Message Date
Xuz 4badde667f SFTP 双栏对标 WinSCP:两行工具栏、WinSCP 列、多选、右键菜单、文件操作与下载 2026-09-25 01:54:32 +08:00
Xuz 1af8d0df97 新建、编辑会话增加测试连接功能 2026-09-24 20:55:38 +08:00
Xuz 47b2efdcc7 调整会话树展示并持久化分组展开状态 2026-09-24 18:55:37 +08:00
Xuz b78aa7f937 实现会话树拖动排序并调整选中与连接交互 2026-09-24 18:27:47 +08:00
XuzandClaude Opus 5 321a65d842 探测主机操作系统并用它标记会话列表
每次连接成功后探测一次远端系统,会话树前面的图标换成对应的发行版
logo;没探测过或探测失败就画会话名的第一个字。

- 探测走一条独立的 exec 通道,跑 `uname -s; cat /etc/os-release`,
  在主 IO 循环里和 shell 输出一起轮询,终端不会为此多等一个往返。
  POSIX 那条毫无输出时(Windows 的 shell 就是这样)再问一次
  `cmd /c ver`,仍认不出就放弃,会话保留原来的标记。
- 认 14 个发行版加通用 Linux、macOS、Windows 和三个 BSD。派生发行版
  靠 ID_LIKE 兜底,Linux Mint 因此显示 Ubuntu。
- 结果沿 TerminalTransportEvent::HostOsDetected → 引擎 → TerminalView
  → TerminalPanel → 工作区 → SessionStore::set_host_os 这条链走,和
  prompt 是同一套管线。os 列由 set_host_os 单独写,update_session 不
  碰它,和 last_connected_at 一样。
- 图标是 assets/icons/os/ 下 20 个单色 SVG,取自 Simple Icons(CC0);
  Windows 那个是自己画的四格,Simple Icons 已把微软图标下架。
- 加一步 V3 迁移补 os 列,这样已有的本地库不用删。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Ub6VpmWWAJB15MnYLT9G5
2026-09-12 12:36:20 +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