Skip to content

Commit 51c935e

Browse files
committed
docs: v0.48.1 release notes draft
1 parent 3b32627 commit 51c935e

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

.alfonso/release-notes/v0.48.1.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# v0.48.1
2+
3+
Patch release: correctness and performance fixes. No new features, no config changes.
4+
5+
## Search
6+
7+
- Cross-project `aft_search` on a repository that has no AFT index now returns a bounded lexical scan with a disclosure instead of failing with `not_indexed`. The error dead-ended agents into shell fallbacks; the same situation in `grep` already degraded gracefully, and the two tools now behave consistently. Semantic ranking still requires an index built by a session in that project, and the disclosure says so. (#166)
8+
9+
## Import management
10+
11+
Three silent-mutation bugs in `aft_import`, all in the same defect class (import statement shapes modeled too coarsely):
12+
13+
- **Solidity**: single-quoted import paths (`import './X.sol';`) were stored with their quotes, so `remove` reported `module_not_found` while the import remained, and `add` inserted a duplicate with the other quote style. Both quote styles now parse identically across all four Solidity import forms.
14+
- **Scala 2**: `add` in a Scala 2 file never recognized an already-present import (an internal dialect marker made the comparison always fail), so repeated adds accumulated duplicate lines. Deduplication now works; Scala 2 syntax generation is unchanged.
15+
- **Lua**: removing an import from a mixed declaration like `local x = require("x"), sideEffect()` deleted the entire line including the unrelated call, while reporting success. Mixed declarations are no longer treated as imports: remove leaves them byte-identical and reports `module_not_found`; plain `local x = require("x")` declarations behave as before.
16+
17+
## Performance
18+
19+
- **Call graph extraction** no longer rescans the file's AST once per symbol. Cold builds and watcher refreshes of symbol-heavy files scale linearly instead of quadratically (measured: 1,000-symbol file 102ms → 23ms; output byte-identical).
20+
- **Code-health scans** (`aft_inspect` metrics and TODO categories) previously thrashed a fixed-size cache on projects over ~4,000 files, re-reading every file on every scan. The cache now sizes to the project, and unchanged warm scans read nothing (measured: 12,000-file warm scan 101ms → 45ms for metrics, ~90ms → ~40ms for TODOs).
21+
- **Outline generation** (also used by `aft_zoom` container menus and top-ranked search snippets) replaced a quadratic insertion scan with an indexed one. Files with thousands of one-method containers render ~11x faster (measured: 16,000 symbols 65ms → 5.7ms; output byte-identical).
22+
23+
## Build
24+
25+
- Fixed `cargo test --release` compilation of the library test suite (debug-only test helpers were referenced from tests that compile in release mode).

0 commit comments

Comments
 (0)