feat: 修复终端换行错乱根因 + 顶带重设计 + 移除移动端分屏
- 换行错乱根因:tmux 客户端格子改以 ghostty 实测为权威(像素除法 偏大 1 行/列 → 远端按更宽排版、本地自动换行掉字符),单 pane 实测 格子直发 refresh-client;kickoff 用 raw surface 真实格子;顶栏 格子数 tmux 模式读 clientGrid(模拟器连本机 sshd 端到端验证) - 顶带落地为真实 chrome 行:✕/⌄ 独立按钮组 + 弱化标题 + TmuxWindowTabGroup window tab 组,pane 不再被悬浮胶囊遮内容 - 放弃移动端分屏:删 SplitMenu/分屏入口,tmux window 切换上移顶部 tab,侧边栏改列活动会话;底部动作条合并状态行 - Info.plist 补 NSLocalNetworkUsageDescription(LAN 直连必需, 缺失时 socket 静默超时) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -225,14 +225,6 @@ final class TerminalSession: ObservableObject, Identifiable {
|
||||
|
||||
/// 假会话注入的 tmux 概览(真实会话走 `tmuxSummary` 的派生分支)。
|
||||
private var injectedTmuxSummary: TmuxSummary?
|
||||
/// 假会话注入的 tmux 会话列表(分屏菜单的 detached 行;真实会话走 controller.sessions)。
|
||||
private(set) var injectedTmuxSessions: [TmuxSessionInfo] = []
|
||||
|
||||
/// 分屏菜单的候选会话:真实会话用 controller 的 list-sessions 结果,假会话用注入值。
|
||||
var tmuxSessionList: [TmuxSessionInfo] {
|
||||
if let c = tmuxController, !c.sessions.isEmpty { return c.sessions }
|
||||
return injectedTmuxSessions
|
||||
}
|
||||
|
||||
/// tmux 概览:假会话用注入值,真实会话从 controller 现算。
|
||||
var tmuxSummary: TmuxSummary? {
|
||||
@@ -579,10 +571,9 @@ final class TerminalSession: ObservableObject, Identifiable {
|
||||
/// 只为让首页会话卡/轨道头像/状态徽标有内容可截图对拍(见 UIPreviewFixture)。
|
||||
/// 走 `gate` 而非 `session.receive`,故 surface 未 attach 时会先缓冲、就绪后 flush。
|
||||
func injectFixture(host: SavedHost, lines: [String], link: LinkState, mosh: Bool,
|
||||
tmux: TmuxSummary? = nil, tmuxSessions: [TmuxSessionInfo] = []) {
|
||||
tmux: TmuxSummary? = nil) {
|
||||
isSyntheticFixture = true
|
||||
injectedTmuxSummary = tmux
|
||||
injectedTmuxSessions = tmuxSessions
|
||||
self.host = host
|
||||
connectionTitle = host.name
|
||||
isLive = true
|
||||
|
||||
Reference in New Issue
Block a user