[workspace]
resolver = "2"
members = [
    "crates/holtburger-content",
    "crates/holtburger-core",
    "crates/holtburger-common",
    "crates/holtburger-dat",
    "crates/holtburger-dat-write",
    "crates/holtburger-event-bake",
    "crates/holtburger-protocol",
    "crates/holtburger-manifest",
    "crates/holtburger-resource-http",
    "crates/holtburger-scenery-bake",
    "crates/holtburger-suite-bake",
    "crates/holtburger-scripting",
    "crates/holtburger-session",
    "crates/holtburger-transport-ws",
    "crates/holtburger-world",
    "apps/holtburger-cli",
    "apps/holtburger-tools",
    "apps/holtburger-web",
    "apps/holtburger-wsbridge",
]
default-members = ["apps/holtburger-cli"]

[workspace.package]
version = "0.1.0"
edition = "2024"
authors = ["holtburger contributors"]
license = "AGPL-3.0"
repository = "https://github.com/merklejerk/holtburger"

[workspace.dependencies]
holtburger-content = { path = "crates/holtburger-content" }
holtburger-core = { path = "crates/holtburger-core" }
holtburger-world = { path = "crates/holtburger-world" }
holtburger-session = { path = "crates/holtburger-session" }
holtburger-common = { path = "crates/holtburger-common" }
holtburger-dat = { path = "crates/holtburger-dat" }
holtburger-event-bake = { path = "crates/holtburger-event-bake" }
holtburger-protocol = { path = "crates/holtburger-protocol" }
holtburger-manifest = { path = "crates/holtburger-manifest" }
holtburger-resource-http = { path = "crates/holtburger-resource-http" }
holtburger-scenery-bake = { path = "crates/holtburger-scenery-bake" }
holtburger-scripting = { path = "crates/holtburger-scripting" }
holtburger-transport-ws = { path = "crates/holtburger-transport-ws" }
tokio = { version = "1", default-features = false }
byteorder = "1.5"
anyhow = "1.0"
rand = "0.10"
log = "0.4"
env_logger = "0.11"
socket2 = "0.6"
encoding_rs = "0.8"
clap = { version = "4.0", features = ["derive"] }
ratatui = "0.30"
crossterm = { version = "0.29", features = ["event-stream"] }
futures = "0.3"
binrw = "0.15"
zstd = "0.13"
ruzstd = "0.8"
# PFID_CUSTOM_RAW_JPEG (500) decoder for retail Texture records — 79
# such records in client_portal.dat per `texture_format_coverage` test
# (2026-05-28). Pure-Rust; works on both native and wasm32.
jpeg-decoder = { version = "0.3", default-features = false }
# Drop-in replacement for `std::time::Instant` that works on
# `wasm32-unknown-unknown` (uses `performance.now()`). On native, this
# crate re-exports `std::time` directly — zero cost.
web-time = "1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "2.0"
strum = { version = "0.28", features = ["derive"] }
strum_macros = "0.28"
async-trait = "0.1"
glam = "0.32"
bitflags = { version = "2.11", features = ["serde"] }
tempfile = "3.10"
criterion = "0.8"
rayon = "1.11.0"
indicatif = "0.18"
directories = "6.0"
unicode-width = "0.2"
hex = "0.4.3"
sha2 = "0.10"
reqwest = { version = "0.13", features = ["blocking", "json"] }
zip = "8.5"
regex = "1.12"
ratatui-textarea = "0.8"

# Config for 'cargo dist'
[workspace.metadata.dist]
# The preferred cargo-dist version to use in CI (Cargo.toml SemVer syntax)
cargo-dist-version = "0.30.3"
# CI backends to support
ci = "github"
# The installers to generate for each app
installers = ["shell", "powershell"]
# Extra static files to include in distributions
include = [
    "dats/README.md",
    "scripts/fighter.js",
    "scripts/mage.js",
    "scripts/mage.data.json",
    "scripts/mage.data.bin",
]
# Target platforms to build apps for (Rust target-triple syntax)
targets = ["aarch64-apple-darwin", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-pc-windows-msvc"]
# Publish jobs to run in CI
pr-run-mode = "skip"
# Whether to install an updater program
install-updater = false

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

[profile.profiling]
inherits = "release"
debug = true
strip = "none"
debug-assertions = false
incremental = false
