fix: allow deleting CLI sessions from sidebar (#87)
The delete endpoint only removed sessions from the WebUI JSON store, silently no-oping on CLI sessions (which live in state.db). The trash button showed 'Conversation deleted' but the session reappeared on next refresh. Fix: after the existing WebUI delete, also call delete_cli_session() which removes the session + messages from state.db. Wrapped in try/except so WebUI-only sessions still delete normally. New delete_cli_session() in api/models.py mirrors the existing get_cli_session_messages() pattern for state.db access. Closes #87 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -358,12 +358,18 @@ def handle_post(handler, parsed):
|
||||
if parsed.path == '/api/session/delete':
|
||||
sid = body.get('session_id', '')
|
||||
if not sid: return bad(handler, 'session_id is required')
|
||||
# Delete from WebUI session store
|
||||
with LOCK: SESSIONS.pop(sid, None)
|
||||
p = SESSION_DIR / f'{sid}.json'
|
||||
try: p.unlink(missing_ok=True)
|
||||
except Exception: pass
|
||||
try: SESSION_INDEX_FILE.unlink(missing_ok=True)
|
||||
except Exception: pass
|
||||
# Also delete from CLI state.db (for CLI sessions shown in sidebar)
|
||||
try:
|
||||
from api.models import delete_cli_session
|
||||
delete_cli_session(sid)
|
||||
except Exception: pass
|
||||
return j(handler, {'ok': True})
|
||||
|
||||
if parsed.path == '/api/session/clear':
|
||||
|
||||
Reference in New Issue
Block a user