v0.9.1
Fixes completing the Cursor GUI re-entry feature shipped in 0.9.0. Cursor sessions are now identified deterministically, bind to the right flavor, record the real model, and keep their context-token usage.
Cursor session identity
- Cursor identity is now env-var-driven, mirroring claude/codex: the session id is read from
CURSOR_CONVERSATION_IDand its flavor resolved via thecomposerData:<id>record instate.vscdb. The old cwd + mtime freshness heuristic remains only as a fallback for older Cursor versions or bare terminals. This fixes re-entry landing on the wrong session and GUI sessions binding with the wrong model. - Wrong-flavor bindings self-heal: a live GUI session may initially bind to the JSONL agent-transcript flavor (Cursor flushes its composer record lazily), but the locator is canonicalized to the composer flavor on session refresh — clearing the broken
cursor-agent --resumebutton and correcting the model to the real one (e.g.claude-opus-4-8instead ofcomposer-2.5-fast). - A table-less workspace DB is now treated as a missing key instead of erroring.
Context tokens
- Context-token usage is persisted on sessions (
context_tokens_used/context_tokens_limit, migration0010) instead of being re-derived live, with a preserve-on-null guard matching the existing model/title rules.
🤖 Generated with Claude Code