# v0.8.5

URL: https://tuios.dev/releases/v0-8-5

> tuios 0.8.5 makes tiling more configurable and lets herdr plugins run in a tuios pane. It adds a tmux-style size policy for sessions with more than one client. Scrollback keeps its text when you resize a pane.

tuios 0.8.5 makes tiling more configurable and lets herdr plugins run in a tuios pane. It adds a tmux-style size policy for sessions with more than one client. Scrollback keeps its text when you resize a pane. The sidebar files list follows the disk and panes on other machines.

Before you upgrade, read [Breaking changes and migration](https://tuios.dev/releases/v0-8-5#breaking-changes-and-migration). The pure Go emulator now reflows lines when a pane changes width.

The full list is at [tuios.dev/releases](https://tuios.dev/releases).

## Install

```bash
brew install tuios                     # Homebrew (macOS, Linux)
yay -S tuios-bin                       # AUR (tuios-web-bin for the web server)
nix run github:Gaurav-Gosain/tuios     # Nix
curl -fsSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash
go install github.com/Gaurav-Gosain/tuios/cmd/tuios@v0.8.5
docker run -it --rm ghcr.io/gaurav-gosain/tuios:v0.8.5
```

A binary installed by the script or from an archive updates with `tuios update`.

## New features

- **Master position.** The master pane can be on the left, right, top or bottom, or in the center ([#325](https://github.com/Gaurav-Gosain/tuios/pull/325)). With `center`, the other panes go to the right and to the left in turn. This closes [#321](https://github.com/Gaurav-Gosain/tuios/issues/321).
  - `appearance.master_position` sets the side. `appearance.master_count` sets how many master panes there are (1 to 9).
  - In the layout prefix (`Ctrl+B L`):
    - `o` moves the master to the next side.
    - `Enter` swaps the focused pane with the master.
    - `m` focuses the master.
    - `i` and `d` add and remove a master.
  - `tuios set-layout --master-position center --masters 2` changes the current workspace.
  - Each workspace keeps its own side and count, also after a daemon restart.
- **herdr plugins.** In a pane, herdr's command line now answers through tuios ([#328](https://github.com/Gaurav-Gosain/tuios/pull/328)).
  - terminal-browser, terminal-code and the Vim navigation plugins work in a tuios pane.
  - The herdr socket answers 8 more methods: `pane.process_info`, `pane.focus_direction`, `pane.neighbor`, `pane.edges`, `pane.swap`, `pane.zoom`, `workspace.focus` and `agent.start`.
  - Every pane gets `HERDR_TAB_ID`.
  - Each method is held to the grants of the pane that calls it. `pane.process_info` shows the command line and folder only to a pane that has `write`.
- **Session size.** `[daemon] window_size` sets the size of a session that has more than one client ([#330](https://github.com/Gaurav-Gosain/tuios/pull/330)). The values are the values of tmux's `window-size` option.
  - `smallest` (the default) works as before.
  - `largest` uses the biggest client.
  - `latest` follows the client you typed in last.
  - A client smaller than the session shows the part of the session around the cursor. A mark on the line above the dock says so.
  - `tuios set-config daemon.window_size latest -s NAME` changes a running session.
  - A read-only `tuios-web` viewer does not set the size under `largest` or `latest`.
- **Subagents.** A Claude Code agent's rail row shows how many subagents it runs, for example `3 subagents` ([#307](https://github.com/Gaurav-Gosain/tuios/pull/307)). Thanks to @JakeChop.

## Fixes

- **Scrollback and resize.** Text no longer gets lost when a pane changes size ([#331](https://github.com/Gaurav-Gosain/tuios/pull/331), [#333](https://github.com/Gaurav-Gosain/tuios/pull/333), [#323](https://github.com/Gaurav-Gosain/tuios/pull/323)).
  - A narrower pane keeps the end of each line, and a wider pane shows it again.
  - A shorter pane keeps the text below the cursor and the prompt under a full-screen program.
  - A scroll region moves its rows to history.
  - Wide characters stay in history.
  - A daemon restart keeps history rows that are wider than the pane.
- **Files list.** The sidebar files list now updates when a file is added, removed or renamed ([#319](https://github.com/Gaurav-Gosain/tuios/pull/319), [#327](https://github.com/Gaurav-Gosain/tuios/pull/327)). This closes [#313](https://github.com/Gaurav-Gosain/tuios/issues/313).
  - A pane on another machine updates its list when you `cd`, and when files change on that machine.
  - In a pane that runs `ssh`, the files section says that the shell is on the other machine.
  - Nothing polls. An idle session stays idle.
- **New windows in BSP.** A new window now splits the focused pane, on the preselected side when you set one ([#349](https://github.com/Gaurav-Gosain/tuios/pull/349)). Before, it always split the last pane, which is the bottom-right one. This answers discussion [#347](https://github.com/Gaurav-Gosain/tuios/discussions/347).
  - A preselection now works in daemon sessions too.
  - `longest_side` reads the size of the pane it splits.
- **Zoom in the scrolling layout.** Moving to the next column while zoomed no longer shows a gap during the slide ([#324](https://github.com/Gaurav-Gosain/tuios/pull/324)).
- **Log viewer.** The log viewer opens on the newest entry and scrolls to the last entry it draws ([#329](https://github.com/Gaurav-Gosain/tuios/pull/329)). Thanks to @davidreuss.
- **install.sh on the BSDs.** `install.sh` downloads the right archive on FreeBSD and OpenBSD ([#322](https://github.com/Gaurav-Gosain/tuios/pull/322)). Thanks to @fdoving.
- **herdr events.** A client that subscribes and then acts at once now gets the event ([#326](https://github.com/Gaurav-Gosain/tuios/pull/326)).
- **Kitty images.** An image in a pane started with `new-window -- prog` no longer disappears when the session state syncs ([#343](https://github.com/Gaurav-Gosain/tuios/pull/343)).
- **Speed.**
  - The terminal emulator reads kitty and sixel image data about 15 times faster ([#338](https://github.com/Gaurav-Gosain/tuios/pull/338)).
  - A cropped pane draws about three times faster, and a folder that changes often causes fewer sidebar redraws ([#335](https://github.com/Gaurav-Gosain/tuios/pull/335)).

## Breaking changes and migration

### Reflow

- The pure Go emulator now rewraps the lines on the screen when a pane changes width, as kitty, ghostty and tmux do. Older history keeps the width it was written at.
- On the pure Go emulator, a full-width prompt that is not marked with OSC 133 leaves one extra row each time the pane gets narrower. The ghostty emulator already did this. To stop it, mark the prompt with OSC 133. See the shell recipes in `tuios doctor`.

### herdr

- `HERDR_BIN_PATH` in a pane now names a link to tuios that answers herdr's command line. Before, it named the tuios binary.
- A herdr plugin that calls `$HERDR_BIN_PATH` now reaches tuios. To run the real herdr inside a tuios pane, set `[agents] herdr_protocol = "agents"` as before.

### Layout keys

- `o`, `Enter`, `m`, `i` and `d` in the layout prefix are new defaults. If your `[keybindings.layout_prefix]` already binds one of these keys, your binding wins.

### Claude Code subagents

- The subagent count needs version 3 of the Claude Code integration. Run `tuios integration status`. If it reports the integration as out of date, run:

  ```bash
  tuios integration install claude-code
  ```

### Mixed versions

- The session size policy, the herdr command front, the files list for panes on other machines, the subagent count and master positions need a v0.8.5 daemon. To start a v0.8.5 daemon, run `tuios kill-server` after the upgrade. This closes every pane in every session, so save your work first.
- An older client in a session under `latest` or `largest` makes the session use `smallest` until it leaves.

## Contributors

Thank you to everyone who sent a pull request for this release:

- @JakeChop: subagent count on the rail ([#307](https://github.com/Gaurav-Gosain/tuios/pull/307))
- @davidreuss: log viewer scroll ([#329](https://github.com/Gaurav-Gosain/tuios/pull/329))
- @fdoving: install.sh on FreeBSD and OpenBSD ([#322](https://github.com/Gaurav-Gosain/tuios/pull/322))

Thanks to @adamcstephens for the master position request ([#321](https://github.com/Gaurav-Gosain/tuios/issues/321)), and to @LovesAsuna for the files list reports ([#313](https://github.com/Gaurav-Gosain/tuios/issues/313)) and the BSP report ([#347](https://github.com/Gaurav-Gosain/tuios/discussions/347)).
