Commit Graph
4804 Commits
Author SHA1 Message Date
Martin Vogel 3be5a02708 Merge pull request #2601 from bline/fix/doc-link-missing-member
fix(doc-links): report a path::member reference to a missing member (#2587)
2026-10-29 04:47:39 +01:00
Martin Vogel 59d6b52679 Merge pull request #2421 from Fieldnote-Echo/fix/dotd-depinfo-sniff
fix(discover): keep make/cargo dep-info .d files out of the D grammar
2026-10-29 04:32:21 +01:00
Martin Vogel ba4122d3cc Merge pull request #2418 from Fieldnote-Echo/fix/sequential-definitions-retention
fix(pipeline): free trees and compact results in sequential definitions pass
2026-10-29 03:47:38 +01:00
Martin Vogel 006101ae4f Merge pull request #1710 from benrfairless/fix/ruby-namespaced-constructor-callee
fix(extraction): reduce A::B.new callee to the constant
2026-10-29 03:32:26 +01:00
Martin Vogel 2658a181b5 Merge pull request #2600 from bline/fix/snapshot-coherence
fix(mcp): verify content for freshness and snippets; expose store generation (#2585)
2026-10-29 03:27:46 +01:00
Martin Vogel beddaaaa2e Merge pull request #2731 from DeusData/fix/mimalloc-3.5.3-preinit-free
fix(mem): vendor mimalloc 3.5.3 so free(NULL) before init is safe (supersedes #2562)
2026-10-29 02:47:58 +01:00
Martin Vogel ba0f8a8409 Merge pull request #2717 from oscarbol09/docs/windows-troubleshooting
docs(troubleshooting): add Windows troubleshooting guide
2026-10-29 02:47:52 +01:00
Martin Vogel 7b398de4e4 Merge pull request #2769 from gaurav0107/fix/2033-go-type-alias-alias-of-is-never-register
fix(go-lsp): follow a type alias declared in another file of the package
2026-10-29 02:32:34 +01:00
Martin Vogel c4e37c1239 Merge pull request #2290 from knewstimek/pr/windows-setenv-utf8
fix(windows): set UTF-8 environment values through wide CRT
2026-10-29 01:56:52 +01:00
Martin Vogel f1efbf60d8 Merge pull request #2746 from gaurav0107/fix/2297-typescript-calls-through-a-renamed-named
fix(ts-lsp): resolve calls through renamed named imports
2026-10-29 01:33:12 +01:00
Martin Vogel 0002acd002 Merge pull request #2090 from sanskar717/feat/solidity-support
fix(lang): track Solidity modifier invocations as decorators
2026-10-29 01:08:06 +01:00
Martin Vogel 442989ebaa Merge pull request #2754 from gaurav0107/fix/2666-c-extraction-a-macro-argument-identifier
fix(pipeline): a bare C reference never binds a struct Field
2026-10-29 01:07:58 +01:00
Martin Vogel e1405eaeb7 Merge origin/main into fix/sequential-definitions-retention
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 23:27:16 +01:00
Martin Vogel 3bd645efd5 Merge origin/main into pr/windows-setenv-utf8
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:15:29 +01:00
Martin Vogel 95279bd74f Merge origin/main into fix/snapshot-coherence
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:15:21 +01:00
Martin Vogel e2c9de1d1b Merge origin/main into feat/solidity-support
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:14:55 +01:00
Martin Vogel ba246dad4f Merge origin/main into fix/2033-go-type-alias-alias-of-is-never-register
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:14:30 +01:00
Martin Vogel 9fe25c476f Merge origin/main into fix/doc-link-missing-member
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:14:22 +01:00
Martin Vogel eb76d04acf Merge origin/main into fix/dotd-depinfo-sniff
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:13:34 +01:00
Martin Vogel 1aeaf6f024 Merge origin/main into fix/2666-c-extraction-a-macro-argument-identifier
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:13:26 +01:00
Martin Vogel 849e74f69e Merge origin/main into fix/ruby-namespaced-constructor-callee
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:13:18 +01:00
Martin Vogel 5d374a7634 Merge origin/main into fix/2297-typescript-calls-through-a-renamed-named
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:13:10 +01:00
Martin Vogel 5d97172b89 Merge origin/main into docs/windows-troubleshooting
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:12:53 +01:00
Martin Vogel ebdf9bafd5 test(mem): unpoison mimalloc output before the handler reads it
The MSan output handler checked msg[0] before marking the text
initialized, so MSan reported the handler's own read
(tests/test_main.c:2151). Unpoison first, then test for the empty
replay.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 18:11:31 +01:00
Martin Vogel dca2a44ef0 Merge pull request #2807 from divakantpandey/fix/2787-pi-extension-string-enum
fix(cli): emit string enums as Type.String({ enum }) in Pi adapter (#2787)
2026-10-28 18:10:35 +01:00
Martin Vogel e425666aab Merge pull request #2760 from gaurav0107/fix/2388-extraction-remaining-fixed-size-tsnode-w
fix(extract): YAML walkers grow their stacks instead of capping content
2026-10-28 18:08:25 +01:00
Martin Vogel 635f8e3b63 Merge pull request #2309 from BumaldaOverTheWater94/fix/home-user-symlink-alias
fix(cli): trust root-owned per-user /home entries during activation walk
2026-10-28 18:08:15 +01:00
Martin Vogel 2796460efe Merge pull request #2305 from pcristin/fix/issue-2265-unresolved-call-coverage
fix(pipeline): expose unresolved call coverage
2026-10-28 18:07:59 +01:00
Martin Vogel ea892c5349 Merge pull request #2817 from DeusData/feat/drift-reminder-hook
feat(cli): note when a Claude Code session keeps searching without the graph
2026-10-28 18:07:44 +01:00
Divakant Pandey 323e88fa0b Merge branch 'main' into fix/2787-pi-extension-string-enum 2026-10-28 16:51:53 +05:30
Pcristin 8a2f718e1c Merge branch 'main' into fix/issue-2265-unresolved-call-coverage 2026-10-28 08:27:52 +00:00
Martin Vogel 820cd02307 Merge pull request #2161 from htarnacki/fix/discover-external-fast-mode
fix(discover): retain external source directories in fast mode (#2151)
2026-10-28 07:47:51 +01:00
Martin Vogel 1306c276f2 Merge origin/main into fix/2033-go-type-alias-alias-of-is-never-register
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 07:27:51 +01:00
Martin Vogel ee9dc48d1e Merge origin/main into fix/issue-2265-unresolved-call-coverage
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 07:07:50 +01:00
Martin Vogel 5b3fe0646f Merge origin/main into fix/ruby-namespaced-constructor-callee
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 06:48:23 +01:00
Martin Vogel 62965bc0f6 test(doc-links): exercise the ambiguous member row on a Ruby group (#2587)
The "group shrinks" step of doc_links_md_member_missing_incremental
removed one of two Python `area` methods and expected the closure-repair
route. Since the Python namespace admission on main (merged into this
branch with origin/main), a Python file whose surface changes always
takes the full route (closure_decline reason=python_namespace_changed),
so the step ran FORCED_FULL on every platform; the Windows leg was simply
the first to report it. Nothing here depends on timing: the planner
compares content hashes.

The group now lives in a Ruby file. Ruby has no doc-link scope, so the
lost method reports no removed name and the document re-resolves only
through the ambiguous `path::member` rule, which this step exists to
bind. (A Rust group was tried too: its scope reports the method as a
removed name, so the step passed with the rule removed.)

Test: the step takes closure repair with closure=2 (shapes.rb and
docs/areas.md). With "ambiguous" dropped from doc_row_member_reason it
stays on closure repair with closure=1 and keeps the stale ambiguous row
where the full index has the Areas -> Square.area edge.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 05:37:32 +01:00
Martin Vogel 6217b49381 Merge origin/main into feat/solidity-support
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 05:27:56 +01:00
Martin Vogel 8984e7e989 Merge origin/main into fix/2297-typescript-calls-through-a-renamed-named
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 05:27:48 +01:00
Martin Vogel 8aeee865e6 Merge origin/main into pr/windows-setenv-utf8
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 04:27:57 +01:00
Martin Vogel bd144c2544 Merge origin/main into fix/snapshot-coherence
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 04:07:48 +01:00
Martin Vogel 8012a7516f Merge origin/main into fix/2388-extraction-remaining-fixed-size-tsnode-w
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 03:28:13 +01:00
Martin Vogel 1f934b6afb Merge pull request #2774 from RithvikReddy0-0/python-prefixed-string-urls
extract: fold prefixed and triple-quoted Python string URLs
2026-10-28 03:07:57 +01:00
Martin Vogel b956413eb4 Merge pull request #2423 from harshitaajoshi/fix/2386-bm25-label-window
fix(mcp): apply search_graph label filter inside the BM25 candidate window (#2386)
2026-10-28 02:27:53 +01:00
Martin Vogel 5810183b3b Merge pull request #2430 from AmirF194/fix/2276-incremental-reindex-root-path-stale
fix(pipeline): refresh the projects row's root_path on the delta route
2026-10-28 01:08:02 +01:00
Martin Vogel 0f8b46570c test(mem): unpoison mimalloc output in the MSan test runner
The MSan lane compiles mimalloc without -fsanitize=memory on purpose, so
MSan never sees mimalloc write its own stack. Its text output is the one
place those stack bytes reach an MSan interceptor: a message formatted in
a mimalloc stack buffer arrives at fputs still carrying the shadow an
earlier instrumented frame left there (cbm_log's line_buf), and MSan
reports initialized bytes as uninitialized.

mimalloc 3.5.3 prints an arena-alignment fallback warning on the x86-64
MSan lane, which turned this into a use-of-uninitialized-value report in
the mem suite (_mi_prim_out_stderr, 43 bytes: the per-thread prefix).

Under __has_feature(memory_sanitizer) only, the test runner now registers
a mimalloc output handler at the top of main that unpoisons the finished
text and writes it to stderr. Registering replays mimalloc's delayed-output
buffer, which its constructor already wrote to stderr before main, so the
handler skips that replay instead of repeating it behind a stray newline.
Production code and every non-MSan build are unchanged.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 01:07:23 +01:00
Martin Vogel 3d65c609e1 fix(mem): define MI_MINGW_UCRT64 for MinGW mimalloc builds
mimalloc 3.5.3 treats a MinGW build as having a process-attach hook only
when MI_MINGW_UCRT64 is defined (src/prim/windows/prim.c). Upstream's
CMake sets it; Makefile.cbm did not. src/prim/prim.c therefore also
compiled its constructor, and _mi_auto_process_init ran twice on Windows:
once from that constructor and once from the CRT TLS callback.

The second run flushes the delayed-output buffer to stderr again, and the
first flush had left a newline in it, so every Windows run started with a
blank line on stderr. That is what failed smoke-win's one-line --version
check. In the MI_DEBUG=2 test build the same second run reaches
mi_assert_internal(mi_out_default == NULL) in options.c, which aborts.
3.3.2 had no such condition.

Define it for IS_MINGW builds in both the production and the test
mimalloc flags. Every MinGW toolchain this repository builds with (MSYS2
CLANG64 and CLANGARM64) is UCRT. No vendored source changes.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 01:07:23 +01:00
Martin Vogel 406f6c7c71 Merge origin/main into fix/doc-link-missing-member
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 00:44:29 +01:00
Martin Vogel 69155bcf6c fix(incremental): re-resolve documents whose member rows name a changed file (#2587)
An unresolved `path::member` row (missing or ambiguous) leads to its
file by no edge, so an incremental run never re-resolved the document
when that file changed. Two edits then left a row where a full index
has an edge: a body edit that writes a missing member's name (no
definition added), and a same-named pair of methods shrinking to one
(the name stays, so no removed name reaches the rows).

The closure now also takes the files whose missing or ambiguous rows
with "::" name a changed or deleted file, matched by base name since a
reference may be written relative to the document or to the root. When
memory runs out, every such row's file is taken.

Test: doc_links_md_member_missing_incremental requires incremental ==
full on the closure-repair route for both edits and for dropping the
name again. Without the new closure rule the "member written" step
diverges; with it limited to missing rows the "group shrinks" step
does.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 00:43:16 +01:00
Martin Vogel 1a7239f52b fix(doc-links): a member the code file writes keeps its file edge (#2587)
A `path::member` reference became a missing row whenever the member
lookup found no definition node, but real documentation names members
the file has without a node the lookup binds: a call form
(`src/util.py::clamp()`), a C macro or a prototype in a header, a
TypeScript namespace, a Python enum member, an annotated class
attribute. Those lost their correct file edge and were counted as doc
rot.

A member now reads without a trailing call form, so `clamp()` binds
`clamp`. When no definition matches, the resolver reads the code file
and calls the member missing only when the file does not write its name
at all (a whole identifier, case-sensitive); a member the file writes
keeps the file edge it had before. A file that cannot be read whole
makes no claim. Ambiguous members are unchanged.

Test: doc_links_md_member_written_issue2587 indexes each shape under its
own heading, and two members that stay missing (Color::BLUE, which the
file writes only as LIGHT_BLUE and a lowercase "blue", and
no_such_function). On the previous head all seven shapes are missing
rows; without the call-form trim the call form is; without the
identifier boundary, or with a case-insensitive match, BLUE takes the
file edge.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-28 00:43:12 +01:00
Martin VogelandTamer a36b2ee6da docs(troubleshooting): refresh Windows entries for v0.12.x
- Non-ASCII paths: drop the NTFS junction example; the workaround is
  ASCII-only paths for the two variables, or an upgrade.
- Update entry: name the real command (update, not upgrade) and mark
  #1168 as closed, fixed in v0.10.0.
- Index worker: from v0.12.0 a worker that exits without returning a
  result is no longer counted as a success, and its log is kept; ask
  for logs when indexing still fails on v0.11.0 or newer.
- Antigravity: state the affected range (all releases through v0.12.1
  when neither detection signal is present) and which signal each
  version checks; scope the duplicate binary to v0.9.x and earlier.
- OpenCode: list the detection signals per version (PATH, config, and
  from v0.12.0 the data folder), the 4 KB PATH and npm/mise/scoop shim
  gaps fixed after v0.12.1 (#2381), and a workaround per version.

The page structure and the original entries were first drafted by Tamer
in #2262.

Refs #1170

Co-authored-by: Tamer <tamer.elbakkali@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-27 23:49:24 +01:00