[package]
name = "jjwt"
version = "0.1.0"
edition = "2024"
description = "jujutsu-backed worktrunk-compatible workspace manager"
authors = ["Endoze <endoze@endozemedia.com>"]
license = "MIT"
readme = "README.md"
repository = "https://github.com/endoze/jjwt"
documentation = "https://docs.rs/jjwt"
homepage = "https://github.com/endoze/jjwt"
rust-version = "1.89.0"
keywords = ["jujutsu", "jj", "workspace", "cli", "worktree"]
categories = ["command-line-utilities", "development-tools"]

[features]
default = ["picker"]
picker = ["dep:skim"]

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

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

[dependencies]
anstyle = "1"
anyhow = "1"
clap = { version = "4", features = ["derive"] }
clap_complete = "4"
futures = "0.3"
indexmap = { version = "2", features = ["serde"] }
# In-process jj backend — eliminates subprocess spawning. PINNED EXACT
# because jj-lib has no API stability guarantee (pre-1.0).
jj-lib = { version = "=0.41.0", features = ["git"] }
minijinja = "2"
# Wordlists for the `codename` template filter. PINNED EXACT — bumping this
# can silently shift every existing user's codename-derived worktree path,
# orphaning their on-disk worktrees. Coordinate any version change with
# worktrunk's pin to preserve byte-fidelity of rendered templates.
petname = { version = "=3.0.0", default-features = false, features = ["default-words"] }
sanitize-filename = "0.6"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = "0.11"
skim = { version = "0.11", optional = true }
thiserror = "2"
toml = { version = "1", features = ["preserve_order"] }
pollster = "0.4"
tokio = { version = "1", features = ["io-util"] }
terminal_size = "0.4"
unicode-width = "0.2"
walkdir = "2"
which = "8"

[target.'cfg(unix)'.dependencies]
libc = "0.2"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin_include)'] }

[dev-dependencies]
insta = { version = "1", features = ["yaml"] }
tempfile = "3"

# The profile that 'dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"
