{"repo":"atuinsh/eye-declare","free":true,"listed":false,"github":"https://github.com/atuinsh/eye-declare","clone":"git clone https://github.com/atuinsh/eye-declare.git","description":"A declarative inline TUI rendering library for Rust, built on Ratatui","language":"Rust","stars":131,"topics":["declarative","rendering","rust","terminal","tui"],"license":null,"category":"cli-tools","readme_excerpt":"eye-declare Inline terminal UIs for Rust, built on Ratatui. Check out the interactive examples --- Inline interfaces live in your terminal's normal flow, where finished output scrolls into native scrollback and only a small live region updates in place. Ideal for CLI tools, AI agents, and interactive prompts: programs where output accumulates and history should stay visible, exactly as if the program had printed it. The idea eye-declare models inline applications as a timeline : an append-only sequence of finished output with a small live region at the bottom. Emitting a finished block is I/O, irreversible like println! , so it happens in your update function ( ctx.push ). The live tail is the only thing that behaves like a screen, so it's the only thing described by a view function — re-run every frame, pure, cheap because it's small. If you've written Elm, iced, or Redux, the rest is familiar: your struct is the model, messages drive update , async work arrives as streams of messages, and cancellation is dropping a handle. There's no reconciliation, no keys, no dirty tracking, no framework-owned widget state, and no hidden focus registry, because a timeline needs none of them. Example For a complete, runnable example of a streaming AI chat against the OpenRouter API in one commented file, see examples/openrouter.rs : Highlights - Fluent builders, no macro DSL — views are plain Rust ( col() , .when(…) , iterators), with full rust-analyzer and cargo fmt support. - Strict-Elm ","default_branch":null,"files":null,"tree":[],"storefront":"/r/atuinsh","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/atuinsh/eye-declare/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}