<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tmuxrdr.git/src/workspace, branch v0.9.3</title>
<subtitle>herdr but with less disrespect for the tmux community
</subtitle>
<id>https://git.soarez.net/sz/tmuxrdr.git/atom?h=v0.9.3</id>
<link rel='self' href='https://git.soarez.net/sz/tmuxrdr.git/atom?h=v0.9.3'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/'/>
<updated>2026-09-09T19:37:53+00:00</updated>
<entry>
<title>fix: retain double-click selections and make tests root-safe (#3854)</title>
<updated>2026-09-09T19:37:53+00:00</updated>
<author>
<name>akbash</name>
<email>akbash@herdr.dev</email>
</author>
<published>2026-09-09T19:37:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=1f1b20cb5d2a62437e1b21e237164478f9582f52'/>
<id>urn:sha1:1f1b20cb5d2a62437e1b21e237164478f9582f52</id>
<content type='text'>
refs #3847

Co-authored-by: akbash-bot &lt;300245827+akbash-bot@users.noreply.github.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>
<entry>
<title>fix: reject oversized git ref files in workspace status reads (#3373)</title>
<updated>2026-08-29T22:40:49+00:00</updated>
<author>
<name>caner-akca</name>
<email>94343893+caner-akca@users.noreply.github.com</email>
</author>
<published>2026-08-29T22:40:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=03ce02e1a7c04426a2881962da661c46e389e8bf'/>
<id>urn:sha1:03ce02e1a7c04426a2881962da661c46e389e8bf</id>
<content type='text'>
* fix: reject oversized git ref files in workspace status reads

refs #3343

* fix: treat oversized loose refs as unavailable instead of absent

refs #3343

* fix: classify git ref read errors instead of probing path existence

A loose ref behind a metadata or I/O error (for example an unsearchable
refs/heads directory) previously read as absent, because Path::exists()
also returns false on metadata errors, letting a stale same-name
packed-refs OID enter the workspace status fingerprint. The reader now
classifies the open error itself: NotFound and NotADirectory mean the
loose ref is absent (packed-refs fallback stays legitimate), every other
error marks the ref unavailable with no fallback. This also removes the
racy second existence probe.

refs #3343

* fix: reject empty loose git refs

refs #3343

* fix: reject dangling loose git refs

refs #3343

* fix: reject dangling git refs with invalid target paths

refs #3343</content>
</entry>
<entry>
<title>perf: avoid repeated Git config reads (#2688)</title>
<updated>2026-08-12T01:14:59+00:00</updated>
<author>
<name>JJ Liebig</name>
<email>jonathan.liebig@gmail.com</email>
</author>
<published>2026-08-12T01:14:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=5600197f00e871764465d4e3d9ba5e6aa6fd9547'/>
<id>urn:sha1:5600197f00e871764465d4e3d9ba5e6aa6fd9547</id>
<content type='text'>
refs #2643

Co-authored-by: Can Celik &lt;ogulcancelik@gmail.com&gt;</content>
</entry>
<entry>
<title>fix: derive repo name for embedded bare layouts (#2660)</title>
<updated>2026-08-11T13:27:49+00:00</updated>
<author>
<name>akbash</name>
<email>akbash@herdr.dev</email>
</author>
<published>2026-08-11T13:27:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=b8387818f0224bd7aa2c135970de63ea8e83215b'/>
<id>urn:sha1:b8387818f0224bd7aa2c135970de63ea8e83215b</id>
<content type='text'>
refs #2657

Co-authored-by: akbash-bot &lt;300245827+akbash-bot@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>fix(layout): return focus to the pane a split was opened from (#2266)</title>
<updated>2026-08-04T21:35:15+00:00</updated>
<author>
<name>Jon Kinney</name>
<email>jonkinney@gmail.com</email>
</author>
<published>2026-08-04T21:35:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=09cdd88d0aca35617eb05468c2421b0467656e4f'/>
<id>urn:sha1:09cdd88d0aca35617eb05468c2421b0467656e4f</id>
<content type='text'>
Closing a focused pane handed focus to the next pane in tree order.
For a pane opened beside another one -- a plugin split, a file viewer,
any transient tool pane -- that is rarely where the user was: it lands
on some unrelated neighbour rather than the pane that opened it.

Track the pane focus came from in TileLayout and prefer it when the
focused pane closes, falling back to tree order when there is no
history, when it points at the pane being closed, or when it points at
a pane that has since gone away. The history lives in the layout, so it
can only ever name a pane in the same tab.

A one-slot history is only sound if internal focus excursions never
write it, so the tree edits that used to bounce focus around now go
through target-taking primitives instead. close_pane removes a
background pane directly, so detach_pane and take_pane_for_move stop
focus-close-refocusing. split_pane splits a target without moving
focus: the runtime split path only focuses the new pane once the spawn
succeeds, which makes a failed split a pure rollback, and the targeted
and unfocused workspace split paths stop fabricating history.
insert_pane_near now takes the focus intent, so an unfocused pane move
leaves the target tab's history alone. The layout-level focused-split
helpers become test-only; production splits all flow through the
target-taking path.

Co-authored-by: Can Celik &lt;ogulcancelik@gmail.com&gt;</content>
</entry>
<entry>
<title>fix: propagate host color scheme to pane apps (#2214)</title>
<updated>2026-08-02T23:05:27+00:00</updated>
<author>
<name>Can Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-08-02T23:05:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=10eb0bc744165ae91dfce9fd731fe170410b34ec'/>
<id>urn:sha1:10eb0bc744165ae91dfce9fd731fe170410b34ec</id>
<content type='text'>
refs #714</content>
</entry>
<entry>
<title>perf: skip rendering hidden pty updates</title>
<updated>2026-07-28T20:29:11+00:00</updated>
<author>
<name>Ogulcan Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-07-28T20:29:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=e27a4ea427c9ed6248c0ee80570e94ed7b1928bd'/>
<id>urn:sha1:e27a4ea427c9ed6248c0ee80570e94ed7b1928bd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: preserve linked worktree workspace labels</title>
<updated>2026-07-28T12:34:13+00:00</updated>
<author>
<name>Ogulcan Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-07-28T12:34:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=e16d7d8c07a20f5ee0b4111808680bbcfd7df9ac'/>
<id>urn:sha1:e16d7d8c07a20f5ee0b4111808680bbcfd7df9ac</id>
<content type='text'>
</content>
</entry>
<entry>
<title>perf: replace agent spinners with static status marks</title>
<updated>2026-07-28T11:56:53+00:00</updated>
<author>
<name>Ogulcan Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-07-28T11:56:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=81f355fadac7d0d45b077dfc28f9f679add6bbb6'/>
<id>urn:sha1:81f355fadac7d0d45b077dfc28f9f679add6bbb6</id>
<content type='text'>
</content>
</entry>
</feed>
