Files
weidu12123 a3e79b97b6 feat: ship GPUI native client and fix SFTP session recovery
- Rebuild the GPUI client against the 1:1 UI spec with all six modules,
  terminal context menu, SSE reveal, system tray and standalone windows.
- Add an SFTP session self-healing layer: detect dead channels, drop the
  cached session, reconnect and retry across every file and transfer path.
- Add a terminal refresh button that recreates the pane in place, with
  proper loading and error feedback in both GPUI and the Web console.
- Route startup and autostart through vps-switch-gpui when it is present,
  and make repeated launches wake the existing window via a file lock.
- Strip debuginfo in release, add a GitHub Actions matrix workflow for
  macOS and Linux, and refresh the Windows installers and README.
2026-10-18 12:09:49 +08:00

75 lines
2.1 KiB
TOML

[workspace]
members = ["gpui-client"]
resolver = "2"
[package]
name = "vps-switch"
version = "0.1.0"
edition = "2021"
description = "Lightweight VPS manager and MCP server"
authors = ["weidu12123"]
[dependencies]
tokio = { version = "1.40", features = ["full"] }
axum = { version = "0.7", features = ["ws", "macros"] }
tower-http = { version = "0.6", features = ["fs", "cors"] }
rusqlite = { version = "0.32", features = ["bundled"] }
russh = { version = "0.63.0", default-features = false, features = ["flate2", "ring", "rsa", "legacy-ed25519-pkcs8-parser"] }
russh-sftp = "3.0.1"
alacritty_terminal = "0.26.0"
portable-pty = "0.9.0"
tokio-util = { version = "0.7", features = ["io"] }
bytes = "1"
rust-embed = { version = "8.13.0", features = ["debug-embed", "mime-guess"] }
mime_guess = "2.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha2 = "0.10"
hex = "0.4"
aes-gcm = "0.10"
scrypt = { version = "0.11", default-features = false, features = ["std"] }
rand = "0.8"
base64 = "0.22"
uuid = { version = "1.10", features = ["v4"] }
chrono = { version = "0.4", features = ["serde"] }
anyhow = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
futures = "0.3"
async-trait = "0.1"
[target.'cfg(windows)'.dependencies]
wry = "0.57.0"
tao = "0.37.1"
tray-icon = "0.26.1"
# 托盘驻留时把 WebView2 降到低内存档(ICoreWebView2_19::SetMemoryUsageTargetLevel)。
# 只用 wry 暴露的 controller() 拿原生接口,不碰 wry 内部实现。
webview2-com = "0.39.1"
windows-core = "0.62"
[target.'cfg(windows)'.build-dependencies]
winres = "0.1"
[profile.dev.package."*"]
opt-level = 2
[profile.dev.package]
gpui-pre = { opt-level = 3 }
gpui-pre-platform = { opt-level = 3 }
gpui-pre-windows = { 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 }
alacritty_terminal = { opt-level = 3 }
[profile.release]
strip = "debuginfo"