Skip to content

v0.54.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 07:29
· 1753 commits to main since this release
eaf9fb2

What's Changed

  • refactor(server): decompose get_health into a thin dispatcher by @RaghavChamadiya in #2546
  • refactor(server): split get_why into mode and layer modules by @RaghavChamadiya in #2547
  • refactor(server): split tool_answer/symbols.py and give the string scanner one handler per state by @RaghavChamadiya in #2548
  • refactor(server): decompose execute_job and split job_executor along its section seams by @RaghavChamadiya in #2549
  • test(server): pin the /api/repos branches the feature tests leave uncovered by @RaghavChamadiya in #2550
  • refactor(server): split the repos router's summary, listing, pricing and generate helpers out of its long handlers by @RaghavChamadiya in #2551
  • fix(core): close the omission store's connection when opening it fails by @RaghavChamadiya in #2555
  • refactor(core): decompose the decision miners and share their batching by @RaghavChamadiya in #2559
  • refactor(core): share OpenAI-compatible provider plumbing by @RaghavChamadiya in #2557
  • refactor(core): split crud/decisions.py by concern by @RaghavChamadiya in #2558
  • test(server): pin the degraded and edge paths of get_context enrichment, get_overview, get_change_risk and get_symbol by @RaghavChamadiya in #2556
  • fix(server): treat a missing repository as no index in change-risk health references by @RaghavChamadiya in #2553
  • refactor(core): move the KG tour out of kg_curation.py by @RaghavChamadiya in #2560
  • refactor(core): decompose the dead-code symbol and package passes by @RaghavChamadiya in #2561
  • refactor(core): decompose ASTParser symbol, import and call extraction by @RaghavChamadiya in #2562
  • refactor(core): flatten the Android manifest and .NET hint extractors by @RaghavChamadiya in #2563
  • fix(server): check for a repo path before building get_symbol's exclusion spec by @RaghavChamadiya in #2554
  • fix(health): a file with no code finding loses at most one point to git history by @RaghavChamadiya in #2566
  • fix(git): keep a file's history across renames by @RaghavChamadiya in #2569
  • fix(refactoring): attach only the findings a step's target answers by @RaghavChamadiya in #2571
  • fix(refactoring): stop move_method targeting result types and base classes by @RaghavChamadiya in #2572
  • fix(coupling): count a chain through a re-export barrel as a dependency by @RaghavChamadiya in #2573
  • fix(health): pair a file with the tests that import it by @RaghavChamadiya in #2574
  • fix(refactoring): credit extract_method only with the impact its span recovers by @RaghavChamadiya in #2570
  • fix(update): finish --full when a few pages fail, and stop truncating Ollama prompts by @RaghavChamadiya in #2564
  • refactor(server): split the HTTP lifespan into named startup and shutdown steps by @RaghavChamadiya in #2552
  • fix(git): measure history windows from the indexed commit, not the wall clock by @RaghavChamadiya in #2568
  • docs(server): shorten comments in the get_answer tool package by @RaghavChamadiya in #2576
  • docs(core): shorten comments in the receiver-type scanner by @RaghavChamadiya in #2577
  • docs(server): shorten comments in get_context target resolution by @RaghavChamadiya in #2579
  • docs(core): shorten comments in the dead-code constants by @RaghavChamadiya in #2578
  • docs(core): shorten comments in the session decision miner by @RaghavChamadiya in #2580
  • refactor(server): move chat prompt, history and tool summaries out of the chat router by @RaghavChamadiya in #2575
  • refactor(cli): move decision id resolution and batch runs into decision_batch by @RaghavChamadiya in #2581
  • refactor(core): break up FileTraverser's file filter and the console-script reader by @RaghavChamadiya in #2582
  • refactor(core): move per-language parser helpers into ingestion/lang_helpers by @RaghavChamadiya in #2584
  • refactor(ui): split ai-prompt-builder into one module per prompt kind by @RaghavChamadiya in #2585
  • fix(decisions): keep conventional ADR dirs ahead of loose name matches at the cap by @RaghavChamadiya in #2586
  • fix(health): floor displayed scores so the figure never rounds into the next band by @RaghavChamadiya in #2587
  • fix(why): match archaeology cross-references on whole tokens by @RaghavChamadiya in #2588
  • refactor(core): move decision records, answer parsing, staleness and commit helpers out of the extractor by @RaghavChamadiya in #2589
  • refactor(core): move C/C++ macro state tracking into cpp_macro_facts by @RaghavChamadiya in #2590
  • refactor(core): decompose the KG tour into named stages by @RaghavChamadiya in #2593
  • refactor(core): move KG module derivation and validation out of kg_curation.py by @RaghavChamadiya in #2592
  • refactor(server): split tool_overview.py into a package, moving code verbatim by @RaghavChamadiya in #2595
  • refactor(core): move call resolver language strategies and receiver typing into mixins by @RaghavChamadiya in #2594
  • fix(health): stop hidden_coupling deducting from the score, keep it as advisory by @RaghavChamadiya in #2596
  • refactor(core): make tech stack and build command detection table-driven by @RaghavChamadiya in #2597
  • refactor(server): split get_risk into graph loading, hotspot, evidence and directive steps by @RaghavChamadiya in #2598
  • refactor(core): move the TS/JS perf marker hooks into their own module by @RaghavChamadiya in #2599
  • refactor(server): split overlay ingestion and share artifact reads in CrossRepoEnricher by @RaghavChamadiya in #2600
  • refactor(server): decompose the decisions router's long handlers by @RaghavChamadiya in #2602
  • refactor(core): decompose the split_file detector into single-purpose helpers by @RaghavChamadiya in #2603
  • refactor(server): split symbol resolution and flow tracing out of the graph intelligence routes by @RaghavChamadiya in #2604
  • fix(decisions): read significant-commit metadata the same way in both commit miners by @RaghavChamadiya in #2605
  • refactor(core): decompose the shared commit-index walks into small steps by @RaghavChamadiya in #2606
  • refactor(core): split per-file history indexing into named steps by @RaghavChamadiya in #2607
  • fix(editor-files): keep a malformed manifest from crashing the tech stack scan by @RaghavChamadiya in #2608
  • refactor(ingestion): drop an unused per-file strategy map from CallResolver by @RaghavChamadiya in #2609
  • fix(mcp): describe the ownership block get_overview actually returns by @RaghavChamadiya in #2610
  • fix(ui): put text-xs and text-sm on the type ladder (12px and 15px) by @RaghavChamadiya in #2619
  • docs(security): hosted platform calls the LLM with its own key only by @RaghavChamadiya in #2617
  • fix(health): keep history markers through the update's full re-score by @RaghavChamadiya in #2614
  • fix(generate): account for every planned page and print the actual cost by @RaghavChamadiya in #2615
  • fix(decisions): stop the id migration copying a record onto an occupied id by @RaghavChamadiya in #2613
  • fix(update): split the cascade-budget warning into model and structural pages by @RaghavChamadiya in #2616
  • feat(coverage): gate a change on its patch coverage in CI by @RaghavChamadiya in #2630
  • feat(doc-drift): suggest replacements and gate documentation drift in CI by @RaghavChamadiya in #2631
  • fix(agent-targets): stop re-rendering .mcp.json when the merge refuses by @sloemo01 in #1836
  • feat(coverage): patch coverage on the agent, API and local surfaces by @RaghavChamadiya in #2634
  • feat(security): gate a change on the findings it adds in CI by @RaghavChamadiya in #2635
  • feat(coverage): record each ingest and report its freshness and path matches by @RaghavChamadiya in #2636
  • fix(coverage): match report paths by directory, report location and source roots by @RaghavChamadiya in #2637
  • feat(ci): one GitHub Action, a GitLab template and one guide for the three CI gates by @RaghavChamadiya in #2641
  • feat(coverage): keep a coverage history and show its trend by @RaghavChamadiya in #2642
  • feat(doc-drift): scope the CI gate to the drift a change is answerable for by @RaghavChamadiya in #2640
  • feat(vscode): show documentation drift in the Problems panel for markdown by @RaghavChamadiya in #2648
  • feat(doc-drift): record drift in health history and mark findings new since the last update by @RaghavChamadiya in #2646
  • feat(doc-drift): group findings by document and show which documents name a file by @RaghavChamadiya in #2647
  • feat(ci): write doc-drift and security findings as a GitLab Code Quality report by @RaghavChamadiya in #2643
  • feat(coverage): report globs, per-report prefixes, ignore globs and a small-change tolerance for the patch gate by @RaghavChamadiya in #2644
  • feat(coverage): path-scoped coverage gates, with suggestions from owners, layout and the graph by @RaghavChamadiya in #2649
  • feat(risk): gate a change on its risk percentile and weight patch coverage by risk by @RaghavChamadiya in #2645
  • feat(coverage): name the test to extend for each uncovered change, and keep an agent's coverage current by @RaghavChamadiya in #2650
  • feat(actions): lead the Overview with "Do next", built from stored evidence by @RaghavChamadiya in #2651
  • fix(security-scan): ignore call kinds in comments, strings and prose by @Aman-goel-04 in #2618
  • fix(security-scan): report credentials, not examples of them by @RaghavChamadiya in #2660
  • fix(ui): handle communities outside top 20 in GraphNarrowingSelect (#2626) by @rishu685 in #2656
  • docs(graph): sync hand-graded benchmark figures with BENCHMARKS.md (#2352) by @rishu685 in #2628
  • docs(dead-code): correct dynamic-import language coverage in DEAD_CODE.md and dynamic_markers.py (#2354) by @rishu685 in #2629
  • fix(sessions): map codex function_call events to the assistant kind by @Aman-goel-04 in #2652
  • fix(ingestion): use the importable module for Python qualified names by @Aman-goel-04 in #2612
  • fix(ui): merge RepoAvatar className with cn() so callers can override display by @kokokoXUY in #2583
  • [Docs] Fix stale FILE_CODE_EDGE_TYPES reference by @Ava-91 in #2536
  • docs(dead-code): list all unused export edge types by @spark-328 in #2477
  • fix(ui): keep commit filters visible on empty results by @ayush2115 in #2487
  • Fix #2379: Classify .env dotfiles as config paths by @pamod-madubashana in #2381
  • fix: account for Anthropic cached input tokens by @Hitesh-XS in #2433
  • fix: report non-executable post-commit hooks by @spark-328 in #2476
  • fix(hook): filter workspace targets and report failures by @spark-328 in #2478
  • fix(health): derive coverage-gap uncovered lines from the percentage by @JikSau-D in #2259
  • fix: classify dotfiles named after a config extension in file_category by @zhongxiao-chang in #2516
  • fix(lint): sort imports and drop extra parentheses in the language-support docs test by @RaghavChamadiya in #2666
  • feat(doc-drift): flag renamed or deleted code symbols named in docs, and suggest the fix on every surface by @RaghavChamadiya in #2661
  • feat(coverage): compare project coverage with the base and list coverage that moved outside the change by @RaghavChamadiya in #2659
  • feat(security): inline suppression marker, custom patterns and a pre-commit mode by @RaghavChamadiya in #2657
  • fix(coverage): use the renamed diff arguments when reading a change for the project delta by @RaghavChamadiya in #2667
  • feat(coverage): report branches on changed lines beside patch coverage, with partly taken lines and a branch gate by @RaghavChamadiya in #2664
  • feat(coverage): re-ingest after failing test runs, accept globs in coverage add, and show the trend in get_health by @RaghavChamadiya in #2658
  • fix(health): keep get_health's targeted analysis meta inside its session by @RaghavChamadiya in #2670
  • fix(dead-code): stop flagging internals used in their own file, files named by path, and receiver-registered functions by @swati510 in #2673
  • fix(ingestion): resolve Python imports by full dotted path, never by stem by @swati510 in #2674
  • feat(decisions): retire decisions whose commits were reverted by @swati510 in #2675
  • fix(graph): no file self-loops in the graph or in PageRank by @swati510 in #2677
  • fix(c4): keep a container's own components in L3 when the repo has a root container by @swati510 in #2678
  • fix(wiki): drop dead code from the module prompt, keep file vocabulary out of the page, honest footer and model stamp by @swati510 in #2681
  • feat(mcp): get_why serves rationale comments when no decision matches by @swati510 in #2692
  • fix(search): rank same-named symbols by one shared key by @swati510 in #2701
  • fix(generation): package roots are walls in the concept tree by @swati510 in #2705
  • fix(dead-code): cap unreachable files shaped like path-loaded entries by @swati510 in #2707
  • fix(answer): read "the evidence does not identify/show/specify" as a hedge by @swati510 in #2708
  • fix(core): test directories by whole words, filename rules on source only by @swati510 in #2676
  • fix(core): overload stubs are declarations, so lookups serve the implementation by @swati510 in #2696
  • fix(dead-code): count real lines instead of estimating them by @swati510 in #2682
  • test(generation): a template page names no model by @swati510 in #2711
  • fix(git): count non-merge commits everywhere and keep merges apart by @swati510 in #2683
  • feat(identity): merge author identities by union-find with guardrails by @swati510 in #2684
  • feat(git): commit history for non-code files, explicit rename detection, and one fix rule by @swati510 in #2690
  • fix(ingestion): keep hand-written files that mention codegen, and tracked files under ignored paths by @swati510 in #2689
  • fix(health): count a file's dependents from code edges, not co-change history by @swati510 in #2679
  • fix(parser): TypeScript methods keep their params, regex and ternary consts are symbols by @swati510 in #2680
  • fix(health): fewer false positives from untested hotspots, SDK execute calls and re-raising handlers by @swati510 in #2688
  • fix(graph): keep test-to-test edges out of PageRank and betweenness by @swati510 in #2695
  • fix(wiki): overview drops undefined capabilities; UI layer needs UI files by @swati510 in #2709
  • fix(core): resolve calls on a chained field receiver by @swati510 in #2703
  • fix(health): verify clone pairs on identifiers, not shape alone by @swati510 in #2693
  • fix(ingestion): workspace packages at any depth, checked against the declared members by @swati510 in #2685
  • feat(ingestion): rank manifest-declared entry points first by @swati510 in #2698
  • fix(search): validate question identifiers against the symbol table, and return no symbol for a name that doesn't exist by @swati510 in #2691
  • fix(stats): one language split and one module count on every surface by @swati510 in #2710
  • feat(decisions): read a decision whose files are all gone at HEAD as stale by @swati510 in #2694
  • fix(wiki): template pages only for real API contracts, never for tests by @swati510 in #2702
  • fix(c4): no test or example containers, code-only language, manifest names by @swati510 in #2697
  • fix(dead-code): exempt tool-loaded config, rc and startup-hook files by @swati510 in #2700
  • fix(graph): bind workspace exports that name absent build output to their source by @swati510 in #2706
  • fix(c4): system context shows runtime services, not the repo's own packages by @swati510 in #2699
  • feat(findings): add a finding-type registry that decides what surfaces show by @swati510 in #2687
  • feat(dead-code): a reachability-root flag separate from the entry-point flag by @swati510 in #2704
  • Fix #2222: [Bug] Telemetry flusher causes console window to flash on Windows during VS Code index updates by @pamod-madubashana in #2380
  • feat(generation): package pages and a computed Public API by @swati510 in #2712
  • feat(generation): code excerpts in module page prompts by @swati510 in #2713
  • test(dead-code): a whole unreachable file is review-only, so its lines are not deletable by @RaghavChamadiya in #2716
  • fix(pipeline): keep SQLAlchemy out of spawned parse workers by @RaghavChamadiya in #2715
  • fix(ingestion): resolve Python imports under the importer's own import root by @RaghavChamadiya in #2717
  • fix(search): index the file vocabulary for full-text search by @RaghavChamadiya in #2718
  • feat(impacted-tests): select the tests a change needs in CI, and run everything whenever that is not certain by @RaghavChamadiya in #2665
  • fix(git): idle refresh writes whole history rows and never inserts fragments by @RaghavChamadiya in #2719
  • fix(impacted-tests): build the root prose suffixes from the shared doc extensions by @RaghavChamadiya in #2722
  • release: v0.54.0: read facts from the repository, and coverage in CI by @RaghavChamadiya in #2720

New Contributors

Full Changelog: v0.53.0...v0.54.0