[workspace] resolver = "2" members = ["ratatui", "ratatui-*", "xtask", "examples/apps/*", "examples/concepts/*"] default-members = [ "ratatui", "ratatui-core", "ratatui-crossterm", # this is not included as it doesn't compile on windows # "ratatui-termion", "ratatui-macros", "ratatui-termwiz", "ratatui-widgets", "examples/apps/*", "examples/concepts/*", ] [workspace.package] authors = ["Florian Dehau ", "The Ratatui Developers"] documentation = "https://docs.rs/ratatui/latest/ratatui/" repository = "https://github.com/ratatui/ratatui" homepage = "https://ratatui.rs" keywords = ["tui", "terminal", "dashboard"] categories = ["command-line-interface"] readme = "README.md" license = "MIT" exclude = ["assets/*", ".github", "Makefile.toml", "CONTRIBUTING.md", "*.log", "tags"] edition = "2024" rust-version = "1.85.0" [workspace.dependencies] anstyle = "1" bitflags = "2.9" clap = { version = "4.5", features = ["derive"] } color-eyre = "0.6" compact_str = { version = "0.9", default-features = false } criterion = { version = "0.7", features = ["html_reports"] } crossterm = "0.29" document-features = "0.2" fakeit = "1" futures = "0.3" hashbrown = "0.15" indoc = "2" instability = "0.3" itertools = { version = "0.14", default-features = false, features = ["use_alloc"] } kasuari = { version = "0.4", default-features = false } line-clipping = "0.3" lru = "0.16" octocrab = "0.44" palette = "0.7" pretty_assertions = "1" rand = "0.9" rand_chacha = "0.9" ratatui = { path = "ratatui", version = "0.30.0-beta.0" } ratatui-core = { path = "ratatui-core", version = "0.1.0-beta.0" } ratatui-crossterm = { path = "ratatui-crossterm", version = "0.1.0-beta.0" } ratatui-macros = { path = "ratatui-macros", version = "0.7.0-beta.0" } ratatui-termion = { path = "ratatui-termion", version = "0.1.0-beta.0" } ratatui-termwiz = { path = "ratatui-termwiz", version = "0.1.0-beta.0" } ratatui-widgets = { path = "ratatui-widgets", version = "0.3.0-beta.0" } rstest = "0.26" serde = { version = "1", features = ["derive"] } serde_json = "1" strum = { version = "0.27", default-features = false, features = ["derive"] } termion = "4" termwiz = "0.23" thiserror = { version = "2", default-features = false } time = { version = "0.3", default-features = false } tokio = "1" tokio-stream = "0.1" tracing = "0.1" tracing-appender = "0.2" tracing-subscriber = "0.3" trybuild = "1" unicode-segmentation = "1" unicode-truncate = { version = "2", default-features = false } # See for information about why we pin unicode-width unicode-width = ">=0.2.0, <=0.2.1" # Improve benchmark consistency [profile.bench] codegen-units = 1 lto = true [workspace.lints.rust] unsafe_code = "forbid" [workspace.lints.clippy] pedantic = { level = "warn", priority = -1 } cast_possible_truncation = "allow" cast_possible_wrap = "allow" cast_precision_loss = "allow" cast_sign_loss = "allow" missing_errors_doc = "allow" missing_panics_doc = "allow" module_name_repetitions = "allow" must_use_candidate = "allow" # we often split up a module into multiple files with the main type in a file named after the # module, so we want to allow this pattern module_inception = "allow" # nursery or restricted as_underscore = "warn" deref_by_slicing = "warn" else_if_without_else = "warn" empty_line_after_doc_comments = "warn" equatable_if_let = "warn" fn_to_numeric_cast_any = "warn" format_push_string = "warn" map_err_ignore = "warn" missing_const_for_fn = "warn" mixed_read_write_in_expression = "warn" mod_module_files = "warn" needless_pass_by_ref_mut = "warn" needless_raw_strings = "warn" or_fun_call = "warn" redundant_type_annotations = "warn" rest_pat_in_fully_bound_structs = "warn" string_lit_chars_any = "warn" string_slice = "warn" string_to_string = "warn" unnecessary_self_imports = "warn" use_self = "warn"