Skip to content

v2.9.0

Choose a tag to compare

@dnouri dnouri released this 27 Aug 19:57
· 19 commits to master since this release

2.9.0

Features

  • Session browserC-c C-r, /resume, or M-x pi-coding-agent-session-browser opens a persistent, disk-backed browser for recorded Pi sessions: grouped by time, searchable (/), sortable (s: threaded, recent, or relevance), scoped to the current project or all projects (t), filtered to named sessions (f), and renamable (r); RET switches to the session at point through the guarded resume flow. Browsing needs no running Pi process (#266)
  • Conversation tree browserw in the main menu opens the conversation tree as persisted in the session file: every branch, where the live conversation currently sits, branch labels (l), tool filters (f), search (/), and refresh (g). Reading and labeling need no live process either (#266)
  • Branch navigationRET on a tree node makes that branch the live conversation: a byte-preserving local rewrite of the session file followed by the normal resume flow. Changed-on-disk files, unversioned formats, and in-flight switches refuse with a message instead of half-working; over TRAMP the atomic rewrite is best-effort (#266)
  • Branch summaries in resumed histories — fork points in a resumed session render as their own Markdown sections instead of disappearing (#266)

Performance

  • No end-of-turn freeze from old tool output — finishing a turn no longer rewrites every completed tool block inside the process filter; older blocks are queued and cooled one at a time by short deferred callbacks that yield to pending input, keeping the chat responsive in tool-heavy sessions (#265)
  • Fast branch reordering on large histories — vector-indexed lines reorder a 100k-entry session in under a second where it previously took sixteen (#266)

Fixes

  • Consistent session-file parsing — every reader now applies one rule: the first nonblank line is the session header, matching Pi's own reader; files with stray blank lines or a byte-order mark before the header read consistently everywhere instead of failing navigation with a false "unreadable" error (#266)
  • Interruptible session scansC-g during a disk scan reports the interruption instead of leaving the browser stuck on its loading screen, and switching refuses to start while another switch is in flight (#266)