All checks were successful
Build & Sign Wraith / Build Windows + Sign (push) Successful in 3m6s
Ripped out the Gemini API stub (ai/mod.rs, ai_commands.rs, GeminiPanel.vue) and replaced it with a local PTY terminal in the sidebar panel. Users select a shell (bash/zsh/sh on Unix, PowerShell/CMD/Git Bash on Windows), launch it, and run claude/gemini/codex or any CLI tool directly. Backend: - New PtyService module using portable-pty (cross-platform PTY) - DashMap session registry (same pattern as SshService) - spawn_blocking output loop (portable-pty reader is synchronous) - 5 Tauri commands: list_available_shells, spawn_local_shell, pty_write, pty_resize, disconnect_pty Frontend: - Parameterized useTerminal composable: backend='ssh'|'pty' - convertEol=false for PTY (PTY driver handles LF→CRLF) - CopilotPanel.vue with shell selector, launch/kill, session ended prompt - Ctrl+Shift+G toggle preserved Tests: 87 total (5 new PTY tests), zero warnings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
58 lines
1.5 KiB
TOML
58 lines
1.5 KiB
TOML
[package]
|
|
name = "wraith"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[lib]
|
|
name = "wraith_lib"
|
|
crate-type = ["lib", "cdylib", "staticlib"]
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
|
|
[dependencies]
|
|
tauri = { version = "2", features = ["devtools"] }
|
|
tauri-plugin-shell = "2"
|
|
tauri-plugin-updater = "2"
|
|
anyhow = "1"
|
|
reqwest = { version = "0.12", features = ["json"] }
|
|
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
rusqlite = { version = "0.32", features = ["bundled"] }
|
|
aes-gcm = "0.10"
|
|
argon2 = "0.5"
|
|
rand = "0.9"
|
|
hex = "0.4"
|
|
uuid = { version = "1", features = ["v4"] }
|
|
base64 = "0.22"
|
|
dashmap = "6"
|
|
tokio = { version = "1", features = ["full"] }
|
|
async-trait = "0.1"
|
|
log = "0.4"
|
|
env_logger = "0.11"
|
|
thiserror = "2"
|
|
russh = "0.48"
|
|
russh-sftp = "2.1.1"
|
|
ssh-key = { version = "0.6", features = ["ed25519", "rsa"] }
|
|
|
|
# EC key PEM decryption (all already in dep tree via russh)
|
|
md5 = "0.7"
|
|
aes = "0.8"
|
|
cbc = "0.1"
|
|
block-padding = "0.3"
|
|
pem = "3"
|
|
pkcs8 = { version = "0.10", features = ["pem"] }
|
|
sec1 = { version = "0.7", features = ["pem"] }
|
|
|
|
# Local PTY for AI copilot panel
|
|
portable-pty = "0.8"
|
|
|
|
# RDP (IronRDP)
|
|
ironrdp = { version = "0.14", features = ["connector", "session", "graphics", "input"] }
|
|
ironrdp-tokio = { version = "0.8", features = ["reqwest-rustls-ring"] }
|
|
ironrdp-tls = { version = "0.2", features = ["rustls"] }
|
|
tokio-rustls = "0.26"
|
|
x509-cert = { version = "0.2", default-features = false, features = ["std"] }
|
|
sspi = { version = "0.18", features = ["network_client"] }
|