Addresses the round-4 findings against the stack (PR #104 portion). - HIGH range-only semantic-token servers: LSP defines semanticTokensProvider.full and .range as optional, INDEPENDENT capabilities, but the old any-provider gate sent /full regardless — a range-only server rejects it and the swallowed error means no styling, ever. Both the auto-pull and the manual command now gate each request kind on its own capability: /full (delta under full.delta) when negotiated; a range-only provider gets a WHOLE-DOCUMENT /range request. New `rangeonly` fake mode (advertises range without full, rejects /full) + test proving tokens arrive via the range path. - MEDIUM completion acceptance left this_command stale: the popup accept applies its edit and fires after-edit outside command dispatch, so this_command could still read "buffer.self-insert" from the typing that raised the popup — a candidate ending in "(" would spuriously auto-trigger signature help. Accept now stamps its own boundary ("completion.accept"); asserted in the popup acceptance suite. - MEDIUM GPU shape inference tightened: the 1-4-byte predicate accepted a 2-byte "a(" insert (two ASCII codepoints). The classifier now decodes the inserted bytes from the post-edit rope and requires the leading byte's UTF-8 sequence length to equal inserted_len — exactly one codepoint. The daemon unit test now drives an "a(" op and asserts it breaks the chain instead of classifying as typing. Exact wire provenance on the CRDT op remains the named deferred general fix. Gates: fmt + workspace clippy clean; lib 1500; crdt 1672; m4 98; completion 9; killring 30; GPU 58; git diff --check clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| api | ||
| commands | ||
| hooks | ||
| keymaps | ||
| menus | ||
| packages/repl | ||
| runtime | ||