You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
You're right that this leaves Cursor and Claude visually inconsistent in the list — Cursor shows a title, Claude shows the user prompt. I'd rather treat that as its own cross-agent UX discussion (summaries ordering / [-cycle semantics across all agents, not just Cursor)
I'd also like to add another feature to show session names/titles for every agent in the settings, similar to what we currently have for show_recap.
@rooty0 Yes please — happy to have you take this. Here's the direction I'd like, building on what v0.11.3 shipped:
Data model: give Session an explicit title: Option<String> (mirrored in CachedSession), instead of smuggling the title into summaries[0] the way the Cursor scanner does today. recap already set the precedent for a per-agent optional field.
Scanners: populate title only where the agent has a native one — Cursor moves its store.db name there (the first-user-prompt extraction stays in summaries), OpenCode has a session title in its session-info JSON, Claude Code can derive one from its {"type":"summary"} JSONL lines. Everything else stays None.
Display + setting: show_titles: bool, default true — that preserves the Option-1 behavior Cursor already ships and extends it cross-agent. Follow the show_recap pattern exactly: serde-defaulted field in Settings, handled in save_editable, plus a toggle row in the help screen. When on and a title exists, the title renders as the list line, and [ / ] cycling treats it as position 0 followed by the prompt summaries — prompts stay one keypress away. When off: today's prompt-first behavior everywhere. Precedence when on: title > recap (Claude, when show_recap) > summaries.
Search: include the title in the fuzzy haystack the same way summaries are included.
Cache: #[serde(default)] on the new CachedSession field; once #51 lands you won't need a CACHE_VERSION bump — the binary-version mismatch already forces the upgrade rescan.
One ask: keep the first PR to the title plumbing + Cursor migration + the toggle so it's easy to review; other scanners as follow-ups.
Activity
subinium commentedon Jun 11, 2026
@rooty0 Yes please — happy to have you take this. Here's the direction I'd like, building on what v0.11.3 shipped:
Data model: give
Sessionan explicittitle: Option<String>(mirrored inCachedSession), instead of smuggling the title intosummaries[0]the way the Cursor scanner does today.recapalready set the precedent for a per-agent optional field.Scanners: populate
titleonly where the agent has a native one — Cursor moves its store.dbnamethere (the first-user-prompt extraction stays insummaries), OpenCode has a session title in its session-info JSON, Claude Code can derive one from its{"type":"summary"}JSONL lines. Everything else staysNone.Display + setting:
show_titles: bool, default true — that preserves the Option-1 behavior Cursor already ships and extends it cross-agent. Follow theshow_recappattern exactly: serde-defaulted field inSettings, handled insave_editable, plus a toggle row in the help screen. When on and a title exists, the title renders as the list line, and[/]cycling treats it as position 0 followed by the prompt summaries — prompts stay one keypress away. When off: today's prompt-first behavior everywhere. Precedence when on:title>recap(Claude, whenshow_recap) >summaries.Search: include the title in the fuzzy haystack the same way summaries are included.
Cache:
#[serde(default)]on the newCachedSessionfield; once #51 lands you won't need aCACHE_VERSIONbump — the binary-version mismatch already forces the upgrade rescan.One ask: keep the first PR to the
titleplumbing + Cursor migration + the toggle so it's easy to review; other scanners as follow-ups.feat: v0.15.0 — update CLI compatibility and add read-only agent tools