Bug Description
/resume <title> fails with "Session not found" when the user copies a title from the /resume session list, because the list truncates titles to 30 characters but the lookup requires an exact match.
Steps to Reproduce
- Have a session with a long title, e.g. "Salvage BytePlus Volcengine PR With Fixes"
- Run
/resume with no args — the session list shows the title truncated to 30 chars: Salvage BytePlus Volcengine PR
- Run
/resume Salvage BytePlus Volcengine PR
- Get:
Session not found: Salvage BytePlus Volcengine PR
Root Cause
Two things combine:
cli.py:4428 — _show_recent_sessions() truncates titles to 30 chars: title = (session.get("title") or "—")[:30]
hermes_state.py:657 — get_session_by_title() does exact match: WHERE title = ?
The display tells users to "Use /resume " but shows truncated titles that will never match.
Suggested Fix
Show the full title and session ID in the /resume list so users can copy either one reliably. The table formatting can wrap or use a different layout for long titles instead of silently truncating them.
Alternatively (or additionally), resolve_session_by_title could use prefix matching as a fallback when exact match fails, but showing the full info is the simpler and more predictable fix.
Bug Description
/resume <title>fails with "Session not found" when the user copies a title from the/resumesession list, because the list truncates titles to 30 characters but the lookup requires an exact match.Steps to Reproduce
/resumewith no args — the session list shows the title truncated to 30 chars:Salvage BytePlus Volcengine PR/resume Salvage BytePlus Volcengine PRSession not found: Salvage BytePlus Volcengine PRRoot Cause
Two things combine:
cli.py:4428—_show_recent_sessions()truncates titles to 30 chars:title = (session.get("title") or "—")[:30]hermes_state.py:657—get_session_by_title()does exact match:WHERE title = ?The display tells users to "Use /resume " but shows truncated titles that will never match.
Suggested Fix
Show the full title and session ID in the
/resumelist so users can copy either one reliably. The table formatting can wrap or use a different layout for long titles instead of silently truncating them.Alternatively (or additionally),
resolve_session_by_titlecould use prefix matching as a fallback when exact match fails, but showing the full info is the simpler and more predictable fix.