Skip to content

fix: re-check live sessions at prune/rename time, share search text via cache - #27

Merged
brtkwr merged 1 commit into
mainfrom
fix/round2-review
Sep 23, 2026
Merged

brtkwr merged 1 commit into
mainfrom
fix/round2-review

Conversation

@brtkwr

@brtkwr brtkwr commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator

Fixes from round 2 of the adversarial review:

  • Prune and rename check whether the session is open at the moment you act. Before, ccs used its last snapshot of which sessions are open, which could be a minute old. If you opened a session in a new tmux window and pruned it straight away, anything claude wrote during the prune was lost. ccs now re-reads the running sessions when you press Ctrl+X or Ctrl+R and again when you confirm. A session ccs has just opened counts as open immediately.
  • The live markers stay current. A refresh thrown away because of your own delete, prune or rename no longer throws away its live-session info too.
  • One test for "unchanged". Search text is now built once, when a file is parsed, and cached with it. The separate item-reuse step, which checked only file size, is gone.
  • Sessions whose first line is harness-injected keep their project folder. Before, a /model-only session could end up with no folder and resume in the wrong directory. Such lines are now left out only from the message list.

Not changed: after a refresh, a renamed row drops out of the current search if its old name was the only thing matching. It no longer matches, so hiding it is correct.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JUmkVYwbkobda1AnHuwFDE

…ia cache

From round 2 of the adversarial review:
- Prune and rename re-read ~/.claude/sessions when pressed and when
  confirmed, instead of trusting a liveness snapshot up to a minute old;
  a session ccs just opened in a new tab/window counts as live at once.
- Liveness is applied from every refresh, including ones dropped as stale.
- Search text is built once at parse and shared through parseCache, so
  the parse cache is the only "unchanged" test (drops reuseItems, which
  checked size only and could disagree with it).
- A session's cwd and origin come from its first user line even when that
  line is harness-injected; only the message list skips isMeta lines.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUmkVYwbkobda1AnHuwFDE
@brtkwr
brtkwr merged commit 01ee906 into main Sep 23, 2026
1 check passed
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