Files
shell-rs/Cargo.toml
T
XuzandClaude d6e1ed69ec 外部 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>
2026-09-25 14:00:21 +08:00

81 lines
2.2 KiB
TOML

[package]
name = "shellrs"
version = "0.1.0"
edition = "2024"
publish = false
description = "SSH session manager with local terminal support"
default-run = "shellrs"
# The app. On macOS and Linux it doubles as the `shellrs` command when
# started with arguments.
[[bin]]
name = "shellrs"
path = "src/main.rs"
# The `shellrs` command on its own, as a console program: Windows needs it,
# because the app is a GUI program there and has no console to print to.
[[bin]]
name = "shellrs-cli"
path = "src/bin/shellrs-cli.rs"
[dependencies]
gpui-kit = "0.6.1"
alacritty_terminal = "0.26"
anyhow = "1"
async-channel = "2"
clap = { version = "4", features = ["derive"] }
dirs = "6"
futures = "0.3"
portable-pty = "0.9"
rand = "0.9"
russh = "0.63"
russh-sftp = "=3.0.0"
serde_json = "1"
sys-locale = "0.3"
sha2 = "0.10"
uuid = { version = "1", features = ["v4"] }
chrono = "0.4"
rusqlite = { version = "0.40", features = ["bundled"] }
serde = { version = "1", features = ["derive"] }
tokio = { version = "1", features = ["fs", "io-util", "macros", "net", "rt", "sync", "time"] }
unicode-width = "0.2"
zeroize = "1"
keyring = "4"
trash = "5"
[target.'cfg(windows)'.dependencies]
windows-registry = "0.6"
windows-sys = { version = "0.61", features = [
"Win32_Security",
"Win32_Security_Authorization",
"Win32_Storage_FileSystem",
"Win32_System_IO",
"Win32_System_Pipes",
"Win32_System_Threading",
"Win32_UI_WindowsAndMessaging",
] }
[dev-dependencies]
tokio = { version = "1", features = ["process", "test-util"] }
gpui-kit = { version = "0.6.1", features = ["test-support"] }
tempfile = "3"
# Optimize the rendering stack in debug builds (per gpui-kit's installation
# guide); shellrs itself stays unoptimized and debuggable.
[profile.dev.package]
gpui-pre = { opt-level = 3 }
gpui-pre-platform = { opt-level = 3 }
gpui-pre-macos = { opt-level = 3 }
gpui-base = { opt-level = 3 }
gpui-component = { opt-level = 3 }
gpui-kit = { opt-level = 3 }
gpui-kit-assets = { opt-level = 3 }
cosmic-text = { opt-level = 3 }
rustybuzz = { opt-level = 3 }
swash = { opt-level = 3 }
taffy = { opt-level = 3 }
ttf-parser = { opt-level = 3 }
resvg = { opt-level = 3 }
usvg = { opt-level = 3 }
zed-font-kit = { opt-level = 3 }