[package]
name = "tenex"
version = "1.0.3"
edition = "2024"
rust-version = "1.91"
resolver = "3"
authors = ["Quinten Lisowe"]
description = "Terminal multiplexer for AI coding agents"
license = "Apache-2.0"
repository = "https://github.com/Mockapapella/tenex"
homepage = "https://github.com/Mockapapella/tenex"
readme = "README.md"
keywords = ["cli", "tui", "ai", "agents", "terminal"]
categories = ["command-line-utilities", "development-tools"]

[dependencies]
ratatui = { version = "0.29", default-features = false, features = ["crossterm"] }
clap = { version = "4.5", default-features = false, features = ["derive", "std", "help"] }
serde = { version = "1.0", default-features = false, features = ["derive", "std"] }
serde_json = { version = "1.0", default-features = false, features = ["std"] }
anyhow = { version = "1.0", default-features = false, features = ["std"] }
thiserror = { version = "2.0", default-features = false }
tracing = { version = "0.1", default-features = false }
tracing-subscriber = { version = "0.3", default-features = false, features = ["env-filter", "std", "fmt"] }
tracing-appender = { version = "0.2", default-features = false }
uuid = { version = "1.19", default-features = false, features = ["v4", "serde", "std"] }
chrono = { version = "0.4", default-features = false, features = ["serde", "std", "clock"] }
ansi-to-tui = { version = "7.0", default-features = false }
semver = { version = "1.0.27", default-features = false, features = ["std"] }
shell-words = { version = "1.1.1", default-features = false, features = ["std"] }

[target.'cfg(not(windows))'.dependencies]
git2 = { version = "0.19", default-features = false }
ureq = { version = "3.1.4", default-features = false, features = ["json", "rustls"] }

[target.'cfg(windows)'.dependencies]
ureq = { version = "3.1.4", default-features = false, features = ["json", "native-tls"] }

[dev-dependencies]
tempfile = "3.19"
pretty_assertions = "1.4"
proptest = { version = "1", default-features = false, features = ["std"] }
rstest = { version = "0.23", default-features = false }
mockito = { version = "1.7", default-features = false }

[lints.rust]
unsafe_code = "forbid"
warnings = "deny"
rust_2018_idioms = { level = "deny", priority = -1 }
future_incompatible = { level = "deny", priority = -1 }
nonstandard_style = { level = "deny", priority = -1 }
missing_docs = "deny"
missing_debug_implementations = "deny"
missing_copy_implementations = "deny"
non_ascii_idents = "forbid"
unfulfilled_lint_expectations = "deny"

[lints.rustdoc]
all = { level = "deny", priority = -1 }

[lints.clippy]
all = { level = "deny", priority = -1 }
pedantic = { level = "deny", priority = -1 }
nursery = { level = "deny", priority = -1 }
cargo = { level = "deny", priority = -1 }
allow_attributes = "deny"
allow_attributes_without_reason = "deny"
multiple_crate_versions = "allow"
dbg_macro = "deny"
todo = "deny"
unimplemented = "deny"
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"

[profile.dev]
debug = 2
overflow-checks = true
debug-assertions = true
incremental = false
codegen-units = 1
lto = "off"

[profile.test]
inherits = "dev"

[profile.release]
debug = 1
overflow-checks = true
debug-assertions = false
lto = "fat"
codegen-units = 1
panic = "abort"
strip = "symbols"

[profile.coverage]
inherits = "test"
debug = 2
opt-level = 0
