From 0bbb7dc37d0c03a39ee0d1f9a539bd43a7dc1f8a Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Wed, 28 Oct 2026 21:35:05 +0100 Subject: [PATCH 1/2] Release notes for v0.63.1 v0.63.0 was tagged but never published: its Linux release builds failed to link. v0.63.1 carries the v0.63.0 notes plus three fixes merged since (outline URL arrays, lighter storage cleanup, cancelled-write undo), as approved. Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .../release-notes/next/bg-gh-authority.md | 1 - .../release-notes/next/outline-url-arrays.md | 1 - .../next/retention-census-streaming.md | 1 - .alfonso/release-notes/v0.63.1.md | 81 +++++++++++++++++++ 4 files changed, 81 insertions(+), 3 deletions(-) delete mode 100644 .alfonso/release-notes/next/bg-gh-authority.md delete mode 100644 .alfonso/release-notes/next/outline-url-arrays.md delete mode 100644 .alfonso/release-notes/next/retention-census-streaming.md create mode 100644 .alfonso/release-notes/v0.63.1.md diff --git a/.alfonso/release-notes/next/bg-gh-authority.md b/.alfonso/release-notes/next/bg-gh-authority.md deleted file mode 100644 index 7a06ad81c..000000000 --- a/.alfonso/release-notes/next/bg-gh-authority.md +++ /dev/null @@ -1 +0,0 @@ -- GitHub bot writes from a background command keep the bot identity and repositories captured when the command started, across a session reconnect, and stop when its scope ends; a write AFT can't verify is refused with the reason. diff --git a/.alfonso/release-notes/next/outline-url-arrays.md b/.alfonso/release-notes/next/outline-url-arrays.md deleted file mode 100644 index 65a125675..000000000 --- a/.alfonso/release-notes/next/outline-url-arrays.md +++ /dev/null @@ -1 +0,0 @@ -Fixed outline target arrays to fetch and outline URL entries, including mixed URL and file arrays, and report unfetchable URLs without treating them as local paths. diff --git a/.alfonso/release-notes/next/retention-census-streaming.md b/.alfonso/release-notes/next/retention-census-streaming.md deleted file mode 100644 index e21e7bb60..000000000 --- a/.alfonso/release-notes/next/retention-census-streaming.md +++ /dev/null @@ -1 +0,0 @@ -- Storage cleanup reads fewer files per pass and stops on its time limit, using less CPU when many projects and finished commands are kept. diff --git a/.alfonso/release-notes/v0.63.1.md b/.alfonso/release-notes/v0.63.1.md new file mode 100644 index 000000000..c4543fb92 --- /dev/null +++ b/.alfonso/release-notes/v0.63.1.md @@ -0,0 +1,81 @@ +# v0.63.1 + +AFT 0.63.1 replaces 0.63.0, which was not published because its Linux build failed. It adds shell memory limits, changed-file reports and a separate cache location. Diagnostics, call graphs, command recovery and permissions are fixed, with lower resource use. + +## Upgrading + +- Outdated call graphs and symbol caches rebuild on use; call-graph caches take about three quarters less disk space. +- Malformed security settings reject config instead of resetting defaults; invalid nonsecurity sections are named and skipped ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- `bridge.hang_threshold` is retired. User config updates automatically; `npx @cortexkit/aft doctor --fix` removes it from project config ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#bridge-request-timeouts)). +- Pi print/JSON/RPC sessions allow outside-project access without prompting. Interactive prompts remain on; only user config can disable `pi.external_access_ask` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). + +## New + +- User `storage.cache_dir` puts caches on another volume; unavailable volumes disable caches without falling back to the primary disk ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#rebuildable-cache-root-storagecache_dir)). +- User `bash.changed_files` reports `list` or `diff` changes, including background completions; default `off` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- `bash.memory_limit_mib` optionally caps local commands' aggregate memory, including background and terminal commands ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- Trusted projects can set local `bash.env` values; user values win. Trust a project with `aft doctor filters trust` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md)). +- `glob` searches ignored subtrees when the pattern names their leading folders; broader patterns still skip them. +- Hide OpenCode 2's health footer with `"aft": { "footer": false }` in `tui-preferences.jsonc` ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#opencode-tui-preferences)). +- `bash_watch` can follow a log line by line with `deliver: "each_line"`, reporting byte offsets and drops at caps (#751, thanks @iceteaSA). + +## Changed + +- `grep` counts lockfile, generated/minified, log and JSON matches without printing them; returned `path` or `include` values show them. +- `aft_search` labels non-exact results as similar, discloses filesystem fallback and capped walks, and gives exact regex totals. +- Compressed shell output keeps unrecognized check results, small Cargo outputs and middle-of-output failures. +- Folder approvals cover read tools or writes; granted access survives busy periods, and permission replies explain outstanding grants instead of looping. +- Indexing and undo use less memory; semantic queries no longer queue behind local indexing, and idle projects release resources. +- Storage cleanup reads fewer files per pass, stops at its time limit and backs off after an unfinished pass, using less CPU when many projects and commands are kept. +- Call-graph updates, language-server detection and background maintenance use less CPU and disk (#746, thanks @moynzzz). + +## Fixed + +- Standalone timeouts leave other sessions running; read-only calls interrupted by a hung-process restart retry once (#646, thanks @null-axiom). +- OpenCode 2 fixes subagent lookup, progress, diagnostics, worktree overrides and long commands (#646, thanks @null-axiom). +- Call graphs mark callbacks, link constructors, disclose stale sources or potentially missing calls, and respect inline-test exclusions (#937, #973, thanks @null-axiom, @iceteaSA). +- Call graphs recover after restarts and locks, rebuild outdated non-Git caches and tolerate malformed Rust exports (#746, #771, thanks @moynzzz, @null-axiom). +- `aft_inspect` stops reporting live Rust functions dead, unverified diagnostics clean or stale errors authoritative after edits. +- Language servers start once per workspace, receive startup edits, ignore old-instance messages, retry busy watcher updates and resolve project symbol hints. +- Search and inspect stop duplicating nested linked-worktree results (#746, thanks @moynzzz). +- Gitless projects stay searchable; indexes survive adding Git, damaged caches recover, and continuous edits no longer stall indexing. +- Cache locks recover after unreadable/replaced lock files; macOS projects retry busy cache directories instead of losing indexes. +- Search stops matching functions against neighboring functions' text, bounds long-line snippets and classifies test-support files consistently. +- Unreadable indexes produce gaps instead of silent misses; semantic search fixes exported-symbol ranking and oversized summaries. +- Python edits preserve indentation, multiline strings and line endings; invalid indentation rolls back (#824, thanks @null-axiom). +- Line-range/multi-edit batches accept existing filenames with glob characters, such as `app/[id]/page.tsx`; actual glob edits require one find/replace. +- Extraction preserves bindings, literals and line endings and refuses unsafe control flow; symbol moves keep TypeScript/JavaScript directives. +- Import edits preserve comments, directives and Python ordering; AST rewrite previews reject invalid rewrites and preserve `$$$` captures (#827, #828, thanks @null-axiom). +- Large matches finish promptly; Go grouped types, HTML headings and Pascal AST patterns parse correctly; timed-out outlines return partial results. +- On Unix, Bash can validate scripts AFT's parser rejects; Windows reports unknown syntax-check results. Confirmed errors name their line. +- Watches preserve split characters across output pages and disclose timed-out scans; Unix commands retain signal exit codes. +- Background completions and watch matches survive startup and restarts; OpenCode/Pi retry undelivered notifications without duplicates. +- Unknown tasks point to `bash`; storage failures stop masquerading as task-limit or missing-task errors (#691, thanks @kido5217). +- Outline/zoom respect URL/GitHub deadlines; calls keep replying during restarts, shutdowns and slow saves, without mislabeling daemon calls as never started. +- Oversized or duplicate standalone requests are refused without displacing pending work; busy queues return retry errors. +- Undo waits for migration; cleanup reclaims deleted checkouts, empty/read-only task folders and old cache trash (thanks @null-axiom). +- Windows: config saves work during reads; config and call-graph watches stop without freezing unrelated file operations. +- Windows: same-size replacements invalidate stale caches, and finished command results retain their full lifetime. +- Windows: daemon shell commands stop crashing AFT; `exit N` survives restart; memory-limit stops finish with code 137. +- Kills disclose surviving processes; macOS stops waiting on processes already exiting (#830, thanks @iceteaSA) ([docs](https://github.com/cortexkit/aft/blob/main/docs/tools.md)). +- OpenCode preserves invalid preferences and prevents competing updates; status stops regressing under load. CLI keeps pinned versions, comments and exit codes. +- Pi stops stalled language-server installs; Linux ARM64 skips unsupported clangd downloads. +- `aft profile` shows busy-thread stacks and raw frames without symbols; logs identify the correct session (#1008, thanks @iceteaSA). +- Managed Git hooks no longer hang on leftover helper processes. +- Foreground commands stream live output again in OpenCode 1, OpenCode 2 and Pi (#1052, thanks @chrisolszewski). +- Returning to an idle project restores task records, compression events and undo backups without a restart (#1084, thanks @iceteaSA). +- After a restart, watch and completion previews are withheld only for commands that may hold secrets, and name the output file. +- Changed-file diffs that run out of time say so instead of claiming no clean Git version. +- `aft_outline` array targets fetch URL entries instead of treating them as local paths; an unfetchable URL is reported with its reason. +- A cancelled write no longer leaves its backup in undo history; a failed cleanup is reported. +- With views off, search on an unloaded semantic index reports it as building instead of ready. +- SQLite missing-table and missing-column errors include the schema hint for `~` and variable database paths. + +## Security + +- OpenCode outline/zoom enforce read rules; broad approvals stay file-only, and delete/undo refuse files swapped after approval (thanks @iceteaSA). +- File tools and undo refuse AFT storage and links to live databases, even within authorized projects. +- Authorization failures prevent command execution; uncertain result recording reports `outcome_unknown` instead of success. +- Language-server downloads never forward GitHub tokens outside `api.github.com`; installers reject unsafe versions and skip npm install scripts. +- Formatters/checkers use the session's sandbox and grants; logs mask inline command secrets. +- macOS workers can use `kill -0`; real signals reach only their command's processes on macOS/supported Linux kernels (older kernels report unenforced) ([docs](https://github.com/cortexkit/aft/blob/main/docs/config.md#native-command-sandbox)). From 02665e4fdb043b8208dadf4df8804b7924b1b963 Mon Sep 17 00:00:00 2001 From: ualtinok <94532+ualtinok@users.noreply.github.com> Date: Wed, 28 Oct 2026 21:36:28 +0100 Subject: [PATCH 2/2] Search descriptor for the v0.63.1 notes Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com> --- .../slice-descriptors/land-release-notes-0.63.1.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.1.json diff --git a/benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.1.json b/benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.1.json new file mode 100644 index 000000000..27e9e4466 --- /dev/null +++ b/benchmarks/aft-search/slice-descriptors/land-release-notes-0.63.1.json @@ -0,0 +1,8 @@ +{ + "fixtures": [ + "harness-goldens" + ], + "kind": "harness", + "slice_class": "non_ranking", + "targeted_mechanism": "none" +}