v0.36.1: Honest edits, compact inspect output, and safer pipes
A correctness-focused patch. Failed edits and patches now report failure instead of a misleading success, aft_inspect returns a compact text summary instead of a JSON dump, and the bash pipe handling added in v0.36.0 is now careful about commands where stripping a pipe would change what you asked for.
Edits and patches report failure honestly
A failed edit (no match, ambiguous match, syntax rollback) or a failed apply_patch hunk could come back looking like it succeeded — edit returned Edited (+0/-0) and apply_patch reported the file as written. Both now surface the underlying error. For apply_patch specifically, a move hunk now confirms the destination write succeeded before removing the source, so a failed write can never delete the original, and a partially-applied patch is reported as "Partially applied (N of M)" listing only the hunks that actually landed.
edit with replaceAll now refuses to run when its matches overlap (which could happen on repeating multi-line patterns), instead of applying them and corrupting the file.
Compact aft_inspect output
aft_inspect returned a full JSON payload that the agent had to parse. It now returns a compact, line-oriented summary of the actionable findings — duplicates, dead code, unused exports, todos, and diagnostics — cutting the per-call output roughly in half. When a category's background scan is stale, the last-known counts are shown (flagged stale) instead of being dropped, so the summary stays consistent with the status bar.
Safer bash pipe handling
v0.36.0 started running a test/build runner without its trailing filter (so bun test | grep fail doesn't hide failures). This release makes that careful: it no longer strips when doing so would lose a redirected file (... | grep FAIL > out.txt), change backgrounding, or misread a subshell or command substitution, and it only applies to read-only test/build invocations — never a stateful command like make deploy test. It now also recognizes more runners (gradle, maven, dotnet, rspec, phpunit, swift, deno, and others), and tells you on every path when a pipe was dropped.
Fixes
move_symbolno longer scans or rewrites build artifacts: the consumer search now honors.gitignore/.aftignoreand skipsnode_modules,target,dist,build,.venv, and the like, so it won't rewrite imports inside compiled output or crawl huge irrelevant trees.- Multi-name Java static imports generate one valid
import static Class.member;per name instead of a single invalid statement that dropped the members. - Glob
editreports its real counts (Edited N files (M replacements)) instead of a misleading+0/-0. - Edit diffs render reliably in the UI again after a metadata-handling change (#96).
- The status sidebar reconnects more reliably and no longer briefly shows another project's data in multi-window setups.
- Leaner output:
grepresult footers andbun testbanners are trimmed of low-value noise.