feat: 真实 PTY resize 控制通道修复终端错位 - #103
Closed
sakuradairong wants to merge 10 commits into
Closed
Conversation
fix: prevent duplicate file deployment races
Register deployments before asynchronous archive validation so cancellation remains effective, and remove claimed upload directories when validation fails.
Add SteamCMD branch discovery and deployment version selection, secure credential handling, instance operation locks, and reconnectable background update progress. Verified with server/client TypeScript checks and a real anonymous SteamCMD branch query for AppID 896660.
Contributor
Author
|
Superseded by a clean branch rebuilt on the latest upstream main for the terminal resize fix. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
现有终端方案(Xterm.js)在窗口/布局变化后容易发生错位(已确认错位情况 A):旧实现以估算字符宽度 + setTimeout 散落 resize + socket 消息方式同步尺寸,未真实作用于 PTY winsize。
方案
保留 Xterm.js,不更换终端库;改为真实 PTY resize 控制通道:
297277624、commit09fc369d),下载/校验(SHA-256 + size)/本机 probe/原子替换统一入口ptyAssets.ts+ptyAssetCli.ts,运行时/打包/Docker/安装脚本统一来源04 | uint16be(len) | {"width","height"})经 POSIX FIFO / Windows Named Pipe control channel 写入原生 PTY;latest-wins 串行队列、尺寸校验、resize identity 防迟到回执createTerminalView),不接收/不推算尺寸proposeDimensions→fit()→ 校验实际 cols/rows;单一 50ms trailing reporter;active/ready 门控、无 feedback loop提交
feat(pty): fixed asset manifest, probe and control-channel transportsfeat(terminal): real PTY lifecycle, typed socket handlers and graceful shutdownfeat(client): unified terminal view, observer/reporter and lifecycle state machinebuild: architecture-specific Linux packaging, Docker and installerdocs: PTY/Docker integration docs and executed plan验证
npx tsc --noEmit通过;server Jest 5 suites / 40 tests 通过stty size/tput cols/tput lines随 frame 从 120x40 变为 90x25(约 21ms 生效)node --check scripts/package.js、bash -n install-gsm3.sh通过chunkUpload5 个既有失败 + 3 个既有 unhandled rejection 为基线红灯,与本改动无关已声明限制
terminal-resized仅证明 frame 写入 pipe,不代表上游 PTY 正向 ACK