Upgrading to v0.13.1
Move from v0.12.1 to v0.13.1 with one restart of the daemon, live upgrades from then on, and the changes to check after the move.
There is no v0.12.2. Everything that was on its way to 0.12.2 ships in 0.13.1, so this page is the one to read when you come from v0.12.1. Most of it needs nothing from you. The parts that can surprise you are first.
Move the daemon: one restart, then live upgrades
Install the new build the way you installed the old one: brew upgrade tuios, yay -S tuios-bin, the install script, or tuios update for a binary from the script or an archive. The daemon keeps running the old build until you move it.
A v0.12.1 daemon cannot hand its panes over, so this one move is a restart:
tuios restart-serverIt lists the programs that stop and what comes back, and asks first. Each session comes back with its layout, the last 1000 lines of each pane's history, and new shells. tuios daemon upgrade on a v0.12.1 daemon says the same thing and changes nothing.
From v0.13.1 on, the next move is live. tuios daemon upgrade hands the panes to the new binary, and every program keeps running with the same process and the same screen. Your client on this machine reattaches and runs the new build too. scripts/install.sh --upgrade-server and tuios hosts sync --restart do the same. A live upgrade is refused, and nothing changes, on Windows, while a pane runs for another machine or on another machine, or while a tuios fan verify check runs. See Upgrade in place.
Mixed versions
A v0.12.1 client can attach to a v0.13.1 daemon, and a v0.13.1 client to a v0.12.1 daemon: the wire protocol is the same version. A client that is older than the daemon does not show what is new, such as the limit_reached state.
Things you may notice
- Cell frames are the default. The client writes each frame as cells and sends the terminal only the cells that changed, on every terminal except on Windows. It looks the same and costs less. If text lands in the wrong place or stale cells stay after a redraw, set
cell_frames = "off"in[appearance], or start tuios withTUIOS_CELL_FRAME=0, and please report your terminal's name and version. See How frames reach the terminal. - Go-to holds the switchers. The session switcher, the workspace switcher and the window list are now go-to. A pane row ends with the pane's folder, and you can filter by the folder. Every list takes the keys in
[keybindings.lists], including the ones that hadj,kand a page of ten built in. See List keys. - Popups sit in the middle of the screen, clear of the rail. The agents view no longer dims the dock and the rail.
- Minimized panes in the dock follow window order, so dock pill N and restore N always pick the same pane, on every client.
- bash and zsh get prompt marks. tuios turns on OSC 133 marks in the shells it starts, with no edit to your files. Set
integration = "off"in[shell]to start shells as before. See Shell prompt marks. - A child agent asks its parent first. A question from an agent started with
start-agentis mailed to the agent that started it before it reaches you. tuios task claim --nextleaves the cards that were added with--ask-first. Claim one of those by its id.
Names that changed
Each action has one name now. The older names still work in config.toml, in a preset, in a tape and over the protocol, so you do not have to edit anything. tuios keybinds list shows them after the description as "(also: ...)". The full table is in Older action names. The common ones:
| Older name | Name now |
|---|---|
prefix_new_window, window_prefix_new | new_window |
prefix_close_window, window_prefix_close | close_window |
window_prefix_tiling | toggle_tiling |
terminal_focus_up, terminal_focus_down | focus_up, focus_down |
prefix_settings | open_settings |
prefix_help | toggle_help |
debug_prefix_cancel and the other five *_prefix_cancel | prefix_cancel |
A keybinding that names an action tuios does not know now gets a warning when the config loads. Before, it did nothing in silence. If you see one, check the name for a typo.
Scripts and agents
- Usage limits have their own state. An agent that stops on a usage or rate limit is
limit_reached, noterrored.set-agent-state errored --kind usage_limitlands aslimit_reachedtoo. A script that waits forerroredshould also look forlimit_reached. See A usage limit. - Hooks talk to the daemon. Run
tuios integration installagain. Where the machine hasnc -Uorsocat, each hook and the Claude Code status line become one line of sh that sends the event to the daemon, so a hook no longer starts a whole tuios. Without those programs, the hooks stay as they were. - Mail from your lead. Mail from the agent that started you is marked "from your lead". Mail that only says it comes from there is not.
New options, all off or as before
| Option | Does |
|---|---|
[[actions]] and [menus.NAME] | Actions and menus of your own. See Actions and menus of your own |
[shell] login = true | Starts new panes as login shells. See Login shells |
[agents] name_hint = "off" | Leaves the advice to name the pane out of an agent's start hint |
[agents] acp_version = 2 | Speaks the draft version 2 of the Agent Client Protocol. See ACP version |
[daemon] client_follows_upgrade = false | Keeps the old client running after a live upgrade |
mouse.double_click_ms, mouse.drag_threshold, appearance.whichkey_delay_ms, appearance.idle_fps and more | Timings that were fixed. Each default is the old value |
Every option, with its default and the version that added it, is in the Option Explorer.
Building from source
- The toolchain is Go 1.27.4.
go installfetches it for you when your Go is older. - The release turns inlining off in the packages no hot path calls, through
scripts/goflags.sh. A plaingo installskips that, so its binary is about 0.8 MB larger. The installers, the justfile and the Dockerfile read the list. The Nix package does not yet, so it is the larger binary too. - The ghostty backend is on libghostty-vt 1.0.1. Rebuild it with
scripts/install.sh ghostty.
Going back to v0.12.1
Install v0.12.1 again and run tuios restart-server. A live upgrade from v0.13.1 down to v0.12.1 is refused, because v0.12.1 cannot read the newer handoff, so the restart stops the programs in your panes. Your sessions and layouts come back, with the last 1000 lines of each pane's history, as after any restart.
What's New in v0.13.1
The main changes since v0.12.1, each with the page that explains it, and what to check when you upgrade.
Getting Started
Install TUIOS, open your first windows, and learn the keys you need on day one.
tuios lives only at tuios.dev and github.com/Gaurav-Gosain/tuios. tuios has no X or Twitter account. An account that offers a tuios token or presale is not this project.