All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Breaking Change! Public API cleanup, constructors are now much more idiomatic
- Added
StyleSets. Get all the Ratatui Styles you need in one call.
- Light/Dark mode detection. It could break crossterm, so removed for now.
- Migrated theme format from custom TOML to base24 YAML (spec v0.4.0). Theme files now use
.yamlextensions and the flat base24 key/value format. - Custom flat-YAML parser replaces
serde_yaml;serde_json/jsonschema/tomlremoved as theme dependencies. Themestruct redesigned:Base24Slotsholds raw hex values; all semantic fields (Ansi,Semantic,Ui*) are resolved at load time from base24 slots.
Theme::from_base24_str()- parse a base24 YAML string into a fully resolvedTheme.- Built-in themes converted to base24 YAML.
Ansi::get()(dead code after base24 migration).tca importandtca exportCLI commands.
tca add- install themes from local files, directories, or by downloading from a remote git repository by name (fuzzy matching supported)tca config- show or set user configuration valuestca init- create a default config file and install built-in themes as TOML filesTheme::to_pathbuf()andTheme::to_filename()intca-types- derive a theme's canonical install path from its nameThemeCursor::set_index()— move the cursor to an arbitrary index.ThemeCursor<Theme>::set_current()— move the cursor to a theme by name (slug-insensitive: "Nord Dark", "nord-dark", "nordDark" all match).TcaThemeCursor::set_current()— same slug-insensitive name lookup for the ratatui cursor.PartialOrd/OrdforTcaThemeintca-ratatui, ordering by name slug.
ThemeCursor::new()now acceptsimpl IntoIterator<Item = T>instead ofVec<T>, removing theT: Ordrequirement from the generic impl block.
ThemeCursor<T>generic cycling cursor intca-types. Comes withwith_builtins(),with_user_themes(),with_all_themes(), andnew(vec)constructors onThemeCursor<Theme>.TcaThemeCursornewtype intca-ratatuiwrappingThemeCursor<TcaTheme>. Full navigation API with its ownwith_builtins(),with_user_themes(),with_all_themes(), andnew(vec)constructors.BuiltinTheme::iter()convenience wrapper that hides thestrumdependency from callers.
tcacrate renamed totca-clion crates.io (binary nametcais unchanged).tca-ratatui: feature flag corrected fromloadertofs(aligns withtca-types).tca-ratatui:tomlandterminal-colorsaurusare now optional dependencies, only pulled in under thefsfeature.
- Flexible theme name resolution. e.g. "Nord Dark", "Nord-Dark", "nord-dark", "nord dark", "nordDark" all resolve to the same theme.
- TcaTheme::default() is the same as TcaTheme::new(None)
- Built-in themes embedded directly in
tca-types(no files required):catppuccin-mocha,cyberpunk,dracula,everforest-dark,gruvbox-dark,mono,nord,one-dark,rose-pine,solarized-light,tokyo-night. TcaTheme::new()intca-ratatuiis the primary entry point for loading a theme. Resolves a theme name or file path through a 4-step fallback chain: user theme files -> built-in themes -> user preference config -> terminal dark/light auto-detection.load_all_builtin()intca-ratatuireturns all built-in themes asVec<TcaTheme>.BuiltinThemeenum intca-typeswithEnumItersupport for iterating all built-ins.TcaConfigintca-loaderreads and writes user theme preferences from~/.config/tca/tca.toml.mode_aware_theme()returns the best theme name for the current terminal's dark or light mode.
TryFrom<tca_types::Theme> for TcaThemeis now#[doc(hidden)].- Updated all crate READMEs.
load_all_from_dir()andload_all_from_theme_dir()removed fromtca-ratatui's public API. Usetca_loader::list_themes()combined withTcaTheme::new()instead.