Skip to content

release: v0.10.3 — Codex/Claude orphan cleanup - #33

Merged
subinium merged 1 commit into
mainfrom
release/v0.10.3
May 1, 2026
Merged

subinium merged 1 commit into
mainfrom
release/v0.10.3

Conversation

@subinium

@subinium subinium commented May 1, 2026

Copy link
Copy Markdown
Owner

Patch release bundling three fixes contributed by @Mert-coderoid — thanks for the careful diagnoses, the per-PR repro/impact numbers, and the green test suites that came with each change.

Included

PR Closes Summary
#29 #27 scanner/claude: skip sessions whose per-session JSONL no longer exists.
#30 #28 delete/codex: also remove the SQLite threads row so deletes survive a rescan.
#32 #31 scanner/codex: prune orphan threads rows whose rollout JSONL is gone.

Heads-up for users

Codex scans are no longer strictly read-only. After this release, every Codex scan walks ~/.codex/sessions/ to build a live-session-id set, and any state_*.sqlite threads row whose rollout JSONL is missing is hard-deleted from SQLite. A walker error with no live IDs collected falls back to the legacy "surface every row" behavior so a transient I/O failure cannot wipe the table.

Codex cannot resume those rows once the rollout JSONL is gone, so this is consistent cleanup, not data loss — but worth calling out in the changelog.

Verification

  • cargo test — 22 passing (was 12 + 10 new)
  • cargo clippy --all-targets -- -D warnings — clean
  • cargo fmt --check — clean

Post-merge checklist

  • Tag v0.10.3 and push
  • Verify CI release.yml builds the four target binaries
  • Verify cargo publish step on crates.io
  • Mention @Mert-coderoid in the GitHub release notes

Patch release bundling three fixes contributed by @Mert-coderoid:

  * #29 — scanner/claude: skip Claude sessions whose per-session JSONL is
    missing (closes #27).
  * #30 — delete/codex: remove the matching SQLite `threads` row so
    deletes survive a rescan (closes #28).
  * #32 — scanner/codex: prune orphan `threads` rows whose rollout JSONL
    is gone, on every scan (closes #31).

Heads-up for users: Codex scans are no longer strictly read-only — a
walk of `~/.codex/sessions/` builds a live-id set and any `state_*.sqlite`
row whose rollout JSONL is missing is hard-deleted from SQLite. A
walker error with no live ids collected falls back to the legacy
"surface every row" behavior so a transient I/O failure cannot wipe the
table.

Verified locally: cargo test (22 passing), cargo clippy --all-targets
-- -D warnings, cargo fmt --check.
@subinium
subinium merged commit fe13c02 into main May 1, 2026
5 checks 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