Skip to content
Updated View as Markdown

tuika 0.6.0

Released 2026-07-25. crates.io · docs.rs · GitHub release

Released alongside tuika-codeformatters 0.3.1 and tuika-mermaid 0.1.1, which update their tuika dependency requirement for 0.6 compatibility.

Highlights

Split-footer terminal mode. Hosts can keep a live footer pinned to the bottom of the terminal while completed content moves into native scrollback, then return every reserved row cleanly on exit.

split-footer demo

Borrowed scene roots. ScopedScene renders and dispatches events through a borrowed View, so hosts can keep application state outside the scene without requiring 'static ownership.

Added

  • Borrowed scene roots. ScopedScene<'_, V> borrows a concrete View for one frame while owning the same ordered SceneOverlay / Dialog stack as Scene. Hosts can paint large live models directly without cloning them into a 'static Element; rendering, backdrop, placement, and focus-owner semantics are shared with owned scenes.
  • Screen modes. ScreenMode picks which part of the terminal a frame owns: Alternate (the previous, still-default behavior) or split_footer(rows), which reserves rows at the bottom of the main screen and leaves everything above as the terminal’s own scrollback — the shell prompt, the wheel, mouse selection, and the output the app publishes, which survives its exit. RunnerConfig::screen_mode drives both runners; a host with its own loop composes TerminalSession::enter_with, screen::pin_footer, and screen::close_footer.
  • Publishing above a footer. Runner::scrollback() / AsyncRunner::scrollback() return a cloneable, Send + Sync Scrollback queue of views the loop commits above the footer; screen::publish_block commits one view straight from a host’s own loop, with no Send bound.
  • New split_footer example, and cargo run --example codex -- --split-footer runs the whole coding-agent UI in the mode.
  • New scrolling-regions feature. It is a compatibility mirror of ratatui’s (Cargo unifies features one way, and HyperlinkBackend must still implement Backend), not an optimization: rows scrolled out of a DECSTBM region are discarded by the terminal instead of entering its scrollback.

Changed

  • Breaking: RunnerConfig gains a screen_mode field. Struct literals need a default update:

    Before:

    RunnerConfig { tick_rate }

    After:

    RunnerConfig { tick_rate, ..RunnerConfig::default() }
  • ScreenMode and Scrollback join the crate root and the prelude.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close