# 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_symbol` no longer scans or rewrites build artifacts:** the consumer search now honors `.gitignore`/`.aftignore` and skips `node_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 `edit` reports 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:** `grep` result footers and `bun test` banners are trimmed of low-value noise.

[Join our Discord](https://discord.gg/DSa65w8wuf)
