Picker polish this round: sources can now share one list ordered by how often you actually visit a directory, and you can prune a stale zoxide entry from the row here you notice it. Plus two fixes for --switch silently doing nothing when sesh is launched from outside a terminal.
Features
- One merged, score-ordered picker group.
sort_ordernow accepts a nested
array —sort_order = ["tmux", ["config", "zoxide"]]pins live tmux sessions on
top and interleaves everything below them by zoxide score, so the list reads as
"what am I working on right now" instead of source by source. Sessions from a
source with no score of its own borrow zoxide's score for their path. Flat
sort_orderbehaves exactly as before, so this is entirely opt-in. Comes with
[tui] group_separator, a faint rule that keeps group boundaries visible once
sources interleave, and match highlighting is now green, with the alias chip
filling its rounded caps as the alias is typed.
By @joshmedeski in #467 - Remove a zoxide entry with ctrl+x. A directory you deleted or
renamed used to keep showing up until you dropped to a shell and ran
zoxide remove. Now it's a confirmation dialog on the row itself. The row only
disappears once the removal actually succeeded, the cursor and filter are
preserved, and it's inert on rows zoxide doesn't own. Driven by a new
remove_commandon[frecency](defaultzoxide remove {}), so fasd, autojump
and memy can be wired up the same way aslist/query/add.
By @joshmedeski in #469
Bug Fixes
--switchfrom a GUI launcher focused the terminal but never moved the client.
list-clientsoutput was joined on a tab, and tmux sanitizes that to_for a
command client that isn't attached — so every line failed the field check and an
empty client list came back with no error, indistinguishable from a server with
nothing attached. The format now uses the::separator every other listing
already uses, and lines sesh can't parse are an error rather than silently dropped.
By @joshmedeski in #470- A switch that never happened reported success. When tmux isn't on the PATH a
GUI launcher hands sesh — the usual macOS case, where Homebrew isn't on launchd's
PATH — sesh brought the terminal forward, changed nothing and exited 0. Session
creation errors are no longer discarded, an unreachable tmux is now distinguished
from a server with no clients attached, andlist-clientsfailures log atError
instead ofDebug.
By @joshmedeski in #464
Maintenance
- Benchmarks can now be charted against a committed per-machine baseline
(just bench-baseline/just bench-compare), showing only what moved outside
sample noise across all 96 benchmark-and-size combinations. CI posts the same
chart as a single in-place PR comment, in plain English with colour. Benchmark
runs are also interleaved rather than block-per-arm, so runner drift no longer
reads as a performance change.
By @joshmedeski in #471
Full Changelog: v2.29.0...v2.30.0