[package] name = "kebab-tui" version = { workspace = true } edition = { workspace = true } rust-version = { workspace = true } license = { workspace = true } repository = { workspace = true } description = "Ratatui shell + Library pane for kebab — UI consumes kebab-app facade only (P9-1)" [dependencies] kebab-core = { path = "../kebab-core" } kebab-config = { path = "../kebab-config" } # UI facade rule (design §8): UI crates may only touch `kebab-app`. The # search / store / embed / llm / rag layers stay invisible behind it. kebab-app = { path = "../kebab-app" } # p9-fb-22: `unstable-rendered-line-info` exposes # `Paragraph::line_count(width)` for the Ask follow-tail scroll # math. Pinned ratatui 0.28.x means the unstable surface is fixed # until we deliberately bump the dep. ratatui = { version = "0.28", features = ["unstable-rendered-line-info"] } crossterm = "0.28" anyhow = { workspace = true } tracing = { workspace = true } thiserror = { workspace = true } time = { workspace = true } serde_json = { workspace = true } # Korean / wide-char column width — Ratatui's `Span` truncates by chars, # not display width, so a list cell with `한` (width 2) followed by `a` # (width 1) overflows by one column without explicit width accounting. unicode-width = "0.2" # p9-fb-11: parse markdown answer bodies into styled `Span`/`Line`s. # Same parser the ingest pipeline uses (kebab-parse-md) — keeps the # tokenizer behavior aligned with what the corpus is normalized as. pulldown-cmark = { version = "0.13", default-features = false } [dev-dependencies] tempfile = { workspace = true } kebab-app = { path = "../kebab-app" } [lints] workspace = true