Skip to main content

Ratatui

Todo TUI in Rust 5. Event polling, the edit vertical slice, and closing

·7 mins
The rat serves the last course. We fix input lag with non-blocking event polling, add the edit feature as a full vertical slice from application layer to TUI, watch the state machine grow from 3 to 4 variants with compiler-guided safety, and close with the key takeaways from the entire migration.

Todo TUI in Rust 4. UX polish and the input popup

·6 mins
The rat learns to plate. Five UX improvements transform a monochrome prototype into a scannable, responsive tool: color coding, positive feedback, empty state guidance, transient messages, and a visual cursor. Then we replace the cramped command bar input with a centered modal popup.

Todo TUI in Rust 3. Events, terminal safety, and the migration moment of truth

·7 mins
The rat wires up the ears. We implement mode-specific event handlers with crossterm, redesign the key mapping to use a toggle instead of separate keys, solve the terminal restore problem with a capture-cleanup-return pattern, and run cargo test to discover that zero lines changed outside the adapter.

Todo TUI in Rust 2. Rendering the View layer with ratatui

·5 mins
The rat starts painting. We implement the rendering layer: immediate-mode drawing, a three-zone layout with Layout::vertical, a task table with StatefulWidget and row highlighting, a context-sensitive command bar that changes with InputMode, and the subtle Block gotcha that cost a few minutes of debugging.

Todo TUI in Rust 1. Scaffolding the TUI adapter and designing the state machine

·8 mins
We start a new series by migrating the CLI adapter to a ratatui TUI. We set up the new dependencies, design the module structure under adapters/tui/, model the interaction modes as an enum to make invalid states unrepresentable, and solve the ownership puzzle of cloning a repository in a persistent session.

Todo CLI in Rust 5. Next step moving from CLI to a TUI with ratatui

·12 mins
We close the series by exploring what it means to migrate from CLI to TUI with ratatui: how the interaction model changes, what frictions Rust introduces with ownership and &mut in a persistent event loop, and why hexagonal architecture absorbs the change without surgery.