Skip to content

v2.30.0

Latest

Choose a tag to compare

7E761A95-D8AE-401C-B5BB-361B5BFEFD6B_1_105_c

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_order now 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_order behaves 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_command on [frecency] (default zoxide remove {}), so fasd, autojump
    and memy can be wired up the same way as list/query/add.
    By @joshmedeski in #469

Bug Fixes

  • --switch from a GUI launcher focused the terminal but never moved the client.
    list-clients output 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, and list-clients failures log at Error
    instead of Debug.
    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