- SessionMachine 加 mosh 三相(moshActive/moshParked/moshResuming)+看门狗兜底, mosh 接管即拆 SSH、后台冻结不重建、前台唤醒脉冲等 SSP 续(+5 单测) - bridge.go: Node.WakeUp()(tsnet InjectEvent+MagicSock.Rebind/ReSTUN) + MoshRelay.Rebind()(同端口重开 loopback、泵按 socket 生成容错) - iosclient.cc: g_mosh_last_heard 探针(导出 mosh_last_heard_ms) + SIGCONT 全屏重绘 - MoshSession: nudge()(SIGCONT) + lastHeardMs();SSHTerminalModel 前台脉冲三连 + healthy 轮询 + beginBackgroundTask;URL scheme 供无头前台唤醒 - 验证(vohive-vm over tsnet):15s 冻结→前台 wake pulse→1.3s recovered,<3s Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
50 lines
1.6 KiB
YAML
50 lines
1.6 KiB
YAML
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
|
||
# 部分 Info.plist 基底(仅 URL scheme,供无头验证前台唤醒);生成键合并其上。
|
||
INFOPLIST_FILE: TerminalX-Info.plist
|
||
TARGETED_DEVICE_FAMILY: "1,2"
|
||
INFOPLIST_KEY_UILaunchScreen_Generation: YES
|
||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: YES
|
||
# M0 渲染自检无需签名(仅模拟器);真机/上架在 M4/M5 配置。
|
||
CODE_SIGNING_ALLOWED: NO
|