Repository navigation
v0.58.1
v0.58.1
AFT 0.58.1 is a patch release. aft_search now finds the file that defines a regex or identifier, most aft.jsonc settings apply without a restart, and a recursive aft_delete can be undone exactly. It also fixes the issues reported against 0.58.0, including slow reads and lock errors when several AFT processes share one database.
New
- Most
aft.jsoncsettings, such as formatting, inspect, idle, sandbox andbashoptions, apply on save; indexes, language servers anddisabled_toolsstill need a restart. - If a saved
aft.jsoncis invalid or deleted, AFT keeps the last valid settings and warns you. - Recursive
aft_deleteaccepts symlinks, empty directories and hard links, and oneaft_safety undorestores the tree exactly (docs). readon a directory pages withoffsetandlimit, up to 1,000 entries per call.- gh shim: an operator row for
gh run cancel, for v15 manifests (docs).
Changed
- Tools in
disabled_toolsare refused for every client, including Subconscious clients, not only hidden by the plugins. - An
editorwritethat changes nothing returnsno_changeand records no undo step. aft_searchreplies stop at 50 KB and show at most 500 characters of a matching line, so one-line JSON files no longer flood the reply.- Scoped
aft_inspectanswers from cached results instead of waiting for project-wide scans, and returns partial results with named gaps when time runs out. aft_inspectgroups files without diagnostics by cause, lists at mosttopKof them, and names the install step when a language server is missing.- TypeScript diagnostics work in checkouts without
node_modules, using a cached TypeScript and saying so. read,aft_outline, call trees and index-less search stop at a work limit on huge files or trees and say what they skipped.- At most two images are decoded at once; further image reads say AFT is busy instead of queueing.
- Linked worktrees keep sharing one semantic index after local edits; in a ten-worktree test, private semantic memory fell from 3.3 GB to under 100 KB.
- Search keeps serving its previous index while a shared index reloads, and a reload no longer waits behind full index builds.
aft_searchandaft_zoomrepeat less work per call; results are unchanged.- If AFT's database cannot open, tools that need it wait up to 10 s, then refuse with the reason; read-only tools keep working.
- The daemon no longer re-reads its whole task table every few seconds, and callgraph refreshes make far fewer path lookups.
- Tool calls stop at their deadlines while a project is loading, and gh shim requests no longer retry past one 30 s budget.
bash_watchtimes its wait with a monotonic clock and replies "Waited Nms (limit Lms)".- The repeat breaker now counts
bashcalls on every transport, so a repeated shell command gets the reminder. - Pi: Magic Context's short-lived child sessions no longer get AFT's workflow hints.
Fixed
aft_searchranks every file matching a regex or identifier before paging, so the defining file comes first at any page size (#375, thanks @Tahmid-kabir-addin).- OpenCode:
readno longer waits seconds on session-history and model lookups before reading an ordinary file (#375, thanks @Tahmid-kabir-addin). - AFT processes sharing
aft.dbno longer log "database is locked", time outstatus, or fail to open it on a brief lock (#375, thanks @Tahmid-kabir-addin). doctor --issueincludes the selected session's own log lines and leaves out other projects' (#375, thanks @Tahmid-kabir-addin).- After a restart, the search index checks its files in parallel and reads each file's metadata once (#377, thanks @null-axiom).
- A self-matching
.gitignoreis reloaded when edited; on macOS, changes made while ignore rules change are no longer missed (#371, thanks @iceteaSA). - The
bashtruncation trailer no longer claims every line was shown when some were dropped (#372, thanks @iceteaSA). - Rust:
aft_importno longer adds a name already imported throughuse a::{x, y}, and remove and organize handle such lists (#373, thanks @iceteaSA). grepandglobsay nothing was searched whenincludeorexcludematches no file (#374, thanks @iceteaSA).- Pi 0.99 no longer warns at startup that AFT lists
typeboxas a dependency (#378, thanks @rohan-patra). - Undo no longer overwrites a file changed outside AFT: that content is saved as a checkpoint first, and repeated undo still reaches the oldest state.
- Fuzzy
editmatches keep the indentation and trailing text around the match instead of replacing whole lines. - Background
bashtasks still deliver their output after a daemon restart, and are never reported erased while running, when several harnesses share a project. aft_inspectand the status bar show diagnostics as unknown, not zero, when a language server did not report or failed to start.- rust-analyzer no longer rewrites
Cargo.lockduringaft_inspect, and its non-fatal warnings no longer hide diagnostics. - OpenCode: the update checker honours your npm registry settings, including scoped registries and
.npmrcwhennpmis not on PATH. - Error messages for invalid
editarguments name the actual problem, andaft_deleteaccepts a JSON-encoded file list. - A
bun installwith nothing to change shows bun's summary instead of an empty reply.
Security
- gh shim with a signed routing manifest: agent writes to unbound repositories,
gh auth tokenand login changes are refused unlessGH_SHIM_BYPASS=operator(docs).