Repository navigation
v0.58.0
v0.58.0
AFT 0.58.0 makes configuration feature-based: every tool is on unless listed in disabled_tools, and all three indexes, semantic included, are on by default. aft setup gains a feature checklist and doctor --fix migrates old keys. Plugins start faster, the daemon recovers better from restarts, and many reported issues are fixed.
Upgrading
- Run
npx @cortexkit/aft doctor --fixto rewrite retired keys such astool_surface,search_indexandgithub.enabled; they work in 0.58 and are rejected from 0.59 (full list). gh_read,gh_shim.enabledand config files that do not parse are now errors: AFT tools return the error and the fix until the file is corrected.- New defaults: all three indexes on;
aft_callgraph,aft_search,grepandglobregistered;aft_moveandaft_deleteoff. Explicit settings are kept. - Semantic indexing may download ONNX Runtime and a model and use CPU; existing installs see a one-time notice. Set
indexes.semantic: falseto opt out. enabled: falseno longer stops indexing; also setindexes.trigram,indexes.semanticandindexes.callgraphtofalse.- Project configs can only turn tools and indexes off, not on.
worktree.ram_overlaynow defaults totrue; set it tofalsefor the old behaviour.aft_searchwith no ready index now refuses instead of grepping; usegrepmeanwhile.- With an absolute
XDG_CACHE_HOME, the embedding model is downloaded once more, to$XDG_CACHE_HOME/fastembed.
New
- Feature-based configuration:
disabled_toolsandindexes.*replace surface levels and old index keys (docs). aft setupshows a checklist of tools, indexes, bash settings and GitHub access;--plan,--answersand--yesscript it (docs).npx @cortexkit/aft backups purgeremoves undo backups early by path or session (docs).- Tools say when an index is off or still building instead of returning empty results (docs).
grepshows up to 100 matching lines per call and pages withoffset.aft_outlineandaft_zoomshow items defined inside Rust macros.- OpenCode 2: setup offers to turn off OpenCode's own shell tool, and AFT's
bashfollows yourshellpermission rules. - gh shim: operator rows for label-only edits and
label create(docs). - Subconscious clients can call
bash_status,bash_killandbash_write.
Changed
- The OpenCode and Pi plugins no longer run the
aftbinary on the host's thread at startup. aft_searchranks source code above large JSON data files.- Linked worktrees and borrowed checkouts check the shared index against their own files before search is ready.
- A recursive
aft_deleteis refused when its undo backup would exceed 2,000 files or 100 MiB. - Subagent
bash_watchwaits up tobash.watch_sync_max_ms; Pi worker sessions honourbash.subagent_background. aft_zoomtargetsandaft_inspectsectionsalso accept a JSON string.- Callgraph updates after a small edit are much faster: 1.4 s to 0.36 s on a 6,761-file repository (#214, thanks @iceteaSA).
- Editing
package.jsonor overflowing the file watcher no longer forces a full callgraph rebuild. setupanddoctorreport every feature's state and give one-line causes and fixes for permission or download failures.- gh shim: the target repository decides the bot identity, and bot writes go through the AFT daemon without double posts.
- Daemon: faster rebinds and clean exits after restarts, stall detection, and stopped index builds for projects left unbound.
- Health and memory reports are more accurate (#344, thanks @iceteaSA).
- The subconscious manifest declares the services AFT connects to (#345, thanks @iceteaSA).
- Log lines carry their level (#361), and background plugin calls no longer log as slow (#362, thanks @iceteaSA).
- Lock heartbeats no longer force disk writes every 5 seconds (#358, thanks @iceteaSA).
- Git co-author hooks are written once per user; the
writedescription suggests splitting very large files.
Fixed
- ONNX Runtime auto-install works again (broken in 0.57.0–0.57.2), and semantic search recovers when the download finishes after AFT starts.
- Semantic search works on OpenCode 2, and a broken system ONNX Runtime is skipped (#341, thanks @jjjermiah).
- The AFT status bar appears in tool results again (#331, thanks @iceteaSA).
- Pi:
pi -pexits after answering, and SIGTERM/SIGINT end the host within 5 s (#336, thanks @johnpwilkinson). - Linked worktrees and subfolder sessions now search the right files (#337, #338, #339, #340, thanks @johnpwilkinson).
- Windows: the file watcher no longer crashes AFT, and console windows no longer steal focus (#360, thanks @Cle2ment).
- Linux: a directory that vanishes before it is watched no longer stops change detection (#352, thanks @iceteaSA).
bash_watchrespectsbash.detach_on_user_message: false(#366, thanks @iceteaSA).- Bash
timeoutis enforced on every call, andbash_killworks on tasks that survived a daemon restart. - Finished bash tasks release file handles, retention runs on time, and stale task records are removed (#354, #355, #357, thanks @iceteaSA).
aft_safetycheckpoints no longer fail when sessions wait on the same lock (#342, thanks @iceteaSA).- The repeat breaker no longer counts each edit twice (#347, thanks @iceteaSA).
- Glob patterns without
**no longer walk the whole tree (#349, thanks @iceteaSA). - A tsconfig that
extendsa package is resolved, so excluded files stay out of diagnostics (#353, thanks @iceteaSA). - Idle projects with an unsaved index change are freed from memory (#356, thanks @iceteaSA).
- One huge or non-UTF-8 file no longer forces a rebuild on every start or disables the callgraph (#364, thanks @Tahmid-kabir-addin).
- The callgraph stays correct after edits, is usable as soon as a build finishes, and handles two spellings of one path.
- Empty projects report zero dead code instead of
D?. - Language servers are no longer killed right after starting, and scoped
aft_inspectstarts only the servers it needs, without blocking other calls. grepandglobon a named ignored or symlinked folder search it instead of returning nothing..DS_Store,Thumbs.dband similar files are no longer indexed and no longer trigger refreshes.- Touching files without changing them no longer empties the semantic index.
writeandeditonissue://orpr://never create a local file.- An unreachable embedding backend is shown as unavailable with its URL; the OpenCode 2 footer shows "no LSP" instead of waiting.
doctor --fixno longer plans atui.jsonchange on OpenCode 2 (#367, fixed in #368 by @coleleavitt).- macOS without developer tools: no "install developer tools" dialog; the sidebar says "git features off".
- Pi no longer indexes your home directory when it is reached through a symlink.
- AFT no longer crashes at exit while a semantic build is running.
- The file watcher excludes the folders that actually overflowed it and keeps build folders excluded after a restart.
- Daemon: a few failed requests no longer drop every session, and background bash checks no longer stall other sessions.
- Subconscious clients no longer see plugin-only bash fields, or
powershellwherepwshis missing. - The update checker never offers an older version.
- Test runs no longer touch your live AFT logs, config or temp directory (#348, #350, #351, thanks @iceteaSA).