Skip to content

v0.15.0

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Oct 03:13
· 1 commit to master since this release
  • 原生全平台可取消输出管线 (BindOutput):

    • 重构核心输出桥接体系,消除因终端、管道或控制台阻塞导致的超时失效或后台协程泄漏;
    • Linux:独立重新打开 /proc/self/fd 描述符并绑定 Go 运行时 deadline,严格保护原始借用描述符所有权;
    • macOS:通过 F_GETPATH 识别并以非阻塞模式重开终端设备;已有非阻塞管道通过 F_DUPFD_CLOEXEC 加 deadline;普通阻塞匿名管道安全平滑降级;
    • Windows 控制台:引入基于 Job Object 的命令作用域管道中继进程,通过 CancelIoEx 与 CancelSynchronousIo 原生实现 Windows 控制台输出的即时中断与无泄漏回收;
    • Windows 管道:基于 OVERLAPPED 结构与取消重试机制支持同步/异步管道取消,抑制 IOCP 冲突;
    • PTY 文件重定向:xops exec -x 交互式命令支持输出重定向至普通文件(如 >output.log 2>error.log),严格保证在写入前检查上下文状态,写完后干净恢复原终端。
  • 命令解释器组合限制解禁与动态脚本覆盖:

    • 彻底打通 xops exec 的显式解释器参数(--interpreter、--launch-dialect、--login-shell),现已支持与本地脚本(--shell)、Unix 提权(--sudo)、实时流式显示(--stream)及分主机日志保存(--out-dir)自由组合;
    • 支持在命令行动态覆盖脚本的解释器设定(覆盖优先级:CLI 显式参数 > Shebang 解析 > 节点持久化配置);
    • 脚本与提权全流程支持 bash、sh、zsh 与 fish 四类解释器;非法解释器(如 CMD/PowerShell 脚本或 server 脚本)在调度前安全拦截;
    • 脚本输入上限支持至 16 MiB(ssh.MaxCommandInputBytes),支持流式管道与取消。
  • OpenSSH 风格全链路多级诊断体系:

    • xops ssh、xops scp 与 xops sftp 统一引入 OpenSSH 风格的分级诊断日志(写入 stderr,与远程命令 stdout 严格隔离);
    • 支持 -v (DEBUG1)、-vv (DEBUG2)、-vvv (DEBUG3) 与 -q / --quiet,严格遵循 OpenSSH 参数覆盖顺序(例如 -qv 隐藏进度条但保留诊断,-vq 关闭 SSH 诊断但保留传输/初始化诊断);
    • 连接与握手诊断:清晰展示连接建立、算法协商(AEAD 隐式 MAC 标注为 MAC: <implicit>)、密钥验证及认证成功链(publickey、password、none);
    • 提权交互诊断:显示 Sudo/Su 模式协商、密码提示词匹配规则(支持识别无尾随空格的 PAM 提示或自定义正则),敏感凭据与载荷自动脱敏;
    • SFTP / SCP 传输层元数据追踪:详细展示 SFTP 扩展协商、文件打开/读取/写入/关闭的数据包级交互。
  • SFTP 交互 Shell、文件传输与自动补全增强:

    • 词法分词与引号转义:交互与批处理 SFTP 引入全新的分词解析器,完整支持单引号 '...'、双引号 "..."(含 \"、\\ 转义)及反斜杠转义(\ ),含空格的目录与文件名可直接用引号传递;
    • 存储空间预检 (StatVFS):文件上传前主动调用 StatVFS 探测远端磁盘可用存储空间,空间不足时在传输前提前拦截报错,防止半途写入损坏;
    • 文件级进度跟踪:引入 FileTransferProgress,支持单个大文件传输的平滑进度汇报与上下文取消中断保护;
    • 跨平台 Shell 补全修复:修复 SFTP 命令行自动补全在 Windows/Unix 间关于路径尾随反斜杠与平台分隔符的处理。
  • SCP 覆盖语义精确化:

    • 重构 SCP 覆盖逻辑,明确区分 --no-clobber(跳过已有目标)与 --force(强制覆盖即使大小和 mtime 相同),精准判定本地与远程目标存在性,杜绝误覆盖或意外跳过。
  • 工程治理、架构规范与 Agent Skill 规范:

    • Agent Skill 规范同步:更新 skills/xops-agent/ 及公开中英文指南,全面对齐解释器组合、引号分词、Windows 控制台支持和录入探针参数;
    • 架构治理与开发指引:建立 AGENTS.md 及 docs/development/governance/ 架构边界地图与跨平台验证门禁;
    • Windows 安装增强:完善 Windows 平台的安装脚本与安装指引。
  • 依赖升级:

    • charm.land/bubbletea/v2: 2.0.10 → 2.1.0
    • github.com/charmbracelet/x/ansi: 0.11.8 → 0.11.9
    • golang.org/x/crypto: 0.57.0 → 0.58.0
    • golang.org/x/sys: 0.48.0 → 0.49.0
    • golang.org/x/term: 0.46.0 → 0.47.0
    • golang.org/x/text: 0.42.0 → 0.43.0
    • golang.org/x/sync: 0.23.0 → 0.24.0
    • github.com/ebitengine/purego: 0.11.1 → 0.11.2
    • github.com/godbus/dbus/v5: 5.2.2 → 5.2.4
  1. SFTP 输入分词解析升级:
    SFTP 现已将 '、" 和 \ 视为分词语法字符。若以往脚本中向 SFTP 输入包含字面反斜杠或引号的特殊文件名,请确保使用了正确的转义。
  2. 诊断日志流向:
    所有 -v/-vv/-vvv 诊断信息统一写入 stderr;与远程命令原本的标准输出彻底解耦。若通过脚本捕获远程输出,请仅读取 stdout。
  3. PTY 与流式/目录日志互斥:
    PTY 终端命令(-x)明确禁止与 --stream 或 --out-dir 混用,若需重定向交互命令请直接使用标准 shell 重定向符(>file 2>err)。

完整差异:v0.14.0...v0.15.0

What's Changed

Full Changelog: v0.14.0...v0.15.0