外部 CLI 支持 Windows:命名管道、独立控制台程序 shellrs-cli 与用户 PATH 安装

- 新增 shellrs-cli 二进制(各平台都构建);Windows 发布版的 GUI 改为
  windows_subsystem = "windows",命令由 shellrs-cli.exe 承担
- Windows 上经命名管道 \\.\pipe\shellrs-cli-<数据目录散列> 与应用通信:
  DACL 只允许当前用户、拒绝远程客户端、首个实例独占名字;客户端以
  SECURITY_IDENTIFICATION 打开并校验管道属主,防止抢注冒充
- 设置 → 外部 CLI 在 Windows 上把 shellrs-cli.exe 复制成
  %LOCALAPPDATA%\ShellRS\bin\shellrs.exe 并加入用户 PATH;旧副本启动时
  自动更新,正在使用的副本也能替换;新增「已安装旧版本」「不在 PATH」
  「找不到 shellrs-cli.exe」状态
- 客户端拆成按平台的 connect 与共用的读帧循环;进度行改用空格覆盖;
  Windows 控制台上非法 UTF-8 输出替换为 U+FFFD;命令文本去 BOM、CRLF 转 LF
- 新增 tests/cli_bin.rs 进程级端到端测试与 Windows CI 工作流
- SKILL.md 增加 Windows / PowerShell 说明,README、CLAUDE.md 同步

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
XuzandClaude committed 2026-09-25 14:00:21 +08:00
1 parent 9704a8cc20
commit d6e1ed69ec
24 files changed
+1563 -143

No files matched your search

+27
View File
@@ -0,0 +1,27 @@
# The Windows build, which the Macs this is developed on cannot compile:
# the whole crate through clippy, and the external CLI's tests, including
# the named pipe between two processes.
name: windows
on:
push:
workflow_dispatch:
jobs:
cli:
runs-on: windows-latest
timeout-minutes: 90
env:
CARGO_TERM_COLOR: always
steps:
- uses: actions/checkout@v4
# rust-toolchain.toml picks the toolchain; this installs it with the
# components it lists before the cache key is computed.
- run: rustup toolchain install
- uses: Swatinem/rust-cache@v2
# In case aws-lc-sys wants to assemble rather than use its prebuilt
# objects.
- uses: ilammy/setup-nasm@v1
- run: cargo clippy --all-targets -- -D warnings
- run: cargo test --lib cli::
- run: cargo test --test cli_bin