<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tmuxrdr.git/src/client/shell/config.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-10-05T12:45:17+00:00</updated>
<entry>
<title>tmuxrdr: tmux's status line as the tab row (ui.tab_style = "tmux")</title>
<updated>2026-10-05T12:45:17+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-05T12:45:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=9a12d7fb0eae23c016d3e941a16765084fbf0eaa'/>
<id>urn:sha1:9a12d7fb0eae23c016d3e941a16765084fbf0eaa</id>
<content type='text'>
herdr draws each tab as a centred, padded block, and a named tab shows its
name without its number. With ui.tab_style = "tmux" the row is tmux 3.7c's
default status line: "[session] " cut to status-left-length 10, then each
window as "#I:#W#{?window_flags,#{window_flags}, }" -- current "*", last
"-", zoomed "Z" -- one space apart, plain text in the status line's colours.
Unnamed tabs are called after their active pane's directory, like
automatic-rename-format '#{b:pane_current_path}'.

The logic is in src/client/shell/tabs_tmux.rs; render_tab_bar keeps its
layout, scrolling, mouse hits and + button, with three one-line hooks for
width, text and style, and the session at the left. Each tab's active pane
and each workspace's previous tab are remembered by the client, so nothing
changes in the protocol and the client works against a stock herdr server.
The default, herdr, draws as before.
</content>
</entry>
<entry>
<title>feat: support multiple prefix keys (#4653)</title>
<updated>2026-09-28T09:58:09+00:00</updated>
<author>
<name>JJ Liebig</name>
<email>jonathan.liebig@gmail.com</email>
</author>
<published>2026-09-28T09:58:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=7f89b11a11160874ba89f3be7c64b29960bd2df3'/>
<id>urn:sha1:7f89b11a11160874ba89f3be7c64b29960bd2df3</id>
<content type='text'>
* feat: support multiple prefix keys

keys.prefix accepts an array in addition to a single string so one
config can define several prefix keys. Every configured prefix enters
the same prefix mode, and the help panel lists them all.

Published keybinding profiles keep the primary prefix as a scalar and
carry the rest in an optional extra_prefixes field so older clients
keep working with the primary prefix.

* fix: reject an empty prefix list on reload

An explicitly empty keys.prefix array now stays empty through config
parsing so validation rejects it and a reload keeps the current
keybindings instead of silently falling back to ctrl+b.</content>
</entry>
<entry>
<title>fix: auto-expire worktree action error banners (#4063)</title>
<updated>2026-09-13T17:14:00+00:00</updated>
<author>
<name>JJ Liebig</name>
<email>jonathan.liebig@gmail.com</email>
</author>
<published>2026-09-13T17:14:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=3834fd3d0f77a809cf3e394fca31fd036d3173dd'/>
<id>urn:sha1:3834fd3d0f77a809cf3e394fca31fd036d3173dd</id>
<content type='text'>
* fix: auto-expire worktree action error banners

refs #1827

* fix: restart endpoint error timeout on repeated errors

Route every transient client-side action error through a setter that installs a fresh deadline, so an identical repeated message cannot inherit an older, nearly-expired deadline.

refs #1827

* test: derive endpoint error expiry assertions from stored deadline

refs #1827</content>
</entry>
<entry>
<title>feat: support conditional sidebar token hiding (#3925)</title>
<updated>2026-09-10T21:55:19+00:00</updated>
<author>
<name>Can Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-09-10T21:55:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=58271459401fa461707c042f7f03867ddcfff3ea'/>
<id>urn:sha1:58271459401fa461707c042f7f03867ddcfff3ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: collapse worktree groups with saved machines (#3781)</title>
<updated>2026-09-08T14:51:59+00:00</updated>
<author>
<name>akbash</name>
<email>akbash@herdr.dev</email>
</author>
<published>2026-09-08T14:51:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=68c7b78ec237034cbb0e21c8666842ed7991641d'/>
<id>urn:sha1:68c7b78ec237034cbb0e21c8666842ed7991641d</id>
<content type='text'>
* fix: collapse worktree groups with saved machines

refs #3778

* fix: scope worktree collapse by machine

refs #3778

* fix: collapse machines without switching focus

refs #3778

---------

Co-authored-by: akbash-bot &lt;300245827+akbash-bot@users.noreply.github.com&gt;
Co-authored-by: Ogulcan Celik &lt;ogulcancelik@gmail.com&gt;</content>
</entry>
<entry>
<title>feat: add conditional styles for sidebar tokens (#3693)</title>
<updated>2026-09-06T20:44:15+00:00</updated>
<author>
<name>Can Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-09-06T20:44:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=c7b79294e28fe7c835691a25597fabf226ecfc20'/>
<id>urn:sha1:c7b79294e28fe7c835691a25597fabf226ecfc20</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add stable client endpoint compatibility (#3509)</title>
<updated>2026-09-01T23:45:20+00:00</updated>
<author>
<name>Can Celik</name>
<email>ogulcancelik@gmail.com</email>
</author>
<published>2026-09-01T23:45:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/tmuxrdr.git/commit/?id=cc88b3b8e5bb9f7d9f23ed6ae85a52fd7b5b9ed6'/>
<id>urn:sha1:cc88b3b8e5bb9f7d9f23ed6ae85a52fd7b5b9ed6</id>
<content type='text'>
* feat: add stable client endpoint compatibility

* fix: keep portable-pty patch checks composable

* ci: run maintenance checks in pull requests

* fix: reject endpoint errors from terminal clients

* feat: keep compatible servers running across updates</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>
