Repository navigation
Fix what a review of the seven reading features found - #14
Merged
Merged
Conversation
Preserve custom embedding settings without a key and resolve Rust raw identifiers consistently. Keep member calls named after builtins, resolve Rust child-module directories correctly, and scope inline imports by their syntax-tree declaration while retaining one parse per indexed file. Correct FLOW source/LSP column conversions, ignore quoted punctuation when following arguments, and skip generic function bounds before parameters. Build Docs from exact declaration ranges and AST access labels, and retain the selected item when multiple declarations share a line. Invalidate older index snapshots so cached analysis receives the fixes. Validation: 1897 workspace tests passed, 19 ignored; workspace/all-target Clippy with -D warnings, formatting, and toolchain checks passed.
Preserve remote reading preferences with journaled TOML key edits and protocol v16. Adopt absent remote state, refresh large notebooks, and recover stopped debugger state after rejected controls. Retire stale searches and validate semantic and Ask embedding spaces. Correct Rust and C flow parsing, cfg literals, trait inheritance, and Cargo bundle artifact selection. Add 43 regression tests. Workspace validation: 1940 passed, 19 ignored; build, Clippy, rustdoc, and formatting checks passed.
The changes tool only asked `git diff HEAD`, which never lists a file git does not track: with a new file not added yet, it said there was nothing to review. Untracked files that are not ignored now count as uncommitted work, are listed with the status `?`, and are shown whole as added. The commit and file lists had no cap, so on a large branch they filled the result and the diff after them was cut away. Both are now capped in bytes with the rest counted, and the diff gets what the result cap leaves. The base branch was only ever main or master. It is now the nearest of the remote's default branch (origin/HEAD), main, master and develop, so a branch of develop is reviewed against develop. HEAD on the remote's default branch is on the base. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WRJ4sDknvQJ86tFvGydgpf
- Go: a function was a route whenever its first three lines named
`*http.Request` or `http.ResponseWriter`, so helpers taking a request
counted, and a one-line function before a handler did too. A route is
now a real handler signature, read up to the function's own `{`:
net/http's writer and request, or a gin, echo or fiber context alone
with the return such a handler has.
- Java: Room and Spring Data's `@Query`, `@Update` and `@Delete` were
routes. A bare HTTP verb is a route only as JAX-RS writes it (`@GET`)
or in a Micronaut file, and `@Query`/`@Update` never are in Java or
Python.
- Rust: an attribute wrapped over several lines (as rustfmt wraps long
route attributes) ended the scan at its `)]` line; it is read whole.
- Two same-named functions in one file could be an entry point to one
lookup and not to the other; both now ask every symbol of that name.
The index cache keeps each function's entry kind, so its version moves
to 12 and files are classified again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WRJ4sDknvQJ86tFvGydgpf
New items were inserted between an existing doc comment and its item in several places, so rustdoc showed one item's docs on another (and none on the first). Each comment is back above its own item. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WRJ4sDknvQJ86tFvGydgpf
- Value trace: a parameter list holding an arrow type (`() => void`, `impl Fn(u8) -> u8`) or a generic bound with parentheses lost every parameter after it; a comma inside a string literal counted as an argument separator, so following a value went into the wrong parameter; and `(await f())` or `(new F())` named their call as "t()"/"w()". Strings are skipped (a Rust lifetime is no string), arrows and comparisons are no brackets, and the list is the first parenthesis outside angle brackets. - Value trace: the "first 400 shown" note counted references only; it counts definitions too. A row a remote project never read moves with its file's edits instead of being marked changed. "Trace value at cursor" is a keyboard action now (⌘⇧V by default). - Type map: the structure index knows a Rust type's trait impls by bare name, so every same-named type got all of them; such a type now draws none from it. - Tutorial: the Type Map icon has its step and Settings points at its own icon again; and the SEARCH step no longer leaves the search box holding the → and Enter that step the tour. - Glossary: a folder term shows the folder's explanation instead of opening the folder as a file, and is located as `path/`; a module term shows on hover only where a line imports it, not on any local of the same name. - Debug-run walkthrough: a stop outside the project ends the visit before it, so coming back to a function is another step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WRJ4sDknvQJ86tFvGydgpf
master carries two commits not on main (protocol v16, and fixes to state sync, search, code analysis and value tracing). Three files conflicted: - src/editor/flow.rs: both sides fixed how a call's arguments and a signature's parameters are split. master's version covers more (raw strings, block comments, Rust turbofish, C/C++ declarators by parse), so it is kept and this branch's string mask and angle helpers go. This branch's regression tests stay and pass against it. - src/session/cache.rs: both sides moved the index cache to version 12 for different changes. master's change keeps 12 and the stricter entry points move to 13, so an index built by either side is rebuilt. - src/app/tests.rs: both sides appended tests at the end; both are kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WRJ4sDknvQJ86tFvGydgpf
After the merge, the parameter splitter took every `<` outside braces as an open angle bracket. A default such as `limit=n < 3` then left one open that no `>` closed, so the list's `)` was never found and the parameter after it could not be followed. A `<` before a space, `=` or `<` compares or shifts, and opens nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WRJ4sDknvQJ86tFvGydgpf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A review of the seven reading features (shipped in 0.1.15) found 19 problems, and the Ask
changestool only knew main or master as a base branch. All of it is fixed here, each fix with a test, and a third Xvfb pass checked the fixes that can be clicked through.This PR also brings in
master, which had two commits not onmain(protocol v16, and fixes to state sync, search races, code analysis and value tracing). See Merged from master below.Merged from master
master's two commits (da40436,abdb6e0) come in through a merge commit. Three files conflicted:src/editor/flow.rs: both sides fixed how a call's arguments and a signature's parameters are split.master's version is kept because it covers more: raw strings, block comments, Rust turbofish, and C/C++ declarators read by parse. This branch's string mask and angle-bracket helpers were dropped. This branch's regression tests stay and pass againstmaster's code, after one fix on top: a<before a space,=or<is a comparison or shift, not an angle bracket (a Python defaultlimit=n < 3had left the list unclosed).src/session/cache.rs: both sides moved the index cache to version 12 for different changes. 12 keepsmaster's meaning, and the stricter entry points move to 13, so an index built by either side is rebuilt.src/app/tests.rs: both sides appended tests at the end of the file. Both sets are kept.Ask
changestoolgit diff HEAD, which never lists a file git does not track. With a new file not added yet, it said there was nothing to review. Untracked files that are not ignored now count as uncommitted work. They are listed with the status?and shown whole as added.origin/HEAD), main, master and develop the current branch is closest to, so a branch of develop is reviewed against develop.Entry points
*http.Requestorhttp.ResponseWritercounted as a route, so did helpers that take a request, and so did a one-line function placed before a handler. A route must now have a real handler signature, read up to the function's own{: net/http's writer and request, or a lone gin, echo or fiber context with the return type such a handler has.@Query,@Updateand@Deletecounted as routes. A bare HTTP verb is now a route only as JAX-RS writes it (@GET) or in a Micronaut file, and@Query/@Updatenever are, in Java or in Python.)]line. It is now read whole.master's change), because the cache stores each function's entry kind. Files are classified again on the next open.Value trace
() => void,impl Fn(u8) -> u8) or a generic bound with parentheses lost every parameter after it.master's implementation, which this branch's tests cover.)(await f())and(new F())named their callt()orw().Type map, tutorial, glossary, debug-run walkthrough
path/. A module term's hover now appears only on lines that import the module, not on a local variable with the same name.Doc comments
New items had been inserted between existing doc comments and the items they describe, so rustdoc showed one item's docs on another (12 places). Each comment is back above its own item.
Checks run locally (on the merged head)
cargo fmt --check, strict clippy on the backend crates, and rustdoc with warnings denied are all clean.changeslists the new files, and the module hover appears onimport configbut not on a localconfig.🤖 Generated with Claude Code
https://claude.ai/code/session_01WRJ4sDknvQJ86tFvGydgpf