From b649a7ab8de6488c1341e94c37d032c07d5b3f13 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Thu, 26 Mar 2026 19:19:47 -0700 Subject: feat: Use eye-declare for more performant and flexible AI TUI (#3343) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR replaces the mess of custom rendering code in Atuin AI with [eye-declare](https://github.com/BinaryMuse/eye-declare), and updates the TUI to feel more terminal-native: output appears inline and persists in scrollback, so you can scroll up and look at previous conversations for reference. The "review" state — which used to exist between the LLM generating a response and the user either executing or following up — has been removed; just start typing to follow up with the LLM, or press `enter` at the empty input box to execute the suggested command. image --- crates/atuin-ai/Cargo.toml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'crates/atuin-ai/Cargo.toml') diff --git a/crates/atuin-ai/Cargo.toml b/crates/atuin-ai/Cargo.toml index 1b81646c..a62e3274 100644 --- a/crates/atuin-ai/Cargo.toml +++ b/crates/atuin-ai/Cargo.toml @@ -31,14 +31,17 @@ reqwest = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } crossterm = { workspace = true, features = ["use-dev-tty", "event-stream"] } -ratatui = { workspace = true, features = ["unstable-rendered-line-info"] } +ratatui = { workspace = true } futures = "0.3" eventsource-stream = "0.2" pulldown-cmark = "0.13.0" async-stream = "0.3" uuid = { workspace = true } -tui-textarea-2 = "0.9.1" +tui-textarea-2 = "0.10.2" unicode-width = "0.2" +eye_declare = "0.1" +ratatui-core = "0.1" +ratatui-widgets = "0.3" [dev-dependencies] pretty_assertions = { workspace = true } -- cgit v1.3.1