[package] name = "jcode-tui" version = "0.1.0" edition = "2024" publish = false # Presentation layer for jcode: the terminal UI (`tui`) and the offline replay # `video_export`, extracted out of the monolithic root `jcode` crate so they # compile as a separate rustc unit. This crate builds on top of the application # core (`jcode-app-core`) and re-exports it via `pub use jcode_app_core::*`, so # every existing `crate::` path (e.g. `crate::config`, `crate::server`) # keeps resolving unchanged across the tui code that was moved here. The root # `jcode` crate (cli + bin) in turn re-exports this crate via # `pub use jcode_tui::*`. [lib] name = "jcode_tui" path = "src/lib.rs" [dependencies] # Application core (server, agent, provider, auth, session, tool, config, ...). # Re-exported via `pub use jcode_app_core::*` in lib.rs. default-features=false # so this crate (and ultimately the root crate) controls app-core's features. jcode-app-core = { path = "../jcode-app-core", default-features = false } # Pure math kernels for the idle animations (3D samplers, glyph chooser, # HSV->RGB). Pinned to opt-level = 3 in all profiles via workspace Cargo.toml so # the hot trig loops stay optimized even in debug/selfdev builds. jcode-tui-anim = { path = "../jcode-tui-anim" } # Async runtime tokio = { version = "1", features = ["fs", "io-std", "io-util", "macros", "net", "process", "rt-multi-thread", "signal", "sync", "time"] } futures = "0.3" async-trait = "0.1" # Serialization serde = { version = "1", features = ["derive"] } serde_json = { version = "1", features = ["raw_value"] } # Utilities anyhow = "1" libc = "0.2" chrono = { version = "0.4", features = ["serde"] } regex = "1" dirs = "5" similar = "2" tempfile = "3" open = "5" # OAuth / hashing helpers used by the login + account UI base64 = "0.22" sha2 = "0.10" rand = "0.9.3" hex = "0.4" url = "2" urlencoding = "2" # TUI ratatui = "0.30" crossterm = { version = "0.29", features = ["event-stream"] } arboard = "3" image = { version = "0.25", default-features = false, features = ["png", "jpeg"] } unicode-width = "0.2" # Presentation-layer workspace crates jcode-build-meta = { path = "../jcode-build-meta" } jcode-logging = { path = "../jcode-logging" } jcode-core = { path = "../jcode-core" } jcode-fuzzy = { path = "../jcode-fuzzy" } jcode-config-types = { path = "../jcode-config-types" } jcode-selfdev-types = { path = "../jcode-selfdev-types" } jcode-session-types = { path = "../jcode-session-types" } jcode-provider-core = { path = "../jcode-provider-core" } jcode-tui-markdown = { path = "../jcode-tui-markdown" } jcode-tui-messages = { path = "../jcode-tui-messages" } jcode-tui-core = { path = "../jcode-tui-core" } jcode-tui-mermaid = { path = "../jcode-tui-mermaid" } jcode-tui-account-picker = { path = "../jcode-tui-account-picker" } jcode-tui-render = { path = "../jcode-tui-render" } jcode-tui-visual-debug = { path = "../jcode-tui-visual-debug" } jcode-tui-session-picker = { path = "../jcode-tui-session-picker", features = ["serde"] } jcode-tui-style = { path = "../jcode-tui-style" } terminal-colorsaurus = "1.0" jcode-tui-permissions = { path = "../jcode-tui-permissions" } jcode-tui-tool-display = { path = "../jcode-tui-tool-display" } jcode-tui-usage-overlay = { path = "../jcode-tui-usage-overlay" } jcode-terminal-image = { path = "../jcode-terminal-image" } jcode-productivity-core = { path = "../jcode-productivity-core" } jcode-tui-workspace = { path = "../jcode-tui-workspace" } [features] default = ["pdf", "embeddings", "bedrock"] # Exposes bench-only debug helpers (e.g. debug_copy_selection_text_for_bench) # consumed by the dev `tui_bench` binary in the root crate. dev-bins = [] # Forwarded to app-core (and onward to jcode-base) so the root crate's feature # set fully controls the optional stacks. jemalloc = ["jcode-app-core/jemalloc"] jemalloc-prof = ["jcode-app-core/jemalloc-prof"] embeddings = ["jcode-app-core/embeddings"] pdf = ["jcode-app-core/pdf"] bedrock = ["jcode-app-core/bedrock"] mmdr-size-api = ["jcode-tui-mermaid/mmdr-size-api"] # Forwards the application core's `test-support` feature (and onward to # jcode-base) so downstream crates' test targets can reach the whole stack's # test helpers. Never enabled in normal (non-test) builds. test-support = ["jcode-app-core/test-support"] [dev-dependencies] # Enables the downstream test-support helpers for *this* crate's own test # target. Feature unification applies this only to test/bench/example builds. jcode-app-core = { path = "../jcode-app-core", features = ["test-support"] } [target.'cfg(target_os = "macos")'.dependencies] global-hotkey = "0.7"