连接与主机
架构
Terminality 把连接意图(打开什么)与主机身份(连接到哪里)分开。界面从不拼装协议参数;Rust 根据类型化描述符生成不透明的连接 ID。

快速连接选择器 → 连接库 → 主机目录
(临时) (持久) (加密)快速连接选择器
标签栏中的 + 打开由 Rust 驱动的选择器:
- 最近:最新的三个有效连接。
- 更多:展开三条以外的历史。
- 全部:按稳定的
QuickConnectionKind注册表分组显示完整目录。 - 机器发现:仅运行时存在的 OrbStack 虚拟机列表,从不自动导入主机。
选择器会约束在可见窗口内,根据空间选择弹出方向,捕获键盘焦点,并在关闭后恢复焦点。移动端把“全部”呈现为模态底部表单中的触摸手风琴。
选择器不变量:
- 每个选择器都观察共享主机目录与连接历史;主机变更会立即出现。
- 发布的选择携带不透明
connectionId,而不是主机或传输参数。 - 只有
⌘T使用的addLocalTerminalTab可以直接创建标签页;其他流程都经过 QCS。
连接库
通过“文件 → 连接库”或 ⌘⇧H 打开原生对话窗口。
- 搜索、创建、编辑与软删除主机档案。
- 每个主机发布自己可用的连接类型,React 不重复实现资格逻辑。
- SSH 主机提供 SSH、SFTP 与 Omini。
- FTP 主机是独立记录,不能用作 SSH 跳板。
- RDP 主机拥有独立端点、凭据与证书策略。
所有主机记录在写入 SQLite 前都会使用 XChaCha20-Poly1305 加密。身份与版本规则留在 Rust,公开绑定只提供受约束的创建、更新与删除命令。
连接类型
| 类型 | 状态 | 窗格界面 |
|---|---|---|
| 本地终端 | ✓ 完成 | localTerminal |
| tmux 附加 | ✓ 完成 | localTerminal |
| SSH 终端 | 传输里程碑 | sshTerminal |
| SFTP 文件 | 传输里程碑 | sftpFiles |
| FTP 文件 | 传输里程碑 | ftpFiles |
| Omini | 后端边界就绪 | 终端 + 文件 + 指标 |
| RDP | ✓ 完成 | remoteDesktop |
机器发现
机器发现只存在于运行时,并且仅在打开 QCS 时刷新。macOS 适配器会先检查 OrbStack 是否正在运行,再执行有上限、有超时的 JSON 列表命令;它不会启动、停止或修改虚拟机。