[package]
name = "ftui-runtime"
version = "0.3.1"
edition = "2024"
license-file = "../../LICENSE"
description = "Elm-style runtime loop and subscriptions for FrankenTUI."
repository = "https://github.com/Dicklesworthstone/frankentui"
homepage = "https://github.com/Dicklesworthstone/frankentui"
documentation = "https://docs.rs/ftui-runtime"
readme = "../../README.md"
keywords = ["tui", "terminal", "ui", "ftui", "frankentui"]
categories = ["command-line-interface", "gui"]
[features]
default = []
render-thread = []
stdio-capture = []
tracing = []
state-persistence = ["dep:serde", "dep:serde_json", "dep:base64"]
policy-config = ["dep:serde", "dep:serde_json", "dep:toml"]
crossterm-compat = ["ftui-core/crossterm"]
native-backend = ["dep:ftui-tty"]
hamt = ["dep:im"]
event-trace = ["dep:serde", "dep:serde_json", "dep:flate2"]
telemetry = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:tracing-opentelemetry",
"dep:tracing-subscriber",
]
asupersync-executor = ["dep:asupersync"]
[dependencies]
ftui-backend = { path = "../ftui-backend", version = "0.3.1" }
ftui-core = { path = "../ftui-core", version = "0.3.1" }
ftui-layout = { path = "../ftui-layout", version = "0.3.1" }
ftui-i18n = { path = "../ftui-i18n", version = "0.3.1" }
ftui-render = { path = "../ftui-render", version = "0.3.1" }
ftui-style = { path = "../ftui-style", version = "0.3.1" }
ftui-text = { path = "../ftui-text", version = "0.3.1" }
ftui-tty = { path = "../ftui-tty", version = "0.3.1", optional = true }
arc-swap = "1.8.2"
tracing = "0.1.41"
unicode-segmentation = "1.12.0"
unicode-width = "0.2.2"
web-time = "1.1.0"
asupersync = { version = "0.2.9", optional = true }
opentelemetry = { version = "0.31", optional = true }
opentelemetry_sdk = { version = "0.31", optional = true }
opentelemetry-otlp = { version = "0.31", default-features = false, features = ["http-proto", "reqwest-blocking-client"], optional = true }
tracing-opentelemetry = { version = "0.32", optional = true }
tracing-subscriber = { version = "0.3.20", features = ["registry", "env-filter"], optional = true }
serde = { version = "1.0.227", features = ["derive"], optional = true }
serde_json = { version = "1.0.145", optional = true }
base64 = { version = "0.22", optional = true }
im = { version = "15.1", optional = true }
flate2 = { version = "1.1", optional = true }
toml = { version = "0.8", optional = true }
[dev-dependencies]
ftui-core = { path = "../ftui-core", version = "0.3.1", features = ["test-helpers"] }
ftui-harness = { path = "../ftui-harness" }
criterion = { version = "0.8.2", features = ["html_reports"] }
proptest = "1.7.0"
tempfile = "3.22.0"
serde = { version = "1.0.227", features = ["derive"] }
serde_json = "1.0.145"
base64 = "0.22"
im = "15.1"
flate2 = "1.1"
opentelemetry = "0.31"
opentelemetry_sdk = { version = "0.31", features = ["testing"] }
tracing-opentelemetry = "0.32"
tracing-subscriber = { version = "0.3.20", features = ["registry", "env-filter"] }
[[test]]
name = "deterministic_replay"
required-features = ["event-trace"]
[[test]]
name = "e2e_recipe_d_deterministic_replay"
required-features = ["event-trace"]
[[bench]]
name = "telemetry_bench"
harness = false
required-features = ["telemetry"]
[[bench]]
name = "tick_strategy_bench"
harness = false
[[bench]]
name = "ivm_bench"
harness = false
[[bench]]
name = "pane_terminal_bench"
harness = false