Skip to content

v0.10.3

Choose a tag to compare

@github-actions github-actions released this 01 May 06:32
· 22 commits to main since this release
fe13c02

Patch release. Thanks to @Mert-coderoid for all three fixes — careful diagnoses, repro/impact numbers, and green test suites in every PR.

Fixed

  • scanner/claude: skip Claude sessions whose per-session JSONL is missing (#27, #29, by @Mert-coderoid) — ~/.claude/history.jsonl accumulates session IDs forever; Claude Code never trims it when a per-session JSONL is deleted. Those orphan IDs surfaced in the listing and claude --resume failed with No conversation found. Reported impact on a one-year-old ~/.claude: 99 → 10 sessions (89 dead resume targets removed).
  • delete/codex: also remove the SQLite threads row (#28, #30, by @Mert-coderoid) — since the Codex scanner moved to state_*.sqlite as primary source, deletes that only removed the rollout JSONL came back on the next rescan. delete_codex_session now walks every state_*.sqlite and DELETEs the matching row.
  • scanner/codex: prune orphan threads rows on scan (#31, #32, by @Mert-coderoid) — state_*.sqlite rows whose rollout JSONL was already gone dominated the listing forever (reporter saw 324 ghost rows on an empty ~/.codex/sessions/). Scans now build a live-id set from disk, exclude orphans, and DELETE them from every state_*.sqlite.

Heads-up for users

Codex scans are no longer strictly read-only. Every scan walks ~/.codex/sessions/, builds the live session-id set, and any state_*.sqlite threads row not in that set is hard-deleted. Codex cannot resume those rows once the rollout JSONL is gone, so this is consistent cleanup, not data loss. 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.

Install

cargo install agf

Or download the prebuilt binary for your platform from the Assets below.


Full Changelog: v0.10.2...v0.10.3