[package] name = "vibe-rs" version = "3.0.2" edition = "2021" license = "Apache-2.0" publish = false [lib] name = "vibe_rs" path = "src/lib.rs" [[bin]] name = "vibe-rs" path = "src/main.rs" [[bin]] name = "vibe-replay" path = "src/bin/replay.rs" [dependencies] anyhow = "1" clap = { version = "4", features = ["derive", "env"] } serde = { version = "1", features = ["derive"] } serde_json = { version = "1", features = ["preserve_order", "raw_value"] } shlex = "1" tokio = { version = "1", features = ["rt", "macros", "process", "io-util", "io-std", "sync", "time", "signal"] } futures = "0.3" ignore = "0.4" ratatui = { version = "0.30", features = ["unstable-rendered-line-info"] } # Native poll avoids the mio EOF spin; libc is required by Crossterm's wake path. crossterm = { version = "0.29", features = ["use-dev-tty", "libc"] } pulldown-cmark = { version = "0.10", default-features = false } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } cpal = { version = "0.15", optional = true } tokio-tungstenite = { version = "0.24", features = ["rustls-tls-native-roots"] } base64 = "0.22" notify = "8" unicode-segmentation = "1" unicode-width = "0.2" caseless = "0.2" syntect = "5" two-face = { version = "0.5", default-features = false, features = [ "syntect-default-onig", ] } toml_edit = "0.25" tempfile = "3" url = "2" sha2 = "0.11" time = { version = "0.3", features = ["formatting", "parsing"] } getrandom = "0.4" # reqwest 0.13 renamed 0.12's `rustls-tls` feature to `rustls`; `system-proxy` # keeps Python's getproxies() parity for OS-configured proxies. reqwest = { version = "0.13", default-features = false, features = ["json", "rustls", "system-proxy"] } # ADR 0015: the bundled Mozilla root set the Vibe-owned clients verify against # while `enable_system_trust_store` is disabled (Python's certifi bundle). webpki-root-certs = "1" sentry = { version = "0.49.2", default-features = false, features = ["backtrace", "contexts", "reqwest", "rustls", "tracing"] } uuid = { version = "1", features = ["v4"] } percent-encoding = "2" [dev-dependencies] ctor = "0.2" [features] # Voice capture pulls in `cpal`, whose Linux backend links ALSA via pkg-config # (a system dependency the CI build image lacks). Keep voice on by default for # local builds; CI builds with `--no-default-features` to skip the audio path. default = ["voice"] voice = ["dep:cpal"] [target.'cfg(unix)'.dependencies] libc = "0.2" [target.'cfg(not(target_os = "macos"))'.dependencies] # OS keyring on Linux (Secret Service via zbus, pure Rust) and Windows # (Credential Manager). macOS keeps the `security` shell-out in # `src/credentials/keyring.rs`, like Python. keyring = "4.2" [target.'cfg(target_os = "windows")'.dependencies] # Windows pins credentials to Python `keyring`'s WinVault naming via the # target modifier, which the keyring facade does not expose. keyring-core = "1.0" windows-sys = { version = "0.61.2", features = [ "Win32_Foundation", "Win32_Security", "Win32_System_Console", "Win32_System_Diagnostics_ToolHelp", "Win32_System_JobObjects", "Win32_Storage_FileSystem", "Win32_System_Threading", "Win32_UI_Input_KeyboardAndMouse", "Win32_UI_WindowsAndMessaging", ] } [profile.release] opt-level = 3 lto = "thin" debug = 1 [profile.test] incremental = false # Crossterm parses an SGR-pixels edge report (pixel 0) as `0 - 1`: wrap like release instead of panicking. [profile.dev.package.crossterm] overflow-checks = false