[workspace]
resolver = "3"
members = [
    "crates/bone-types",
    "crates/bone-kernel",
    "crates/bone-solver",
    "crates/bone-document",
    "crates/bone-text",
    "crates/bone-render",
    "crates/bone-ui",
    "crates/bone-app",
]

[workspace.package]
version = "0.0.0"
edition = "2024"
license = "AGPL-3.0-or-later"
rust-version = "1.95"

[workspace.lints.rust]
unsafe_code = "forbid"
unused_must_use = "deny"

[workspace.lints.clippy]
all = { level = "deny", priority = -1 }
pedantic = { level = "warn", priority = -1 }
unwrap_used = "deny"
expect_used = "deny"
missing_panics_doc = "allow"
missing_errors_doc = "allow"
needless_for_each = "allow"

[workspace.dependencies]
bone-types = { path = "crates/bone-types" }
bone-kernel = { path = "crates/bone-kernel" }
bone-solver = { path = "crates/bone-solver" }
bone-document = { path = "crates/bone-document" }
bone-render = { path = "crates/bone-render" }
bone-text = { path = "crates/bone-text" }
bone-ui = { path = "crates/bone-ui" }

accesskit = "0.24"
ashpd = { version = "0.13", default-features = false, features = ["async-io", "file_chooser"] }
blake3 = { version = "1", default-features = false, features = ["std"] }
bytemuck = { version = "1", default-features = false, features = ["derive"] }
faer = { version = "0.24", default-features = false, features = ["std"] }
insta = "1"
lyon_tessellation = "1"
nalgebra = { version = "0.33", default-features = false, features = ["std"] }
palette = { version = "0.7", default-features = false, features = ["std"] }
parley = { version = "0.9", default-features = false, features = ["std"] }
percent-encoding = { version = "2", default-features = false, features = ["std"] }
png = { version = "0.17", default-features = false }
pollster = "0.4"
proptest = { version = "1", default-features = false, features = ["std"] }
ron = "0.12"
serde = { version = "1", default-features = false, features = ["std", "derive", "rc"] }
slotmap = { version = "1", default-features = false, features = ["std", "serde"] }
swash = { version = "0.2", default-features = false, features = ["std", "scale", "render"] }
taffy = { version = "0.10", default-features = false, features = ["std", "flexbox", "grid", "content_size", "serde", "taffy_tree"] }
tempfile = "3"
thiserror = "2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
unicode-segmentation = "1"
uom = { version = "0.38", default-features = false, features = ["f64", "si", "std", "autoconvert"] }
wgpu = "29"
winit = "0.30"

[profile.release]
lto = "fat"
strip = true
codegen-units = 1
panic = "abort"
