docs: 刷新交接文档至 M4 完成态(供无上下文新会话续接)
- HANDOFF: 修正 git 说明(6 commits/artifacts 有意提交)、重排 §7 下一步(真机化为首要缺口)、 更新单测计数(50)、补 M4/tmux resize 代码地图 - CLAUDE.md: 单测计数 50、git 状态 - README: 全面重写——M0~M4 进展、实际包结构(TXCore/TXTransport/app,澄清计划包未成形)、 artifacts 有意提交、指向 HANDOFF/CLAUDE Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
57
README.md
57
README.md
@@ -4,33 +4,50 @@
|
||||
|
||||
核心选型:**libghostty**(终端引擎) · **mosh** · **Tailscale (tsnet 用户态)** · **tmux control mode hook**。
|
||||
|
||||
> 设计与决策见 `docs/`(若缺失,参见会话记忆 / 架构蓝图)。当前处于 **M0**(骨架 + 引擎 + libssh2 直连),走 SSH-first 路线。
|
||||
> **接手/继续开发先读 [`docs/HANDOFF.md`](docs/HANDOFF.md)**(项目全貌 + 里程碑 + 代码地图 + 下一步)与 [`CLAUDE.md`](CLAUDE.md)(构建/验证命令 + 环境约束 + 坑)。
|
||||
|
||||
## 仓库结构
|
||||
## 当前进展(2026-07-24,均 iOS 模拟器验证,未上真机/未签名)
|
||||
|
||||
- **M0** SSH 直连终端(libghostty 渲染/键盘/CJK、会话状态机+自动重连)✅
|
||||
- **M1** tsnet 用户态 + SSH-over-tsnet(fd 桥)✅
|
||||
- **M1.5 / tmux** control-mode 原生 tab + **多 pane 分屏 + iPadOS 动态 resize** ✅
|
||||
- **M2** mosh over tsnet(自编 `MoshCore.xcframework` + UDP relay)✅ 端到端验证
|
||||
- **M3** mosh 挂起→恢复 <3s(唤醒脉冲 + 会话状态机三相)✅
|
||||
- **M4** 安全:host key TOFU pin(MITM 防护)+ publickey 认证(SE 优先/软件回退)✅
|
||||
- **M5** 合规提审 ⏸️ 暂缓
|
||||
|
||||
四大核心需求(libghostty / tailscale / tmux / mosh)均已端到端验证。
|
||||
|
||||
## 仓库结构(实际)
|
||||
|
||||
```
|
||||
packages/ 纯 Swift SPM 包(源码构建,依赖只向下)
|
||||
TXCore 零依赖:模型 / 状态机 / 协议 / 纯算法(含 tmux control-mode 解析器)
|
||||
TXTransport SSH(libssh2) 引导 · mosh 驱动 · UDP relay · 连接编排 [M1+]
|
||||
TXTailnet tsnet 多节点 · DialerRouter · fd 桥 [M1+]
|
||||
TXTerminal GhosttyKit 包装:Metal 渲染 · 键盘 · IME [M0]
|
||||
TXSecurity Keychain / Secure Enclave / known_hosts [M4]
|
||||
TXPTY 本地 PTY(仅 macOS) [M4]
|
||||
TXUI SwiftUI 界面层 [M0+]
|
||||
apps/ Xcode app targets(XcodeGen 生成,iOS/iPadOS 合一 + macOS 独立)
|
||||
vendor/ 非 Swift 语言源(zig/go/c++),CI 产出 xcframework [M1+]
|
||||
artifacts/ 预编译 xcframework 落地(gitignore)
|
||||
packages/
|
||||
TXCore 零依赖纯逻辑:tmux 解析器/layout、SessionMachine(状态机+重连+mosh三相)、
|
||||
MoshConnect(解析)、SSH(线格式/ECDSA/host key)。50 单测。
|
||||
TXTransport SSHSession(libssh2)、MoshSession(mosh_main 桥)、Transport 协议;
|
||||
C shim: CSSH+CSSHCore(libssh2)、CMosh+MoshCore(mosh)。
|
||||
apps/TerminalX iOS app(XcodeGen 生成):SSHTerminalModel(编排)/ContentView/
|
||||
TmuxController(pane-per-surface 网关)/SigningKeyProvider/KeychainKnownHostsStore。
|
||||
vendor/ 非 Swift 依赖本地化(认证代理不支持 SwiftPM,全 vendor):
|
||||
libghostty-spm、libssh2、mbedtls、tsnet-bridge(Go)、mosh、protobuf。
|
||||
artifacts/ 预编译 xcframework(CSSHCore/TsnetBridge/MoshCore,**有意提交**,克隆即可构建)。
|
||||
```
|
||||
|
||||
## 开发
|
||||
> 计划中的 `TXTailnet/TXSecurity/TXPTY/TXUI` 未单独成包——tsnet 逻辑在 app 的 `TsnetManager`、
|
||||
> 安全在 app 的 `SigningKeyProvider`/`KeychainKnownHostsStore`、UI 直接在 app。macOS 本地 PTY 未建。
|
||||
|
||||
## 快速开始
|
||||
|
||||
```sh
|
||||
# M0:纯逻辑包,命令行即可测,无需 Xcode 工程
|
||||
cd packages/TXCore && swift test
|
||||
# 纯逻辑单测(无需 Xcode/模拟器)
|
||||
swift test --package-path packages/TXCore # 50 tests
|
||||
|
||||
# 构建 app(模拟器)——详见 CLAUDE.md
|
||||
cd apps/TerminalX && xcodegen generate --spec project.yml
|
||||
xcodebuild -project TerminalX.xcodeproj -scheme TerminalX \
|
||||
-destination 'platform=iOS Simulator,id=<UDID>' -clonedSourcePackagesDirPath /tmp/tx-spm build
|
||||
```
|
||||
|
||||
## 工具链要求
|
||||
## 工具链
|
||||
|
||||
- Xcode 26+ / Swift 6.x(M0)
|
||||
- Go + gomobile(M1,tsnet)
|
||||
- CMake + Ninja + zig(M1/M2,vendor 构建)
|
||||
Xcode 26 / Swift 6.3 · Go 1.26(`~/.local/go`)+gomobile · CMake+Ninja+zig(vendor 构建)。构建命令与环境约束见 `CLAUDE.md`。
|
||||
|
||||
Reference in New Issue
Block a user