Files
improvise/Cargo.toml
T
Edward Langley d8843181f9 chore: upgrades
2026-10-09 23:37:42 -07:00

93 lines
3.0 KiB
TOML

[workspace]
members = [".", "crates/improvise-formula", "crates/improvise-core", "crates/improvise-protocol", "crates/improvise-io", "crates/improvise-command", "crates/improvise-wasm-client", "crates/improvise-ws-server", "crates/improvise-worker-server", "crates/gp-tree", "crates/improvise-gp", "crates/numtower"]
[package]
name = "improvise"
version = "0.1.0-rc2"
edition = "2024"
description = "Terminal pivot-table modeling in the spirit of Lotus Improv"
license = "Apache-2.0"
repository = "https://github.com/fiddlerwoaroof/improvise"
homepage = "https://github.com/fiddlerwoaroof/improvise"
readme = "README.md"
keywords = ["tui", "pivot", "spreadsheet", "data", "improv"]
categories = ["command-line-utilities", "visualization"]
[[bin]]
name = "improvise"
path = "src/main.rs"
# improvise-i5tk's acceptance criterion: whether the TUI's whole-grid GridCache
# is worth narrowing to a viewport is a measurement, not an argument.
# `test = false`: it takes seconds by design, and the suite's rule is that no
# single test binary exceeds two of them.
[[bench]]
name = "grid_projection"
harness = false
test = false
[[bench]]
name = "reshape_observation"
harness = false
test = false
[[bench]]
name = "scale_bisect"
harness = false
test = false
[dependencies]
gp-tree = { path = "crates/gp-tree" }
improvise-core = { path = "crates/improvise-core" }
improvise-formula = { path = "crates/improvise-formula" }
improvise-io = { path = "crates/improvise-io" }
improvise-command = { path = "crates/improvise-command" }
ratatui = "0.30"
crossterm = "0.29"
serde = { version = "1", features = ["derive"] }
# Parses JSON a user's numbers cross, so it must read back the f64 written: per crate,
# because each build stands alone (improvise-6yvg, context/code/protocol.md).
serde_json = { version = "1", features = ["float_roundtrip"] }
anyhow = "1"
thiserror = "2"
indexmap = "2"
chrono = { version = "0.4", features = ["serde"] }
flate2 = "1"
unicode-width = "^0.2"
csv = "1"
clap = { version = "4.6.7", features = ["derive"] }
enum_dispatch = "0.3.13"
[dev-dependencies]
# Only `tests/grid_frame_agreement.rs` needs it: that test drives the TUI
# widget and the browser client over ONE `GridCache` and asserts they draw
# the same grid frame (improvise-anr9). A dev-dependency, so the terminal
# binary does not grow a wasm client; `improvise-wasm-client` builds
# natively, which is how its own tests already run.
improvise-wasm-client = { path = "crates/improvise-wasm-client" }
# `test-support` gives `FormulaEntry: From<&str>`, which the tests use; asked for
# here, or `-p improvise` alone does not compile (improvise-a61f).
improvise-protocol = { path = "crates/improvise-protocol", features = ["test-support"] }
# `tests/headless_cli.rs` detaches the binary from any terminal with `setsid`.
libc = "0.2"
pest = "2.9.3"
pest_derive = "2.9.3"
pest_meta = "2.9.3"
proptest = "1"
tempfile = "3"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
[profile.profiling]
inherits = "release"
strip = false
debug = 2
# The profile that 'dist' will build with
[profile.dist]
inherits = "release"