Skip to content

feat: session and tree browsers#145

Open
dnouri wants to merge 1 commit intomasterfrom
browser
Open

feat: session and tree browsers#145
dnouri wants to merge 1 commit intomasterfrom
browser

Conversation

@dnouri
Copy link
Owner

@dnouri dnouri commented Feb 25, 2026

Browse sessions and conversation trees in dedicated Emacs buffers,
replacing the old completing-read session picker. Both buffers stay
open alongside chat — no modal overlays.

Requires the dnouri/rpc-browsing-surface branch in pi-mono (not yet
on main). Adds magit-section as a package dependency.

Session browser (C-c C-r):
Find and switch sessions. Sort modes: threaded (shows fork
lineage with tree connectors), recent, relevance. Filter to
named-only, toggle current/all project scope, search with /.
Rename the active session with r (upstream only supports renaming
the current session). Right margin shows message count and age.

Tree browser (C-c C-p then w):
See the full branch structure of the current conversation. The
active path is highlighted; abandoned branches are dimmed. Five
filter modes cycle with f: no-tools (default), default, user-only,
labeled-only, all. RET navigates without summarizing; S prompts
for summary instructions then navigates with summarization.
C-c C-k aborts an in-flight summarization (sends
abort_branch_summary to the server). Label nodes with l,
search with /. Right margin shows labels.

Both buffers use magit-section for point-centric navigation and
action dispatch. ?/h opens a transient help menu in each buffer.
g refreshes from the server. q buries the buffer.

Other changes:

  • render.el: display branchSummary messages in session history
    (separator + full markdown, same pattern as compactionSummary);
    scroll all chat windows to end after history reload.
  • menu.el: remove resume-session and its disk-based helpers
    (session-dir-name, list-sessions, format-session-choice).
  • core.el: normalize-string-or-null now treats empty strings as nil.
  • ui.el: C-c C-r rebound to session-browser; startup header updated.
  • Tests moved from menu/input to browse-test.el where they belong.
    119 browse-specific tests; 779 total, all green.

@dnouri
Copy link
Owner Author

dnouri commented Feb 25, 2026

Depends on badlogic/pi-mono#1628

Browse sessions and conversation trees in dedicated Emacs buffers,
replacing the old completing-read session picker.  Both buffers stay
open alongside chat — no modal overlays.

Requires the dnouri/rpc-browsing-surface branch in pi-mono (not yet
on main).  Adds magit-section as a package dependency.

Session browser (C-c C-r):
  Find and switch sessions.  Sort modes: threaded (shows fork
  lineage with tree connectors), recent, relevance.  Filter to
  named-only, toggle current/all project scope, search with /.
  Rename the active session with r (upstream only supports renaming
  the current session).  Right margin shows message count and age.

Tree browser (C-c C-p then w):
  See the full branch structure of the current conversation.  The
  active path is highlighted; abandoned branches are dimmed.  Five
  filter modes cycle with f: no-tools (default), default, user-only,
  labeled-only, all.  RET navigates without summarizing; S prompts
  for summary instructions then navigates with summarization.
  C-c C-k aborts an in-flight summarization (sends
  abort_branch_summary to the server).  Label nodes with l,
  search with /.  Right margin shows labels.

Both buffers use magit-section for point-centric navigation and
action dispatch.  ?/h opens a transient help menu in each buffer.
g refreshes from the server.  q buries the buffer.

Other changes:
- render.el: display branchSummary messages in session history
  (separator + full markdown, same pattern as compactionSummary);
  scroll all chat windows to end after history reload.
- menu.el: remove resume-session and its disk-based helpers
  (session-dir-name, list-sessions, format-session-choice).
- core.el: normalize-string-or-null now treats empty strings as nil.
- ui.el: C-c C-r rebound to session-browser; startup header updated.
- Tests moved from menu/input to browse-test.el where they belong.
  119 browse-specific tests; 779 total, all green.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant