Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .alfonso/release-notes/next/bg-gh-authority.md

This file was deleted.

1 change: 0 additions & 1 deletion .alfonso/release-notes/next/outline-url-arrays.md

This file was deleted.

1 change: 0 additions & 1 deletion .alfonso/release-notes/next/retention-census-streaming.md

This file was deleted.

81 changes: 81 additions & 0 deletions .alfonso/release-notes/v0.63.1.md
Original file line number Diff line number Diff line change
@@ -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)).
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"fixtures": [
"harness-goldens"
],
"kind": "harness",
"slice_class": "non_ranking",
"targeted_mechanism": "none"
}
Loading