<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tmuxrdr.git/src/server/headless/lifecycle.rs, branch tmuxrdr</title>
<subtitle>herdr but with less disrespect for the tmux community
</subtitle>
<id>https://git.soarez.net/sz/tmuxrdr.git/atom?h=tmuxrdr</id>
<link rel='self' href='https://git.soarez.net/sz/tmuxrdr.git/atom?h=tmuxrdr'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/'/>
<updated>2026-09-22T15:31:37+00:00</updated>
<entry>
<title>fix: preserve hook agent status across live handoff (#4493)</title>
<updated>2026-09-22T15:31:37+00:00</updated>
<author>
<name>Can Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-09-22T15:31:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=90b0e40ab31bbdde8803f17d0140c6f4b436694a'/>
<id>urn:sha1:90b0e40ab31bbdde8803f17d0140c6f4b436694a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(server): transfer handoff descriptors in batches (#3411)</title>
<updated>2026-09-13T13:52:29+00:00</updated>
<author>
<name>Kataoka Katsuki</name>
<email>49934462+kataokatsuki@users.noreply.github.com</email>
</author>
<published>2026-09-13T13:52:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=d66c39d5c5301645108a85ebef964e9f43500e01'/>
<id>urn:sha1:d66c39d5c5301645108a85ebef964e9f43500e01</id>
<content type='text'>
Live handoff refused any session with more than 64 panes. The pane count
was checked twice against MAX_FDS_PER_HANDOFF, and the transfer itself put
every pane's pty master into one SCM_RIGHTS control message, so the guard
was the only thing keeping the send inside the kernel's per-message limit.
A session past the limit could only be updated by closing panes or by a
normal restart, which ends every pane process.

Send the descriptors in batches of 64 instead and drop both guards. The
receiving side accumulates across recvmsg calls until the expected count
arrives, bounds every SCM_RIGHTS payload it reads by the control bytes the
kernel returned, rejects a batch that carries more descriptors than it
asked for, and closes the descriptors it already holds on any failure. A
session of 64 panes or fewer still produces one batch, so the bytes on the
wire are unchanged and HANDOFF_VERSION stays at 1.

refs #3393

Co-authored-by: kataokatsuki &lt;kataokatsuki@users.noreply.github.com&gt;
Co-authored-by: JJ Liebig &lt;jonathan.liebig@gmail.com&gt;</content>
</entry>
<entry>
<title>refactor: render the shell in the client (#3487)</title>
<updated>2026-09-01T12:48:22+00:00</updated>
<author>
<name>Can Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-09-01T12:48:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=207be3c771d281baae6e5fa0fb74be9a056e97a2'/>
<id>urn:sha1:207be3c771d281baae6e5fa0fb74be9a056e97a2</id>
<content type='text'>
* feat: add opt-in client-rendered shell

* feat: add client-owned shell mouse controls

* feat: complete client-owned shell chrome

* feat: add client-owned shell settings and notifications

* feat: run client shell custom commands

* feat: render popup terminals in client shell

* feat: add client-owned scrollback and copy mode

* fix: preserve client worktree trust defaults

* feat: render startup diagnostics in client shell

* feat: render onboarding in client shell

* feat: render product announcements in client shell

* feat: render release notes in client shell

* feat: render mobile switcher in client shell

* feat: render kitty graphics in client shell

* fix: preserve client shell lifecycle coherence

* refactor: route client shell commands through endpoint connections

* refactor: make the client-rendered shell the default

* refactor: remove monolithic launch mode

* refactor: complete client-rendered shell cutover

* perf: retain client pane surface updates

* perf: scale retained pane surface updates

* perf: remove remote pane input latency

* test: make client shell checks platform-independent

* fix: prevent client timer starvation

* test: fix client shell platform gates

* test: accept retained surfaces in cross-area checks

* test: make client mode assertions platform-neutral

* fix: badge only outdated integrations</content>
</entry>
</feed>
