Skip to content

Tags: subinium/agf

Tags

v0.12.0

Toggle v0.12.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: release v0.12.0 (#53)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

v0.11.4

Toggle v0.11.4's commit message
agf v0.11.4 — pi/codex robustness + README clarity

pi scanner no longer drops sessions on invalid-UTF-8 lines (same bug
class as the cursor .ok()? fix shipped in v0.11.3). codex history.jsonl
read is now bounded by the live_session_ids set, so the CACHE_VERSION=6
cold-rescan in v0.11.3 stops scaling with lifetime codex usage. README
clarifies Kiro (no per-session resume) and Hermes (cwd-independent).
.gitignore picks up /.claude/.

Verified end-to-end: 599 sessions identical pre/post upgrade.

v0.11.3

Toggle v0.11.3's commit message
agf v0.11.3 — cursor scanner fix + critical follow-ups

Cursor scanner now finds sessions on current Cursor CLI (Composer 2+
JSONL at depth 4 — previous scanner returned zero sessions). Built on
@rooty0's #45 with verified follow-ups:

- panic-fix on extract_first_prompt for inverted <user_query> tags
  (rustc reproducer confirmed)
- skip-not-abort on malformed JSON / invalid UTF-8 lines
- legacy .txt deletion (was silent no-op since remove_dirs_matching_name
  filters on is_dir())
- CACHE_VERSION 5 -> 6 so upgraders see the orphan fix immediately
- 512 KiB byte budget on extract_first_prompt (matches pi.rs cap)
- stem == parent UUID invariant on the .jsonl arm
- 6 new regression tests (3 portable, 3 cfg(unix))

Closes #35.

v0.11.2

Toggle v0.11.2's commit message
agf v0.11.2 — pi session resume + scoped follow-ups

pi sessions now resume by id (pi --session '<id>'), keep every session
per project, and show prompt summaries + full History — thanks to
@shellus (#43, authorship preserved).

Scoped follow-ups: reverted the default-to-cwd search query (it changed
no-arg behavior for every agent), bounded pi parse_session with a
512 KiB read budget so the forced cold rescan can't stall on multi-MB
transcripts, restored the Kiro resume-latest note, and made the pi
scanner tests portable (Windows-safe).

v0.11.1

Toggle v0.11.1's commit message
agf v0.11.1 — SLT 0.20 bump + UX polish

superlighttui 0.17 → 0.20.1 drop-in upgrade. agf does not use any of
v0.20's breaking surface, so the bump is pure gains: 3-5x flush-path
speedup on redraw frames, ~1000x speedup on static frames via per-row
hash skip, rgb_to_ansi256 u8 overflow fix, and stdout BufWriter.

UX fixes:
- DeleteConfirm: Up/Down + j/k toggle Yes/No (#38)
- ActionSelect / AgentSelect / PermissionSelect / ResumeSelect arrow
  keys cycle-wrap (#39)
- Footer shows agf v<version> on the leftmost cell of every mode (#40)

v0.11.0

Toggle v0.11.0's commit message
v0.11.0 — Hermes Agent (thanks @SHL0MS)

Adds Hermes Agent support (#34, by @SHL0MS) — Nous Research's
self-improving agent — plus follow-up usability fixes:

- scanner/hermes: up to 4 user-message previews on CLI/TUI sessions
- scanner/hermes: empty project_path so resume stays in user's cwd
  (shell::cd_and skips cd when path is empty)
- delete/hermes: cascade in a single SQLite transaction
- TUI: apply_sort() always called on first frame (default time)
- TUI: cwd-match boost removed from secondary sort
- cache: CACHE_VERSION bumped 2 → 3 (forces one-time rescan on upgrade)

Cursor scanner regression on new agent-transcripts/<id>/<id>.jsonl
layout tracked in #35 — out of scope for this release.

v0.10.3

Toggle v0.10.3's commit message
v0.10.3 — Codex/Claude orphan cleanup (thanks @Mert-coderoid)

v0.10.2

Toggle v0.10.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
release: v0.10.2 — cache write race fix (#24)

* fix(cache): preserve prior cache entry for in-flight agents on TUI exit

v0.10.1 introduced streaming background scans: the TUI opens on
cached sessions immediately and stale agents stream their results
in. `cache::write_cache` runs at TUI exit to persist the merged
result. But if the user exits before a worker has reported in,
`write_cache` would re-emit that agent with an empty session list
and the current `mtime` of its data sources — making the cache look
"fresh + empty" on the next launch and hiding the agent's sessions
until a new file write changed the mtime again.

Fix: pass the still-scanning agent set into `write_cache`. For each
agent in that set, carry its prior cache entry (mtime + sessions)
verbatim from the on-disk file, so an interrupted scan doesn't
overwrite known-good cache state with `(now, [])`.

Behavior of completed scans is unchanged.

* chore: release v0.10.2

Bumps version + CHANGELOG for the cache-write-race fix in this PR.
Tag and release happen after merge.

v0.10.1

Toggle v0.10.1's commit message
perf(scanner): cap Claude per-session JSONL I/O + stream stale scan t…

…o TUI

Claude session metadata extraction read every JSONL line through EOF on
every cold scan. Each session file (commonly 5-30 MB on long Claude Code
projects) was fully parsed to find the latest \`away_summary\` recap,
which sits at the tail. With rayon parsing thousands of files in
parallel the cold scan never finished — the TUI hung on \"loading\"
indefinitely on users with multi-GB \`~/.claude/projects\` directories.

Fix: new \`scanner::read_head_tail(path, head, tail)\` helper reads at
most 16 KB from the start and 256 KB from the end of large files,
returning UTF-8-safe complete lines (boundary partial lines dropped).
\`cwd\` and \`aiTitle\` come from the head slice, latest \`away_summary\`
from the tail. Small files (≤ 272 KB) still read in full. Cold scan
dropped from 48 s → 0.7 s on a 1.6 GB Claude log directory in local
testing (3124 jsonl files, 35 of them > 10 MB).

Streaming UX: \`cache::start_stale_scan\` now returns
\`mpsc::Receiver<ScanResult>\` and the TUI drains it every render frame.
The footer shows \`• scanning N…\` while workers run; new sessions
appear as soon as their agent finishes instead of after the slowest
one. Final \`cache::write_cache\` happens at TUI exit so the next
launch reflects everything that completed.

Other:
- \`AGF_DEBUG=1\` now prints per-agent scan timing so users can locate
  the slow agent on their machine.
- Cross-platform safe: \`SeekFrom::End\` + \`read_exact\` work the same on
  Windows; \`String::lines()\` handles \`\r\n\` correctly; byte-level
  newline detection finds the boundary regardless of line ending.

v0.10.0

Toggle v0.10.0's commit message
chore: release v0.10.0

- Windows / PowerShell support (#22)
- Windows CI + release binary
- CommandShell OnceLock cache