[package]
name = "meatshell"
version = "0.2.7"
edition = "2021"
authors = ["meatshell contributors"]
description = "A lightweight FinalShell-style SSH/terminal client written in Rust + Slint"
license = "MIT OR Apache-2.0"
repository = "https://github.com/your/meatshell"
readme = "README.md"
rust-version = "1.75"

[dependencies]
slint = { version = "1.8", features = ["compat-1-2"] }
# Direct access to the winit window/events (OS file-drop for drag-and-drop upload).
i-slint-backend-winit = "1.16"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
anyhow = "1"
thiserror = "1"
directories = "5"
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1", features = ["v4", "serde"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "io-util", "net", "time", "fs"] }
russh = "0.49"
russh-keys = "0.49"
ssh-key = "0.6"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
rand = "0.8"
async-trait = "0.1"
futures = "0.3"
vt100 = "0.15"
unicode-width = "0.2"
russh-sftp = "2"
rfd = "0.15"
arboard = "3"
# Zeroes password buffers on drop so plaintext credentials don't linger in
# freed heap memory (core dumps / debuggers / /proc/pid/mem).
zeroize = "1"
# SOCKS5 proxy tunnelling for SSH/SFTP in network-restricted environments.
# (HTTP CONNECT proxies are handled in src/proxy.rs without an extra crate.)
tokio-socks = "0.5"
base64 = "0.22"
# Cross-platform serial port access for the Serial session type (#14, #17).
# Opens COM3 / /dev/ttyUSB0 etc.; on Linux the default `libudev` feature is
# used for port enumeration (CI installs libudev-dev).
serialport = "4"
# ChaCha20-Poly1305 AEAD for encrypting passwords at rest in sessions.json.
# rand (OsRng) and base64 are already pulled in by other deps above.
chacha20poly1305 = "0.10"
# Detect whether the OS is running in dark or light mode.
# Used on startup to honour the system preference before the user overrides it.
dark-light = "1"
# Runtime background image decoding/blur. Used for png/jpg/jpeg/webp user
# backgrounds before handing pixels to Slint.
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp"] }
# HTTP client for WebDAV sync.
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }

# Decode the embedded PNG icon to set the window icon at runtime (Linux only).
# On Windows the icon comes from the .ico embedded by winresource at link time;
# on macOS it comes from the app bundle — neither needs runtime decoding.

[build-dependencies]
slint-build = "1.8"
# Embeds assets/meatshell.ico into the .exe so Explorer / taskbar / shortcuts
# show the app icon. Kept as an unconditional build-dependency because build.rs
# runs on the host; Linux -> Windows cross builds still need this crate.
winresource = "0.1"

[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = "symbols"
panic = "unwind"

[profile.dev]
opt-level = 1
