1 Upgrading to v0.9.3
Gaurav Gosain edited this page 2026-10-14 20:11:46 +04:00

tuios v0.9.3 changes the default window_size, the folder of the daemon socket, and some security rules. Most of the release is in the daemon. This page lists each change and what to do.

The full release notes are at tuios.dev/releases/v0-9-3.

The daemon

The daemon protocol did not change, so a v0.9.2 daemon works with a v0.9.3 client, and the reverse. The new fields are optional in both directions. Most of this release is in the daemon. To get it, restart the daemon:

tuios kill-server

This closes every pane in every session, so save your work first. Copies that run when the daemon stops continue after it starts again.

window_size defaults to latest

[daemon] window_size now defaults to latest. The session takes the size of the client that last had input. To keep the old behaviour, set:

[daemon]
window_size = "smallest"

One daemon per user

On Linux, with no XDG_RUNTIME_DIR, tuios now looks for the daemon in this order:

  1. $XDG_RUNTIME_DIR/tuios, when XDG_RUNTIME_DIR is set.
  2. /run/user/<uid>/tuios, when you own /run/user/<uid> and its mode is 0700.
  3. /tmp/tuios-<uid>.

A client still finds a daemon that an older tuios started in /tmp/tuios-<uid>. When two daemons answer, the one in /run/user wins, and a command at a terminal shows a warning once. The warning gives the PID of the other daemon and the steps to move its sessions. macOS does not change.

The files grant for strict panes

Under [agents.permissions] mode = "strict", a pane needs the files grant to copy files. Add it to grants for the panes that need it. A pane started in your home folder, or in a folder above it, cannot copy files. Start it in a project folder or a worktree. Under the default mode = "open", nothing changes.

Approval risk root

The outside the worktree mark can change for some panes:

  • A pane started in your home folder that runs an agent in a project gets that project as its root.
  • A relative path that runs in a folder outside the root is now outside.
  • A path with a variable in it (other than a leading $HOME), or with ~user, is now outside.

Host allow lists

A machine with no [hosts] table gets files with the other default capabilities. A table that sets allow without files keeps that machine from file copies and from image paste. To allow them, add files:

[hosts.laptop]
allow = ["list", "mail", "open", "write", "files"]

Writes over a link land only in ~/Downloads/tuios, unless you set files_roots.

New config keys

The defaults keep the old behaviour, apart from display. The [hosts] lines are examples.

[daemon]
display = "follow"               # follow, off

[appearance]
link_hover = "safe"              # safe, always
drop_preview = "fill"            # fill, outline, off
drop_preview_delay = "120ms"

[appearance.sidebar]
header_case = "lowercase"        # lowercase, uppercase
subagent_rows = "rows"           # rows, tree, count
subagent_collapse = "off"        # off, expanded, collapsed
subagent_fields = "mark,name,time,note"
subagent_max_rows = 0            # 0 to 16, 0 is no limit
subagent_hide_finished = "off"   # a duration, or off

[hosts.laptop]
files_roots = ["~/Downloads/tuios", "~/dev"]   # where the machine may write
files_read_roots = ["~/share"]                 # unset: all but the read deny list
files_min_free = "1GiB"                        # "0" turns it off

[notify.webpush] and the files grant are also new. See CONFIGURATION.md.

For developers

progstatus, the parser and encoder of the Program Status Protocol, is now its own Go module, tuios.dev/progstatus v0.1.0 (#663, #686). The repository has a go.work. To build tuios as go install does, use GOWORK=off.

The repository has a justfile with the commands to build, test and debug tuios on one machine. Run just to list them. scripts/deploy-dev.sh is removed. Use just deploy (#703).