# Sessions

URL: https://tuios.dev/blog/topic/sessions

> The daemon, its clients, and panes on other machines.

## Posts

- [The daemon sent a client an older state after a newer one](https://tuios.dev/blog/the-daemon-sent-an-older-state-last.md): A flaky tuios test turned out to be the daemon delivering session state out of order. The first fix ordered by the state Version, and the review found the one kind of change that never moves the Version. The second fix counts every change.
- [Two reads of one transcript took the daemon down](https://tuios.dev/blog/two-reads-of-one-transcript.md): A tuios daemon on Windows died twice in one afternoon, with every pane in it. The trace ended inside encoding/json. Two goroutines were reading one agent transcript through one buffer, because stopping a timer does not stop a callback that has already started.
- [tuios v0.8.0](https://tuios.dev/blog/tuios-v0-8-0.md): The first release in six months. tuios now knows what the coding agents in your panes are doing, keeps your sessions in a daemon that brings them back, and runs panes on other machines.
- [TERM=dumb followed the session](https://tuios.dev/blog/term-dumb-followed-the-session.md): A session created by a command with no terminal of its own gave every pane TERM=dumb for its whole life. A screenshot test found it by failing on CI with the same numbers every time.
- [The pane ran on another machine, and ctrl+D waited for the next keypress](https://tuios.dev/blog/a-pane-on-another-machine.md): tuios daemons now talk to each other over one ssh link per machine. It shipped in stages, and each stage had a bug that taught me something.
- [A PTY has one size, and two clients had two opinions about it](https://tuios.dev/blog/a-pty-has-one-size.md): Two clients on one session each laid the panes out around their own chrome and fought over the shared shells. The fix, and the harness that found the rest.
- [A session switch forgot my column widths](https://tuios.dev/blog/a-session-switch-forgot-my-column-widths.md): Switching sessions and back reset a widened column in the scrolling layout and split stacked panes apart, because the session state saved the strip's offset and not its columns. The same gap had two clients on one session drawing different widths.
- [Session state was saved every 30 seconds and never read back](https://tuios.dev/blog/sessions-come-back.md): tuios wrote every session to disk from April and no daemon ever loaded it. Wiring up the read side, and then making reattached panes redraw correctly.
