bettertui_engine 0.1.1

High-performance terminal UI framework
Documentation
[package]
name = "bettertui_engine"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description.workspace = true
rust-version.workspace = true
homepage.workspace = true
readme = "README.md"
documentation = "https://docs.rs/bettertui_engine"
keywords = ["tui", "terminal", "console", "cli", "rendering"]
categories = ["command-line-interface", "graphics", "text-processing"]
exclude = ["index.d.ts", ".DS_Store"]

[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]

[lib]
name = "bettertui_engine"
path = "src/lib.rs"
crate-type = ["cdylib", "lib"]

[features]
default = ["diagnostics"]
napi = ["dep:napi", "dep:napi-derive"]

# Diagnostic counters (render calls, frame times, cache hit/miss, ...). Enabled
# by default. Build with `--no-default-features` (or omit this from your feature
# set) to compile out every counter increment on the render/event hot paths for
# a zero-overhead release build; `loggerGetDiagnostics()` then reports zeros.
diagnostics = []

# Compile-time log gating. Enabling one of these statically removes any
# `tracing` event below the chosen level from RELEASE builds (debug builds are
# unaffected, so development still sees everything). These forward to
# `tracing`'s `release_max_level_*` features. Pick at most one.
release-logs-off = ["tracing/release_max_level_off"]
release-logs-error = ["tracing/release_max_level_error"]
release-logs-warn = ["tracing/release_max_level_warn"]
release-logs-info = ["tracing/release_max_level_info"]
release-logs-debug = ["tracing/release_max_level_debug"]
# Convenience: the recommended production default (warn and above).
production = ["release-logs-warn"]

[[bin]]
name = "layout_e2e"
path = "src/bin/layout_e2e.rs"

[dependencies]
taffy.workspace = true
crossterm.workspace = true
ropey.workspace = true
regex.workspace = true
unicode-width.workspace = true
unicode-segmentation.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
parking_lot.workspace = true
slotmap.workspace = true
smallvec.workspace = true
bitflags.workspace = true
portable-pty.workspace = true
serde = { version = "1", features = ["derive"] }
serde_json = "1"
base64 = "0.22"
cfonts = { version = "1.3", default-features = false }
thiserror = "2.0"

# Tree-sitter for syntax highlighting
tree-sitter = "0.25"
tree-sitter-javascript = "0.25"
tree-sitter-typescript = "0.23"
tree-sitter-rust = "0.24"
tree-sitter-python = "0.25"
tree-sitter-json = "0.24"
tree-sitter-html = "0.23"
tree-sitter-css = "0.25"
tree-sitter-bash = "0.25"

# napi-rs for Node.js bindings
napi = { version = "3", optional = true }
napi-derive = { version = "3", optional = true }

[build-dependencies]
serde_json = { workspace = true }
napi-build = "2"

[dev-dependencies]
insta = { version = "1.42", features = ["yaml", "redactions"] }
vt100 = "0.16"
proptest = "1"