This is a big one! Excited to introduce worktree support and the new window feature. Lots of contributors here and if you're not already I recommend you switch to the built-in picker.
I'm making a new video talking all about what you might have missed with sesh, so make sure to subscribe to YouTube if you're not already.
Features
- Git worktree support. New
sesh worktree connect|list|pickercommands (aliaswt) create a worktree for an issue or PR number and connect to it in one step, driven by per-repo[[worktree]]config. On macOS,--browserreads the issue or PR from the active browser tab.
By @joshmedeski in #435 - Windows in existing sessions.
sesh window connectselects or creates a window inside a running session, creating the session first if needed, and moves your client to it. This works from outside tmux too. Note: this is a breaking change to how-cbehaves.
By @joshmedeski in #458 - Live previews.
sesh preview --watchkeeps refreshing active tmux previews while the picker is open. Tune the poll rate with--interval(default 500ms).
By @migoll in #433 - Name substitution rules. Opt-in
[[name_substitution]]find/replace rules trim long path prefixes before a session name is derived, so deeply nested directories get short, sensible names.
By @ChrisJr404 in #437 - Configurable window names in the native picker. New
[tui] window_name_formataccepts any tmux format string, so you can show pane titles instead of window names, for example.
By @t-monaghan in #434 - An agent skill for sesh. A skill that teaches coding agents to reach for sesh instead of raw
tmux new-sessionortmux new-window, distributed through skills.sh.
By @joshmedeski in #459
Bug Fixes
- Switching sessions from a tmux popup moved the wrong terminal. Popups have no pane identity, so tmux guessed which client to switch and sometimes picked one attached to an unrelated session. Sesh now names the client explicitly.
By @joshmedeski in #454 - Reconnecting to a wildcard-matched session reran its startup command. Connecting by path to a directory matching a
[[wildcard]]pattern always took the create path, even when the session was already running.
By @joshmedeski in #455 - Broken star history chart links in the README.
By @Dessalines39394 in #436
Performance
- Faster picker rendering. Match highlighting now renders once per run of same-styled characters instead of once per character, which was most of the per-keystroke cost.
By @joshmedeski in #447 - Wildcard patterns expand once. Configured
[[wildcard]]patterns are expanded once and cached instead of on every lookup for every session.
By @joshmedeski in #446
Maintenance
- Added lister and picker benchmarks at 10, 100, and 1000 sessions, with CI tracking to catch regressions.
By @joshmedeski in #444 - Benchmarks now run for a fixed duration instead of 100 iterations, so results are stable enough to alert on.
By @joshmedeski in #449 - Moved to Go 1.27 and mockery v3.7.4.
By @joshmedeski in #450 - Overhauled CI: split test and release workflows, upgraded actions, pinned tooling.
By @joshmedeski in #439 - Moved artifact actions off Node.js 20.
By @joshmedeski in #448 - Added Fedora Copr install instructions. Big thanks to @buckaroogeek for the Fedora support!
By @joshmedeski in #438 - Bumped Go dependencies.
By @dependabot in #441 and #461
New Contributors
- @migoll made their first contribution in #433
- @Dessalines39394 made their first contribution in #436
- @ChrisJr404 made their first contribution in #437
- @t-monaghan made their first contribution in #434
Full Changelog: v2.28.0...v2.29.0