Repository navigation
v0.58.0
What's Changed
- docs: change evidence, components, policy and reports in the README and docs by @RaghavChamadiya in #3947
- feat(overview): fold Do next on request and keep critical for live secrets by @RaghavChamadiya in #3966
- docs(readme): match the CodeScene tile wording to the benchmark method by @RaghavChamadiya in #3969
- refactor(chat): build chart dataset rows from plain records by @RaghavChamadiya in #3951
- test(analysis): golden snapshots for scan_source, dead code, health and parser by @RaghavChamadiya in #3970
- test(pipeline): pin persistence step order, failure handling and decision chain by @RaghavChamadiya in #3971
- test(server): pin get_context, get_symbol, search and overview payloads by @RaghavChamadiya in #3972
- test(cli): pin serve, doctor and update behaviour by @RaghavChamadiya in #3974
- refactor(overview): build the overview summary from section functions by @RaghavChamadiya in #3979
- refactor(security): split security_scan into focused modules by @RaghavChamadiya in #3973
- fix(serve): reject web UI archive members that escape the cache directory by @RaghavChamadiya in #3975
- refactor(mcp): share the signature and stale-status helpers by @RaghavChamadiya in #3976
- refactor(persistence): split health crud into findings, metrics, snapshots and summary modules by @RaghavChamadiya in #3977
- refactor(core): one git runner for analysis, doc drift and edit capture by @RaghavChamadiya in #3980
- refactor(cli): split workspace_cmd into a package and its largest commands into steps by @RaghavChamadiya in #3981
- refactor(serve): split serve_cmd into a package and serve_command into steps by @RaghavChamadiya in #3982
- refactor(cli): split helpers into focused modules behind the helpers facade by @RaghavChamadiya in #3983
- fix(workspace): filtered diagnostics reason counts and list counts like status by @RaghavChamadiya in #3984
- refactor(doctor): split repo checks into check groups, repair and render by @RaghavChamadiya in #3985
- refactor(cli): one outcome recorder and snapshot refresh for init and update by @RaghavChamadiya in #3986
- refactor(core): one set of repo-relative path helpers by @RaghavChamadiya in #3987
- test(providers): point the provider-name allowlist at the moved helpers module by @RaghavChamadiya in #3998
- refactor(core): split pipeline persist into a package by writer area by @RaghavChamadiya in #3989
- refactor(context): resolve get_context targets through an ordered resolver list by @RaghavChamadiya in #3988
- refactor(context): build the get_context card from a table of sections by @RaghavChamadiya in #3997
- refactor(init): InitOptions and the front stages of init_command by @RaghavChamadiya in #4000
- refactor(core): extract persist_analysis decision steps into named helpers by @RaghavChamadiya in #3999
- refactor(ingestion): share traverse and parse stages between full and resume ingestion by @RaghavChamadiya in #4001
- refactor(workspace): split update_workspace into selection, per-repo update and phase stages by @RaghavChamadiya in #4002
- refactor(pipeline): split incremental.py into an incremental/ package by @RaghavChamadiya in #4004
- refactor(git-indexer): share one per-file worker pool between full and incremental indexing by @RaghavChamadiya in #4003
- refactor(pipeline): persist_incremental_index on an ordered step runner by @RaghavChamadiya in #4005
- fix(ingestion): follow a Kotlin typealias to the repo class it names by @ozenyunus35 in #3787
- fix(ingestion): read C# 14 extension block members as extension methods by @ozenyunus35 in #3920
- refactor(update): UpdateOptions and UpdateRun for run_update by @RaghavChamadiya in #4006
- refactor(init): ingest, generation, state and post-run stages of init_command by @RaghavChamadiya in #4007
- refactor(health): move the analyzer's test lookups into RepoTestIndex by @RaghavChamadiya in #4008
- refactor(answer): answer retrieval pipeline as a stage package; split _structured_search by @RaghavChamadiya in #4010
- refactor(update): preflight and change-detection stages out of run_update by @RaghavChamadiya in #4013
- fix(dead-code): honour Kotlin @Suppress("unused") and keep annotations the grammar splits off by @Sriram-PR in #3873
- refactor(symbol): get_symbol guards and read stages; split _cross_repo_block by @RaghavChamadiya in #4018
- refactor(health): move the post-walk performance passes into CrossFunctionPerfStage by @RaghavChamadiya in #4011
- refactor(health): move per-file evaluation out of HealthAnalyzer into FileEvaluator by @RaghavChamadiya in #4016
- refactor(ts-workspace): split ts_workspace into a package with a workspace probe class by @RaghavChamadiya in #4017
- refactor(update): run the docs-mode persist on the core step runner by @RaghavChamadiya in #4020
- refactor(update): lock, index and index-only stages out of run_update by @RaghavChamadiya in #4021
- refactor(update): docs, decision and generation stages out of run_update by @RaghavChamadiya in #4022
- feat(ingestion): type Dart for-in loop variables from the container they walk by @Aman-goel-04 in #3853
- test(cli): import scipy.sparse before the real-call guard so its CPU probe is not refused by @RaghavChamadiya in #4024
- refactor(health): split the Extract Method slicer and the Python perf dialect into focused modules by @RaghavChamadiya in #4025
- fix(update): write the repair marker after a docs-mode update by @RaghavChamadiya in #4026
- refactor(workspace): split workspace update into an update package by @RaghavChamadiya in #4038
- refactor(dead-code): move module-level rules out of the analyzer by @RaghavChamadiya in #4039
- refactor(cli): split risk_cmd into a package and stage the risk card renderer by @RaghavChamadiya in #4040
- refactor(risk): build the PR directive from stage functions by @RaghavChamadiya in #4041
- refactor(parser): split parser.py into a package; per-language import extractors on LanguageConfig by @RaghavChamadiya in #4042
- refactor(dead-code): move the unused-export pass into passes/unused_exports.py by @RaghavChamadiya in #4043
- refactor(mcp): split tool_search into a package of search stages by @RaghavChamadiya in #4044
- refactor(cli): move init's single-repo stages out of command.py by @RaghavChamadiya in #4045
- refactor(workspace): split the single-repo update into stages by @RaghavChamadiya in #4046
- refactor(risk): split the per-target risk card into stages by @RaghavChamadiya in #4047
- refactor(health): lift the perf pass closures into a per-file _PerfWalk class by @RaghavChamadiya in #4062
- refactor(context): build the get_context call graph from stage functions by @RaghavChamadiya in #4066
- refactor(pipeline): run state, setup and the index phase out of run_pipeline by @RaghavChamadiya in #4073
- refactor(cli): stage the workspace update and its docs pass by @RaghavChamadiya in #4063
- refactor(c4): split build_architecture_view into load, enrich and assemble stages by @RaghavChamadiya in #4068
- refactor(cli): stage the fast-to-full upgrade by @RaghavChamadiya in #4069
- refactor(cli): stage workspace init's per-repo index, generation and persistence by @RaghavChamadiya in #4048
- refactor(dead-code): move the unreachable-file and unused-internal passes into passes/ by @RaghavChamadiya in #4049
- refactor(git): move the incremental update's signal stages out of index_changed_files by @RaghavChamadiya in #4050
- refactor(call-resolver): move overload selection, barrel forwarding and inheritance into mixin modules by @RaghavChamadiya in #4051
- refactor(mcp): split tool_symbol into a package of read stages by @RaghavChamadiya in #4052
- refactor(answer): split the get_answer orchestrator into stages by @RaghavChamadiya in #4055
- refactor(health): dispatch the perf walk to per-node handlers by @RaghavChamadiya in #4067
- refactor(context): split get_context enrichment into call_graph, signals and skeleton modules by @RaghavChamadiya in #4072
- refactor(pipeline): analysis phase and KG skeleton out of run_pipeline by @RaghavChamadiya in #4078
- refactor(dead-code): move the zombie-package pass and split the guarded-render scan by @RaghavChamadiya in #4053
- refactor(receiver-typing): split call_receiver_typing into a package by language by @RaghavChamadiya in #4054
- refactor(cli): stage workspace init's selection, provider setup, config and hooks by @RaghavChamadiya in #4056
- refactor(git): stage index_repo and the co-change walk by @RaghavChamadiya in #4057
- refactor(mcp): split tool_change_risk into a package of review blocks by @RaghavChamadiya in #4058
- refactor(answer): grade answers through an ordered table of gates by @RaghavChamadiya in #4059
- refactor(health): split the Fix-first builder into unit modules by @RaghavChamadiya in #4071
- refactor(context): move the non-docs get_context card sections into sections.py by @RaghavChamadiya in #4075
- refactor(pipeline): generation phase and result assembly out of run_pipeline by @RaghavChamadiya in #4080
- refactor(workspace): stage contract extraction by @RaghavChamadiya in #4060
- refactor(answer): dedupe the answer projection one collection at a time by @RaghavChamadiya in #4064
- refactor(mcp): split reference_edit_set into graph, scan and reply stages by @RaghavChamadiya in #4065
- refactor(cli): stage health_command into view, scope and renderer functions by @RaghavChamadiya in #4074
- refactor(pipeline): stage decision extraction into session mining and source reporting by @RaghavChamadiya in #4081
- refactor(risk): stage the cross-repo enrichment of risk cards by @RaghavChamadiya in #4070
- refactor(ingestion): read docstrings through per-language tables by @RaghavChamadiya in #4076
- refactor(sessions): run the decision miner's event gates on a per-session state class by @RaghavChamadiya in #4082
- refactor(context): build get_context from stage functions by @RaghavChamadiya in #4077
- feat(mcp): get_health metric rows carry structure_deduction and history_deduction by @RaghavChamadiya in #4108
- feat(change-risk): map symbols a change moves across files by @RaghavChamadiya in #4109
- feat(health): skip coverage markers on re-export-only files by @RaghavChamadiya in #4110
- fix(cli): repowise health --format json keeps withheld finding types by @RaghavChamadiya in #4111
- feat(change-risk): pair findings across moved code and count improved findings by @RaghavChamadiya in #4112
- feat(health): primitive_obsession skips test material by @RaghavChamadiya in #4118
- feat(health): say when a file's history is too short to count beside its score by @RaghavChamadiya in #4117
- feat(change-risk): compare a split source on the base side so a pure split reads as moved by @RaghavChamadiya in #4125
- feat(health): brain_method becomes advisory by @RaghavChamadiya in #4115
- feat(health): rename the bumpy_road biomarker to repeated_nesting by @RaghavChamadiya in #4113
- feat(health): size markers read judged CCN and code lines by @RaghavChamadiya in #4116
- feat(change-risk): store improved/moved totals and moved_from in commit-health rows by @RaghavChamadiya in #4127
- feat(health): plain display labels for five health markers by @RaghavChamadiya in #4119
- feat(git): count prior defects by conventional commit type by @RaghavChamadiya in #4126
- feat(ui): show what a file's score lost to code shape, change history and test coverage by @RaghavChamadiya in #4124
- fix(ui): name the 1.0 floor in the Why this score arithmetic by @RaghavChamadiya in #4132
- feat(ui): say where a moved finding came from in the commit health table by @RaghavChamadiya in #4133
- feat(health): de-stack history findings before the history cap by @RaghavChamadiya in #4129
- feat(mcp): get_health include=["what_if"] names the points each fix recovers by @RaghavChamadiya in #4130
- feat(change-risk): health_delta reports each changed file's score before and after by @RaghavChamadiya in #4123
- feat(change-risk): change-risk health reads the index's dependents on both sides by @RaghavChamadiya in #4128
- feat(cli): repowise health --score scores files from disk, --against compares a revision by @RaghavChamadiya in #4139
- feat(owners): people-only ownership summary and knowledge matrix by @RaghavChamadiya in #4136
- fix(cli): load the live-score module only when health runs the analyzer by @RaghavChamadiya in #4155
- feat(areas): directory health rollups at any depth by @RaghavChamadiya in #4135
- feat(history): lead commits and changes with their health delta, add wins by @RaghavChamadiya in #4137
- feat(web): group the repo sidebar, give Tests and Security their own pages by @RaghavChamadiya in #4142
- fix(coverage): read the cached test-reach walk through the shared index-stamp cache by @RaghavChamadiya in #4158
- feat(changes): lead change records with what they did to code health by @RaghavChamadiya in #4141
- feat(coupling): open on area pairs and flag only coupling no import explains by @RaghavChamadiya in #4152
- feat(health): lead the Performance tab with the action, grouped by area by @RaghavChamadiya in #4138
- feat(ui): one shared FilePath that never cuts the filename by @RaghavChamadiya in #4161
- feat(health): zoomable folder map with lenses, held-out scope and a context rail by @RaghavChamadiya in #4157
- feat(health): saturating per-category curve with per-function grouping by @RaghavChamadiya in #4144
- feat(owners): Ownership page around knowledge coverage, risk and off-boarding by @RaghavChamadiya in #4153
- feat(health): hotspots counted, searched and paged over the whole set by @RaghavChamadiya in #4162
- feat(health): quiet hairline finding cards with the agent prompt as a ghost action by @RaghavChamadiya in #4164
- feat(commits): open the Commits page on what the work did to code health by @RaghavChamadiya in #4154
- feat(overview): a short Overview that opens on what to do by @RaghavChamadiya in #4163
- docs(ui): describe code health as technical debt by @RaghavChamadiya in #4180
- fix(tests): batch the IN lists of test-reachability edge reads by @Laex in #3933
- fix(graph): resolve React Native platform files to import edges by @Aman-goel-04 in #3711
- fix(kotlin): recover top-level declarations with two annotations (#3758) by @Aman-goel-04 in #3839
- fix(dataflow): build try regions and match error exits inside switch arms (#3494) by @rishu685 in #3694
- fix(coverage): recommend a per-test coverage command that exists by @ozenyunus35 in #3676
- fix(ingestion): type a Kotlin or Swift property initialised with a constructor by @ozenyunus35 in #3789
- fix(cli): don't count model_free pages as unwritten in generate's summary by @ozenyunus35 in #3776
- fix: flag public API in published C# projects by @Aman-goel-04 in #3579
- fix(csharp): bind locals created with object-initializer syntax by @ozenyunus35 in #3957
- fix(workspace): preserve repo aliases and propagate cancellation by @arnavsx3 in #4107
- fix(mcp): gate bare symbol names defined only in excluded files by @ozenyunus35 in #4084
- fix(pipeline): keep a failing on_error from failing a guarded step by @ozenyunus35 in #4079
- fix(cost): price Gemini 3 preview models at their own rates by @ozenyunus35 in #3967
- fix(health): treat cut-off signatures and stub bodies as declarations by @WynandVStaden in #3950
- fix(suspects): report when candidates reach the change index cap by @Yushu-Li in #3930
- fix(dead-code): root Spring servlet initializers as entry points by @ozenyunus35 in #3921
- fix(refactoring): preserve Java helper types and throws by @PragalvaXFREZ in #3882
- fix(dead-code): root C# cmdlets, source generators and benchmarks by @ozenyunus35 in #3926
- fix(events): ignore tied owners at the ownership margin by @kocaemre in #3870
- docs(health): point the complexity README at ast_utils.self_member_name by @wang2-lat in #4169
- fix(health): count active contributors by canonical identity by @JackGitLab in #4086
- fix(doc-drift): join_relative normalizes segments instead of stripping characters (#4014) by @Yi-111-a in #4023
- fix(dead-code): treat @GlideModule as a tooling-loaded root by @abdelhadi703 in #3886
- fix(risk): apply .repowise/health-rules.json when rescoring commits by @aazminu in #4179
- fix(health): canonicalize legacy biomarker ids in as_biomarker_result by @aazminu in #4177
- fix(health): filter score_breakdown to defect-dimension findings by @aazminu in #4178
- fix(#3825): avoid constant-output extract method helpers by @msranjana in #3938
- fix(ingestion): normalise CRLF in stored signatures and docstrings by @ddaihao2022 in #3929
- fix(health): normalize module dead-code penalty by symbol count by @Gabrieljr42 in #4083
- fix(attention): a hand-recorded proposed decision is not auto-proposed by @Yi-111-a in #4015
- feat(health): add PHP dataflow dialect and Extract Method support (#3434) by @rishu685 in #3466
- fix(cli): keep -x excludes when init customize asks for patterns by @ganeshmshetty in #4061
- fix(mcp): clarify five workspace error replies by @jungwonenjoyericl in #3943
- test: run pipeline tests on a tmp copy of sample_repo (#4091) by @dhvani7014 in #4099
- feat(web): keep the sidebar open on Docs by @RaghavChamadiya in #4186
- feat(cli): clearer labels in risk, dead-code, whats-new and the generation report by @RaghavChamadiya in #4197
- feat(actions): act now on a week's defect-class regressions, plan its code shape by @RaghavChamadiya in #4198
- feat(health): count a docs folder as docs only at the root or beside its site config by @RaghavChamadiya in #4200
- feat(security): read a truncated digest or a cache key's md5 as an id, not a weak hash by @RaghavChamadiya in #4201
- feat(answer): cite the files the answer names and hold high when it leaves the top hit by @RaghavChamadiya in #4202
- feat(mcp): a lean get_overview default with the tool surface, quarter and full scope on request by @RaghavChamadiya in #4207
- feat(health): name production code's score beside the all-files headline by @RaghavChamadiya in #4204
- feat(why): anchor a question on the indexed file it names by @RaghavChamadiya in #4203
- feat(suspects): rank path targets by what they name and take a typed symptom over MCP by @RaghavChamadiya in #4205
- perf(mcp): run test selection off the event loop and reuse it per change by @RaghavChamadiya in #4208
- feat(knowledge-graph): show the layer-naming prompt each layer's files by folder by @RaghavChamadiya in #4206
- feat(change-risk): trim a requested evidence checklist inside its rows by @RaghavChamadiya in #4210
- perf(change-risk): serve a repeated committed range from a per-process cache by @RaghavChamadiya in #4209
- fix(mcp): tier dead code after the cross-repo cut and keep partial evidence from reading clear by @RaghavChamadiya in #4196
- perf(git): open repositories through a Repo that closes without gc.collect by @RaghavChamadiya in #4212
- feat(health): rank a critical code-shape marker as high in Fix first by @RaghavChamadiya in #4199
- fix(update): retire template pages the selection no longer picks by @RaghavChamadiya in #4211
- perf(update): cap the per-update commit-health scan at 10 seconds by @RaghavChamadiya in #4213
- feat(mcp): get_overview lays out every package, its front doors, layer roots and commands by @RaghavChamadiya in #4214
- test(ui): query the refactoring list pager by text so the paging test stays under the timeout by @RaghavChamadiya in #4219
- fix(change-risk): lead the headline, reasons, actions and findings with the same finding by @RaghavChamadiya in #4215
- perf(update): skip clone detection and dead code when only prose changed by @RaghavChamadiya in #4217
- fix(mcp): one code-file count and real repo summaries in the workspace views by @RaghavChamadiya in #4216
- perf(why): look up a question's named files in one query by @RaghavChamadiya in #4218
- fix(update): recount the file-page scope on every update by @RaghavChamadiya in #4220
- feat(health): quiet hairline cards on the Performance tab from one shared card class by @RaghavChamadiya in #4165
- feat(change-risk): a leaner default that keeps every fact an agent acts on by @RaghavChamadiya in #4221
- perf(architecture): classify each path once when rolling edges up to boxes by @RaghavChamadiya in #4222
- perf(health): delete replaced health rows in one statement by @RaghavChamadiya in #4226
- perf(persistence): analyze the SQLite index at the end of every write by @RaghavChamadiya in #4229
- fix(health): name performance work in Fix first and Do next only when its cost is confirmed by @RaghavChamadiya in #4227
- feat(perf): judge a loop's size by the columns of the tables it reads by @RaghavChamadiya in #4236
- fix(health): one performance headline, led by the causes worth fixing now by @RaghavChamadiya in #4231
- fix(refactoring): the characterization step names the changed function and the tests that reach its file by @RaghavChamadiya in #4232
- fix(performance): number a served cause by its place in the ranked list by @RaghavChamadiya in #4233
- fix(performance): a cause a request, consumer or job role reaches is entry reachable by @RaghavChamadiya in #4234
- feat(editor-files): a lean CLAUDE.md and AGENTS.md block with sections you can add back by @RaghavChamadiya in #4235
- feat(website): old docs links land on the matching docs.repowise.dev page by @RaghavChamadiya in #4238
- fix(init): --no-prose makes no model calls, even with an API key set by @RaghavChamadiya in #4239
- fix(init): a re-run never indexes init's own files, and a fast re-init keeps the documentation by @RaghavChamadiya in #4245
- fix(status): status and state.json describe the index the last command left by @RaghavChamadiya in #4241
- feat(init): ask before pointing the global MCP entry at this repo by @RaghavChamadiya in #4246
- fix(init): exit 2 when a run finishes with gaps and 130 when interrupted by @RaghavChamadiya in #4242
- fix(reindex): reindex adds semantic search after a keyless init, and every run names its embedder by @RaghavChamadiya in #4240
- fix(init): workspace init keeps the repos you did not pick and skips git worktrees by @RaghavChamadiya in #4264
- feat(cli): one set of mode names across init, status and update by @RaghavChamadiya in #4249
- feat(generate): after a keyless init, generate also reads the decisions it skipped by @RaghavChamadiya in #4243
- feat(init): a logged-in Claude Code, Codex or OpenCode is offered with its quota and time, never spent unasked by @RaghavChamadiya in #4247
- feat(init): progress you can read, a checklist of every step with counts, time and what comes next by @RaghavChamadiya in #4251
- refactor(init): split the subscription auth and note checks into small helpers by @RaghavChamadiya in #4265
- feat(update): repowise update --full takes a fast index to full without a key, and every surface names it by @RaghavChamadiya in #4244
- feat(init): short lines when piped, and --progress json for agents by @RaghavChamadiya in #4254
- fix(ci): unbreak main, stop spelling 'ollama' in upgrade_flow (#4244) by @Aman-goel-04 in #4268
- fix(ci): unbreak main's Integration tests, the init run with a warning exits 2 (#4242) by @Aman-goel-04 in #4269
- feat(init): pick a workspace's repos with --repos, and workspace add builds documentation from code by default by @RaghavChamadiya in #4260
- feat(init): one finish panel that leads with repowise serve by @RaghavChamadiya in #4248
- feat(init): one plan screen replaces the run of start questions by @RaghavChamadiya in #4253
- feat(init): the plan screen offers to keep machine-specific files out of git by @RaghavChamadiya in #4256
- feat(init): a folder of repos gets the same plan screen, with the repo list and r to choose by @RaghavChamadiya in #4262
- fix(init): read embedder and local provider names from the registry in the finish panel and plan screen by @RaghavChamadiya in #4270
- fix(selection): run only the tests that read a changed fixture file by @Aman-goel-04 in #4267
- feat(init): the workspace finish panel matches the single-repo one by @RaghavChamadiya in #4263
- feat(init): a brand theme, ASCII glyphs on non-UTF-8 terminals, and an owl that shows how the run ended by @RaghavChamadiya in #4257
- docs(quickstart): a human path and an agent path, serve first, and every mode with its upgrade command by @RaghavChamadiya in #4250
- docs(init): every surface that teaches init says what the CLI does by @RaghavChamadiya in #4255
- fix(security): honour allow markers in prose without a comment opener by @Aman-goel-04 in #4143
- fix(health): walk C++ condition declaration values for reads and exclude bare receiver fields from params (#3824) by @rishu685 in #4122
- fix(dead-code): root C# classes with custom MEF export attributes (#3854) by @rishu685 in #4009
- fix(dead-code): rescue C/C++ files listed in CMake, .vcxproj or .rc (#3820) by @rishu685 in #4121
- fix(vscode): relocate doc drift diagnostics on live document edits (#2668) by @rishu685 in #2782
- fix(ingestion): give Rust cfg build variants their own ids by @Aman-goel-04 in #3020
- fix(graph): type a Kotlin call chained on another call (#3756) by @Aman-goel-04 in #3845
- fix(ingestion): redirect a Python name alias onto its real definition by @Aman-goel-04 in #2799
- fix(go): bind calls through interface-typed variables to interface method specs by @Aman-goel-04 in #3850
- feat(core): demote PHP production classes named Test.php outside testsuites (#3234) by @rishu685 in #3399
- fix(cli): use init's mode names and no em dashes after init by @kayaal34 in #4284
- fix(docs): clear stale doc-drift baseline by @ZhangDT-sky in #4288
- fix: doctor table mode exits 1 when checks fail by @swastiktawate in #4289
- docs: correct untested hotspot detection conditions by @Maedza in #3449
- fix(editor-files): skip structure-only preamble in key modules and architecture by @c0mrade8 in #3261
- fix(workspace): a state.json that is not an object no longer blocks the workspace update by @Venius24 in #4036
- fix(workspace): log swallowed errors when reading saved exclude patterns by @ian0318git in #3054
- fix(doctor): fallback to environment-honouring Repo constructor for linked worktrees (#1931) by @teddiesloco in #1952
- fix(dead-code): rescue a Swift extension whose member name is declared elsewhere by @ynaamane in #3876
- test(doctor): integration tests expect exit 1 when a check fails by @RaghavChamadiya in #4291
- fix(tests): spell the backslash in the windows changed path literally by @ump45nose in #3402
- feat(llm): add GitHub Copilot CLI provider by @Marko0519 in #3710
- fix(core): classify test-helpers and test-utils directories as test support by @TheNetherWatcher in #3257
- Advertise MCP tool annotations built from tool safety by @wanjinhao1 in #2762
- feat(ci): fail security and doc-drift gates when the committed baseline grows by @RaghavChamadiya in #4299
- perf(health): faster change health comparison with package roots from changed paths and a content cache by @RaghavChamadiya in #4311
- test(mcp): give the shared-selection timeout test a budget above the clock resolution by @RaghavChamadiya in #4296
- feat(cli): status says when the next update re-scores health or rescans security by @RaghavChamadiya in #4301
- fix(cli): reject init --repos with no repo names by @RaghavChamadiya in #4300
- fix(owners): render owner rows and profiles from the previous release's payloads by @RaghavChamadiya in #4303
- fix(health): show the open performance count from older health summaries by @RaghavChamadiya in #4304
- fix(health): give findings stored under a renamed marker id their advice by @RaghavChamadiya in #4305
- fix(commits): show the agent trend when a server omits the enabled flag by @RaghavChamadiya in #4306
- feat(overview): let a host set or drop the Tests card's route and command by @RaghavChamadiya in #4307
- fix(init): a workspace init stamps each repo so the first update has nothing to redo by @RaghavChamadiya in #4293
- fix(editor-files): the CLAUDE.md scope line uses the CLI's mode names by @RaghavChamadiya in #4294
- fix(health): leave the hotspot figure out of the headline when there is none by @RaghavChamadiya in #4295
- fix(cli): let update --full reuse an index copied to a new path by @RaghavChamadiya in #4308
- fix(cli): name the same model step for the same index mode everywhere by @RaghavChamadiya in #4309
- fix(workspace): an added repo gets the state init writes, so the first update has nothing to redo by @RaghavChamadiya in #4310
- fix(deps): patch aiohttp and mcp security alerts by @RaghavChamadiya in #4292
- feat(health): add repowise health check, a CI gate on findings a change introduces by @RaghavChamadiya in #4302
- feat(release): attach a labelled openapi.json to every GitHub release by @RaghavChamadiya in #3948
- feat(health): flag added suppressions, weakened tests and test-only branches in health check by @RaghavChamadiya in #4312
- release: v0.58.0 · a guided init, a redesigned web UI, and a health check CI gate by @RaghavChamadiya in #4316
New Contributors
- @WynandVStaden made their first contribution in #3950
- @wang2-lat made their first contribution in #4169
- @JackGitLab made their first contribution in #4086
- @Yi-111-a made their first contribution in #4023
- @abdelhadi703 made their first contribution in #3886
- @ddaihao2022 made their first contribution in #3929
- @Gabrieljr42 made their first contribution in #4083
- @ganeshmshetty made their first contribution in #4061
- @jungwonenjoyericl made their first contribution in #3943
- @dhvani7014 made their first contribution in #4099
- @kayaal34 made their first contribution in #4284
- @ZhangDT-sky made their first contribution in #4288
- @swastiktawate made their first contribution in #4289
- @Maedza made their first contribution in #3449
- @c0mrade8 made their first contribution in #3261
- @Venius24 made their first contribution in #4036
- @ian0318git made their first contribution in #3054
- @teddiesloco made their first contribution in #1952
- @Marko0519 made their first contribution in #3710
Full Changelog: v0.57.0...v0.58.0