# v0.3.0

URL: https://tuios.dev/releases/v0-3-0

> Bubble Tea v2 with keyboard enhancements, configurable tiling layouts, theming turned opt-in, and a scrollback rewrite.

27 commits in the three days after v0.2.0, including the v0.2.1 and v0.2.2
patch releases. The main change is the move to Bubble Tea v2, which lets tuios
use the kitty keyboard protocol. Tiling also got real layout controls, themes
became opt-in, and scrollback got 10 to 20 times faster.

## Breaking changes

- **Themes are off by default.** v0.2.0 turned them on, and an opaque themed
  background fights any program that wants to set its own. The terminal
  background is now transparent and the default theme is none, so you get your
  terminal's own colours. To get the v0.2.0 look back, add
  `theme = "tokyonight"` (or any theme) to your config.

## Keys that mean what you typed

tuios moved to Bubble Tea v2.0.0-rc.1 and handles its keyboard enhancement
messages. On a terminal that supports the kitty keyboard protocol, tuios
detects it and turns it on, with nothing to configure.

A classic terminal cannot tell Shift+Enter from Enter, and cannot report
Super+Space at all. With the protocol on, these arrive as separate keys,
complex modifier combinations work, international layouts report correctly,
and the keys reach the program in the pane unchanged.

In terminal mode, tuios used to catch the tiling resize keys, so you could not
type `<`, `>`, `{` or `}` into a shell. Now only the `Ctrl+B` prefix is caught
in terminal mode, and every other key goes to the PTY.

## Tiling you can shape

- The master window ratio is configurable from 30% to 70%.
- Eight new resize operations, with directional variants.
- Each workspace remembers its layout and restores it.

## Appearance

These live in a new `[appearance]` config section, with matching flags.

- The dock can sit at the bottom, at the top, or be hidden. Contributed by
  Cjreek.
- Nine border styles: rounded, normal, thick, double, hidden, block, ascii, and
  two half-block variants.
- The window control buttons can be hidden.
- Windows follow the cursor visibility a program asks for, so cmatrix hides the
  cursor and nvim shows it.

## Scrollback

Scrollback moved from a growing slice to a fixed-size ring buffer. The common
operations went from O(n) to O(1), which is 10 to 20 times faster once the
buffer is full. The size is configurable from 100 to 1,000,000 lines, with a
default of 10,000.

## Fixed

- Switching workspace during an animation left windows where the animation had
  reached, sometimes one fullscreen with the rest piled on top. Animations now
  finish on a switch: the old workspace snaps to its tiled layout at once, and
  the new one tiles with its usual animation.
- Grid layouts with five or more windows no longer leave dead space at the
  bottom.
- With the dock at the top, mouse resizing no longer uses boundaries two lines
  off.
- The parent `TERM` variable is kept, with `xterm-256color` as a fallback.
- tuios answers XTWINOPS queries (CSI 14, 16 and 18 t), so programs that ask
  for the window size in pixels or cells get an answer.
- PTY setup is split into platform-specific files, which fixes the Windows
  build after Unix-only process attributes broke it.
- Viewport clipping mis-parsed ANSI escapes because of a logical AND that
  should have been OR.

## Project

- Contributor plumbing, mostly from cr2007: issue forms for bugs and feature
  requests, an auto-labeler, a PR template, a security policy, and README
  keybindings shown with kbd tags.
- The README notes kitty protocol support, from ShalokShalom.

v0.3.0 was tagged on 5 November 2025. Everything after it builds on the Bubble
Tea v2 migration.
