[package]
name = "deciduous"
version = "0.8.12"
edition = "2021"
rust-version = "1.70"
authors = ["Trey Anastasio <trey@example.com>"]
description = "Decision graph tooling for AI-assisted development. Track every goal, decision, and outcome. Survive context loss. Query your reasoning."
license = "MIT"
repository = "https://github.com/notactuallytreyanastasio/deciduous"
homepage = "https://notactuallytreyanastasio.github.io/deciduous/"
documentation = "https://docs.rs/deciduous"
readme = "README.md"
keywords = ["decision-graph", "ai-development", "context-management", "claude", "llm"]
categories = ["command-line-utilities", "development-tools"]
exclude = [
    # Web viewer - not needed for cargo install
    "web/**",
    # Documentation site - hosted separately
    "docs/**",
    # Example files - large demo files
    "examples/**",
    # Database files
    "*.db",
    ".deciduous/**",
    # Large image files
    "*.png",
    # AppImage packaging
    "appimage/**",
]

[[bin]]
name = "deciduous"
path = "src/main.rs"

[[bin]]
name = "gen_types"
path = "bin/gen_types.rs"
required-features = ["ts-rs"]

[lib]
name = "deciduous"
path = "src/lib.rs"

[dependencies]
# CLI
clap = { version = "4.4", features = ["derive"] }
clap_complete = "4.4"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"

# HTTP server for graph viewer
tiny_http = "0.12"
serde_urlencoded = "0.7"

# Date/time
chrono = "0.4"

# UUID generation for change_id
uuid = { version = "1.0", features = ["v4"] }

# Roadmap parsing
regex = "1.10"
sha2 = "0.10"

# SQLite ORM with migrations
diesel = { version = "2.2", features = ["sqlite", "r2d2", "64-column-tables"] }
libsqlite3-sys = { version = "0.30", features = ["bundled"] }

# Colored terminal output
colored = "2.0"

# TUI
ratatui = "0.29"
crossterm = { version = "0.28", features = ["event-stream"] }
tui-tree-widget = "0.22"

# File watching for TUI auto-refresh
notify = "6.1"

# Syntax highlighting for TUI file preview
syntect = { version = "5.2", default-features = false, features = ["default-fancy"] }
syntect-tui = "3.0"
lazy_static = "1.4"
ts-rs = { version = "10.1.0", optional = true }

[profile.release]
lto = true
codegen-units = 1
strip = true

# Treat warnings as errors - no code with warnings allowed
[lints.rust]
warnings = "deny"

[lints.clippy]
all = { level = "deny", priority = -1 }
# Explicit exceptions (architectural choices, not bugs)
too_many_arguments = "allow"

[dev-dependencies]
proptest = "1.7.0"
serde_yaml = "0.9.34"
tempfile = "3.23.0"
ts-rs = "10.1.0"

[features]
ts-rs = ["dep:ts-rs"]
