---
title: "tuika 0.6.0"
description: "Release notes for tuika 0.6.0 (2026-07-25). Highlights: Split-footer terminal mode.; Borrowed scene roots.."
image: "https://tuika.dev/social-card.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://tuika.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# tuika 0.6.0

Released 2026-07-25. [crates.io](https://crates.io/crates/tuika/0.6.0) · [docs.rs](https://docs.rs/tuika/0.6.0/tuika/) · [GitHub release](https://github.com/everruns/tuika/releases/tag/v0.6.0)

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](https://raw.githubusercontent.com/everruns/tuika/v0.6.0/docs/demos/split-footer.svg)

**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:

```rust
  RunnerConfig { tick_rate }
```

  After:

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

Source: https://tuika.dev/releases/0.6.0/index.mdx
