初始提交:terminalX 可运行态(M0/M1/M1.5 已真机验证)

- M0: libghostty SSH 终端(渲染/输入/连接)+ 白屏修复(OutputGate) + 会话状态机/自动重连
- M1: tsnet 用户态组网 + SSH-over-tsnet(fd 桥),shell 级真机验证;R5(Go+gvisor+C+++Swift 同进程) retire
- M1.5: tmux -CC 原生 tab(MVP)
- 结构: packages/(TXCore·TXTransport), apps/TerminalX, vendor/(libghostty-spm/libssh2/mbedtls/tsnet-bridge), artifacts/
- 文档: CLAUDE.md + docs/HANDOFF.md(新会话入口)
- 环境: 认证代理→依赖 vendor 本地化;Go 在 ~/.local/go;仅模拟器/未签名
- 待续: M2 mosh, tmux 多 pane, M4 安全(host key/SE)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
kid
2026-07-24 10:20:46 +08:00
commit aa92d0e676
2761 changed files with 803505 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
name: TerminalX
options:
bundleIdPrefix: ai.athom.terminalx
deploymentTarget:
iOS: "17.0"
createIntermediateGroups: true
packages:
# 本地 vendored构建环境的认证代理不被 SwiftPM 支持,改用 local-path 零网络)。
GhosttyKit:
path: ../../vendor/libghostty-spm
TXTransport:
path: ../../packages/TXTransport
TXCore:
path: ../../packages/TXCore
targets:
TerminalX:
type: application
platform: iOS
deploymentTarget: "17.0"
sources:
- path: iOS
dependencies:
- package: GhosttyKit
product: GhosttyTerminal
- package: GhosttyKit
product: GhosttyTheme
- package: TXTransport
product: TXTransport
- package: TXCore
product: TXCore
# gomobile bind 产出的 tsnet 桥接(动态 framework需嵌入+签名拷贝)。
- framework: ../../artifacts/TsnetBridge.xcframework
embed: true
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: ai.athom.terminalx
MARKETING_VERSION: "0.0.1"
CURRENT_PROJECT_VERSION: "1"
SWIFT_VERSION: "6.0"
GENERATE_INFOPLIST_FILE: YES
TARGETED_DEVICE_FAMILY: "1,2"
INFOPLIST_KEY_UILaunchScreen_Generation: YES
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: YES
# M0 渲染自检无需签名(仅模拟器);真机/上架在 M4/M5 配置。
CODE_SIGNING_ALLOWED: NO