[package] name = "quicommit" version = "0.6.1" edition = "2024" authors = ["Sidney Zhang "] description = "A powerful Git assistant tool with AI-powered commit/tag/changelog generation" license = "MIT" repository = "https://git.lyz.one/SidneyZhang/QuiCommit" keywords = ["git", "commit", "ai", "cli", "automation"] categories = ["command-line-utilities", "development-tools"] [[bin]] name = "quicommit" path = "src/main.rs" [dependencies] # CLI and argument parsing clap = { version = "4.5", features = ["derive", "env", "wrap_help"] } clap_complete = "4.5" dialoguer = "0.11" indicatif = "0.17" # Configuration management serde = { version = "1.0", features = ["derive"] } toml = "0.8" dirs = "5.0" # Git operations git2 = "0.20.3" which = "6.0" tokio = { version = "1.35", features = ["macros", "rt-multi-thread"] } # Error handling thiserror = "1.0" anyhow = "1.0" # Logging and tracing tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] } # Utilities chrono = { version = "0.4", features = ["serde"] } regex = { version = "1.10", default-features = false, features = ["std", "perf"] } roxmltree = "0.20" colored = "2.1" semver = "1.0" tempfile = "3.9" sha2 = "0.10" hex = "0.4" textwrap = "0.16" futures-util = "0.3" serde_json = "1.0" # Encryption for sensitive data (SSH keys, GPG, etc.) aes-gcm = "0.10" argon2 = "0.5" rand = "0.8" base64 = "0.22" # System keyring for secure API key storage keyring = { version = "3.6.3", features = ["apple-native", "windows-native", "sync-secret-service"] } # Interactive editor edit = "0.1" # LLM integration (rig-core only: HTTP backend + rustls; no agent/derive) rig-core = { version = "0.41", default-features = false, features = ["reqwest", "rustls"] } [dev-dependencies] assert_cmd = "2.0" predicates = "3.1" tempfile = "3.9" mockall = "0.12" wiremock = "0.6" # rig mock HTTP backends for LLM layer tests rig-core = { version = "0.41", default-features = false, features = ["test-utils"] } http = "1" [profile.release] opt-level = "s" lto = "thin" codegen-units = 1 panic = "abort" strip = true debug = false [profile.dev] opt-level = 1 debug = true