Releases: repowise-dev/repowise
Releases · repowise-dev/repowise
Release list
v0.44.0
What's Changed
- release(vscode): 0.8.0 release notes and a server floor for the risk panel by @RaghavChamadiya in #1613
- fix(decisions): stop ADR discovery mining paths git cannot see by @RaghavChamadiya in #1614
- perf(workspace): walk each repo once when scanning .csproj manifests by @RaghavChamadiya in #1615
- feat(workspace): move the System Map's chrome off the canvas, and fix repo view by @RaghavChamadiya in #1616
- fix(ingestion): record this.method() self-dispatch calls in 6 languages by @RaghavChamadiya in #1617
- perf(files): stop the file page reading the whole repo to render one file by @RaghavChamadiya in #1618
- fix(persist): let a parser change reach edges on unchanged files by @RaghavChamadiya in #1619
- fix(update): reuse persisted function-mod p80 in incremental hotspot gate by @Ayush7614 in #1532
- fix: update --full runs under the single-flight lock by @Ayush7614 in #1529
- feat(files): port the file detail page onto the design language by @RaghavChamadiya in #1621
- feat(files): give the file page doors in and out by @RaghavChamadiya in #1622
- fix(cpp): recognise .inl / .ipp / .tpp as C++ source by @RaghavChamadiya in #1625
- fix(cpp): attach a call edge to the definition, not the header declaration by @RaghavChamadiya in #1626
- fix(cpp): count a function named but never called as a use by @RaghavChamadiya in #1627
- feat(graph): record which strategy resolved each call edge by @RaghavChamadiya in #1628
- feat(graph): bind a bare call to the caller's own class, capture PHP/Luau receivers by @RaghavChamadiya in #1630
- perf(graph): give each language a call-strategy seam and reject unresolvable names first by @RaghavChamadiya in #1632
- fix(mcp): stop shipping raw doubles and two scales under one key by @RaghavChamadiya in #1631
- fix(graph): give every language one answer for a type's bare name by @RaghavChamadiya in #1634
- test(graph): fail when a second answer to a type's bare name appears by @RaghavChamadiya in #1635
- fix(graph): emit inheritance for JavaScript classes by @RaghavChamadiya in #1636
- fix(graph): capture C# generic method calls by @RaghavChamadiya in #1637
- refactor(graph): one implicit-scope scan and one heritage walk by @RaghavChamadiya in #1638
- feat(graph): resolve a call on a local by typing it from its declaration by @RaghavChamadiya in #1639
- test(graph): exempt two qualifier splits the guard does not govern by @RaghavChamadiya in #1640
- fix(graph): record Go interface embedding as inheritance by @RaghavChamadiya in #1641
- feat(graph): resolve a call on a field by typing it from its class by @RaghavChamadiya in #1642
- feat(graph): resolve a python call by typing its receiver from the body by @RaghavChamadiya in #1643
- test(graph): exempt the fourth qualifier split the guard does not govern by @RaghavChamadiya in #1647
- fix(graph): record the visibility a C# declaration actually has by @RaghavChamadiya in #1644
- fix(pipeline): report a failed framework pass instead of swallowing it by @RaghavChamadiya in #1645
- fix(dead-code): keep only genuinely narrow scopes in the uncalled-symbol pool by @RaghavChamadiya in #1646
- perf(graph): stop re-reading the repo during graph build by @RaghavChamadiya in #1648
- feat(graph): link a base method to the implementations that answer for it by @RaghavChamadiya in #1649
- feat(graph): say why an execution flow stops instead of just stopping by @RaghavChamadiya in #1650
- feat(graph): resolve inherited calls in C# again by @RaghavChamadiya in #1651
- feat(web): say how a call edge got into the graph by @RaghavChamadiya in #1652
- fix(ci): restore the two guards that went red on main by @RaghavChamadiya in #1653
- feat(graph): link a framework-wired symbol to the symbol it is wired to by @RaghavChamadiya in #1654
- test(ci): exempt pytest's own collection rule from the test-path guard by @RaghavChamadiya in #1657
- fix(graph): give a Java call on its own field a receiver by @RaghavChamadiya in #1658
- fix(graph): stop a third-party JVM import taking a same-named repo class by @RaghavChamadiya in #1659
- fix(symbols): stop the symbol page calling a subclass a caller by @RaghavChamadiya in #1660
- feat(graph): separate a method passed as a value from a method called by @RaghavChamadiya in #1661
- fix(dead-code): count every use of a private symbol, not only a call by @RaghavChamadiya in #1662
- fix(mcp): stop get_context calling a subclass and a fixture a caller by @RaghavChamadiya in #1663
- feat(graph): resolve a method on a type imported through a re-export by @RaghavChamadiya in #1664
- fix(dead-code): make a top-tier confidence mean we actually looked by @RaghavChamadiya in #1666
- fix(security): make the history scanner actually scan by @RaghavChamadiya in #1667
- feat(security): give a security finding a verified line and a commit date by @RaghavChamadiya in #1668
- feat(dead-code): surface staleness on the web, drop the package column by @RaghavChamadiya in #1669
- fix(graph): bind a workspace package that publishes only from a build directory by @RaghavChamadiya in #1670
- fix(mcp): stop four tools answering a bad argument with a reassuring negative by @RaghavChamadiya in #1671
- feat(graph): resolve a namespace member through the re-export chain by @RaghavChamadiya in #1672
- fix(dead-code): stop reporting symbols a framework or a container reaches by @RaghavChamadiya in #1673
- feat(graph): type a Go receiver from its declaration by @RaghavChamadiya in #1674
- fix(graph): type a Go method whose receiver is unexported by @RaghavChamadiya in #1676
- fix(dead-code): stop reporting symbols a docs build or an API dump names by @RaghavChamadiya in #1677
- feat(graph): type a C# call on a freshly constructed receiver by @RaghavChamadiya in #1680
- fix(dead-code): stop reporting symbols a registration decorator wires in by @RaghavChamadiya in #1681
- feat(graph): resolve a call through the name a module publishes by @RaghavChamadiya in #1682
- refactor(dead-code): read export aliases from the parser, not a second scan by @RaghavChamadiya in #1683
- feat(graph): type a call receiver a framework decorator retyped by @RaghavChamadiya in #1684
- fix(risk): ignore shallow boundary in fix history by @Roovelrz in #1633
- feat(health): register Pascal in complexity, duplication, and dataflow dialects by @Laex in #1629
- feat(graph): capture three call receivers a bare-name match was guessing by @RaghavChamadiya in #1686
- feat(graph): type a Kotlin call receiver from its declaration by @RaghavChamadiya in #1687
- feat(graph): type a Swift call receiver from its declaration by @RaghavChamadiya in #1688
- docs: rewrite the language-support pages, add a graph layer page, and correct the claims that pointed at them by @RaghavChamadiya in #1689
- fix(graph): file Rust type positions as type_use, not calls by @RaghavChamadiya in #1690...
v0.43.0
What's Changed
- fix(answer): serve evidence and rate retrieval when no LLM provider is configured by @RaghavChamadiya in #1508
- fix(persistence): let a failed reconcile statement stop being permanent by @RaghavChamadiya in #1509
- refactor(answer): split get_answer into named stages by @swati510 in #1510
- refactor(ingestion): make the edge-type vocabulary true and enforced by @swati510 in #1516
- feat(languages): add Object Pascal / Delphi support (Good tier, draft) by @Laex in #1353
- fix(cache): HMAC-seal on-disk pickle caches before unpickling by @Ayush7614 in #1439
- fix(embedding): honour REPOWISE_EMBEDDING_TIMEOUT in every embedder by @serjflint in #1475
- refactor(edges): retire the last three private edge-type sets by @swati510 in #1518
- fix(chat): align get_context include schema with MCP/CLI by @Ayush7614 in #1477
- fix(providers): title OpenCode sessions from Repowise by @Mushst in #1517
- fix(providers): send temperature=1 for kimi-for-coding models by @uncleaar in #1323
- fix: suppress banner in dead-code --format json output by @mercael91 in #1441
- fix(cli): preserve sync baseline when HEAD is unavailable by @Sanjays2402 in #1521
- fix(graph): read dependency edges, not every edge row, on the graph surfaces by @swati510 in #1531
- refactor(entry-points): give the execution-start candidacy rule one owner by @swati510 in #1533
- feat(dead-code): detect @deprecated/Obsolete annotations by @akshatmalik-bruh in #1472
- refactor(entry-points): decide entry-point candidacy once, at ingestion by @swati510 in #1547
- fix(ingestion): track literal dynamic import namespace use by @RaghavChamadiya in #1548
- perf(codex): stop waking a hook on every prompt, and migrate installs that do by @RaghavChamadiya in #1549
- fix(ingestion): resolve C# generic type arguments by @RaghavChamadiya in #1550
- refactor(health): give hotspot health one owner, computed live by @swati510 in #1552
- perf(mcp): halve get_why search payloads and stop embedding the query twice by @RaghavChamadiya in #1555
- refactor(entry-points): rank the last entry-point lists the shared way by @swati510 in #1556
- fix(mcp): rank get_why by question vocabulary, and redirect when nothing matches by @RaghavChamadiya in #1558
- refactor(dead-code): one predicate answers "can anything reach this file" by @swati510 in #1559
- feat(cli): make
decision addusable without a terminal, and answerget_why--target by @RaghavChamadiya in #1566 - fix(ui): make Dismiss dismiss, and let the decisions page record one by @RaghavChamadiya in #1567
- refactor(cli): make the init screens one system, and delete the paint that meant nothing by @swati510 in #1571
- fix(cli): make --no-editor-setup mean no editor setup, and name the files init wrote by @swati510 in #1572
- Use shared dead-code confidence thresholds by @adenstamm in #1561
- refactor(dead-code): one owner for the confidence tier boundaries by @swati510 in #1574
- Fix/docker standalone output path by @akshatmalik-bruh in #1562
- feat(vscode): bring the extension onto the current design language by @RaghavChamadiya in #1575
- fix(answer): give a keyless reply the evidence for choosing between files by @RaghavChamadiya in #1576
- feat(server): one-call /api/repos/summary, and make file_count count files by @RaghavChamadiya in #1577
- feat(web): put the repositories back at the centre of the dashboard by @RaghavChamadiya in #1578
- fix(tests): record the two /repos/summary surfaces as hotspot_health plumbing by @RaghavChamadiya in #1579
- fix(answer): stop a stray delimiter hiding the rest of a file by @RaghavChamadiya in #1580
- feat(workspace): Read workspace contracts from the parsed index, and walk each repo once by @RaghavChamadiya in #1581
- fix(update-lock): never report 'acquired' with no lock file on disk by @Ayush7614 in #1524
- feat(web): put the workspace pages on the design language by @RaghavChamadiya in #1582
- fix: up-to-date self-heal writes under the single-flight lock by @Ayush7614 in #1528
- fix(risk): make every number change risk reports mean what it says by @RaghavChamadiya in #1583
- fix(ui): render get_why MCP wire format in chat artifacts by @Ayush7614 in #1478
- refactor(answer): give get_answer's helpers their own modules by @swati510 in #1584
- feat(workspace): confirm HTTP client wrappers from the parsed symbol table by @RaghavChamadiya in #1585
- fix(chat): never leave the chat window streaming with nothing to show by @RaghavChamadiya in #1586
- perf(risk): reuse one baseline walk across the changes scored against it by @RaghavChamadiya in #1589
- refactor: rank the displayed lists before cutting them by @swati510 in #1590
- feat(workspace): stamp, count and bound what the analysis actually did by @RaghavChamadiya in #1591
- fix(kg): rebuild the knowledge graph when the builder changes, not just the graph by @swati510 in #1592
- feat(risk): lead change risk with the bug-fix history of the files it touches by @RaghavChamadiya in #1593
- feat(providers): move the default OpenAI model to gpt-5.6-luna by @RaghavChamadiya in #1594
- fix(init): persist an API key supplied through the environment by @RaghavChamadiya in #1595
- perf(workspace): extract only the repos that changed, and time every cross-repo phase by @RaghavChamadiya in #1596
- fix(answer): spend the per-file symbol budget on the question, not the top of the file by @RaghavChamadiya in #1597
- fix: rank the decision lists that agent-facing surfaces truncate by @RaghavChamadiya in #1598
- fix(cli): resolve the persisted embedder key, and make degraded runs visible by @RaghavChamadiya in #1599
- fix(answer): write the confidence note from the reason the grade was reached by @RaghavChamadiya in #1605
- fix(generation): stop the module_page prompt tripping its own validator, and bound the spotlight importer list by @RaghavChamadiya in #1606
- feat(generation): give each cost tier its own progress total by @RaghavChamadiya in #1607
- fix(decisions): stop inline markers matching prose, and tell a failed source from an empty one by @RaghavChamadiya in #1610
- release: v0.43.0 - change risk leads with fix history, and a keyless install gets real evidence by @RaghavChamadiya in #1612
New Contributors
- @Laex made their first contribution in #1353
- @Mushst made their first contribution in #1517
- @uncleaar made their first contribution in #1323
- @mercael91 made their first contribution in #1441
- @adenstamm made their first contribution in #1561
Full Changelog: v0.42.0...v0.43.0
v0.42.0
What's Changed
- fix(ingestion): stop dropping large source files, and say so when we do by @RaghavChamadiya in #1443
- fix(generation): keep concept pages local, never merge unrelated top-level dirs by @serjflint in #1280
- refactor(cli): put the three agent integrations behind one target seam by @RaghavChamadiya in #1446
- feat(cli): add a repowise agents command group by @RaghavChamadiya in #1448
- fix(cli): name the real error when a command fails, and flag pytest runs by @RaghavChamadiya in #1447
- fix(get_answer): completeness scope gate for truncated symbol bodies by @akshatmalik-bruh in #1445
- fix(mcp): emit index_behind and embedder_degraded when false, not only when true by @RaghavChamadiya in #1449
- feat: one shared source for both plugin hosts, Codex slash commands, and drift reporting by @RaghavChamadiya in #1450
- fix(get_answer): cap confidence when a cited body was truncated by @RaghavChamadiya in #1451
- docs: generate the agent support matrix, and stop publishing a wrong tool count by @RaghavChamadiya in #1455
- feat(agents): wire Cursor as a fourth agent target by @RaghavChamadiya in #1457
- fix(cli): keep an older index readable, and cap confidence on a truncated symbol lookup by @RaghavChamadiya in #1458
- feat(agents): wire OpenCode as a fifth agent target by @RaghavChamadiya in #1459
- fix(answer): stop reading backtick strings as code, and validate the withheld symbol_id by @RaghavChamadiya in #1461
- feat(agents): wire Hermes as a sixth agent target by @RaghavChamadiya in #1460
- fix(dead-code): stop calling runtime-loaded web assets safe to delete by @RaghavChamadiya in #1463
- fix(overview): stop contradicting the dead-code pass, and rank barrels down by @RaghavChamadiya in #1464
- fix(core): decode as utf-8 instead of the platform locale by @RaghavChamadiya in #1466
- fix(generation): name the directory a concept group is actually under by @RaghavChamadiya in #1465
- fix(risk): read dependency edges only, so a co-change partner is not an import by @RaghavChamadiya in #1462
- fix(ingestion): resolve TS workspace members from pnpm-workspace.yaml by @alexander-mitelman in #1454
- feat(cli): add repowise uninstall, and make every removal path honest by @RaghavChamadiya in #1467
- fix(cli): stop uninstall reporting a half-refused removal as clean by @RaghavChamadiya in #1473
- fix(ingestion): index const bindings whose value is a call in TS/JS by @RaghavChamadiya in #1468
- fix(mcp): stop treating co-change edges as dependencies by @RaghavChamadiya in #1470
- fix(ingestion): classify a TS/JS binding by its value, not only its name by @RaghavChamadiya in #1469
- fix(dead-code): indicate hidden low-confidence findings in CLI output by @akshatmalik-bruh in #1434
- fix(webhooks): match repos by normalized URL, not contains prefix by @Ayush7614 in #1440
- docs(examples): add dead-code CLI walkthrough by @Ayush7614 in #1384
- docs: correct claims that contradict the code, and make the long references navigable by @RaghavChamadiya in #1479
- fix(tests): stop the suite repointing the developer's global editor config by @RaghavChamadiya in #1481
- fix(analysis): answer "is this file reachable" in one place, for both callers by @RaghavChamadiya in #1487
- fix(generation): rank orientation entry points the same way on every surface by @RaghavChamadiya in #1488
- fix(generation): localize structural wiki pages by @lntutor in #1102
- docs: give the documentation layer its own reference and fold wiki styles into it by @RaghavChamadiya in #1493
- ci: make the internal prerelease publish idempotent by @RaghavChamadiya in #1494
- release: v0.42.0 — one seam for every agent, and three new ones by @RaghavChamadiya in #1500
New Contributors
- @alexander-mitelman made their first contribution in #1454
Full Changelog: v0.41.0...v0.42.0
v0.41.0
What's Changed
- fix(cli): stop non-TTY output truncating result paths, and add search --format json by @RaghavChamadiya in #1402
- fix(generation): stop holding a second copy of the repo's source through the whole run by @RaghavChamadiya in #1403
- feat(cli): roll --format json across the agent-facing commands by @RaghavChamadiya in #1407
- perf(mcp): import tool modules lazily so one tool does not cost seventeen by @RaghavChamadiya in #1409
- fix(ingestion): bound the parse pool instead of sizing it from the host's cores by @RaghavChamadiya in #1410
- feat(cli): add ask, context, symbol and why as adapters over the MCP tools by @RaghavChamadiya in #1411
- feat(cli): collapse search onto search_codebase, and serve get_risk from risk by @RaghavChamadiya in #1412
- fix(health): unblock the refactoring surface, spread plan ranking, drop unextractable clone plans by @RaghavChamadiya in #1413
- fix(health): nine get_health defects — silent projection, unbounded response, undifferentiating headline by @RaghavChamadiya in #1414
- fix(health): the last five dogfooding items — perf ranking key, fixed-cost profile, map payload, card paging, walk symlink shadowing by @RaghavChamadiya in #1415
- perf(mcp): stop returning payload the caller already has by @RaghavChamadiya in #1426
- feat(mcp): present get_symbol as a follow-up rather than a place to start by @RaghavChamadiya in #1427
- fix(cli): use DeadCodeFinding.kind in export --full JSON by @Ayush7614 in #1416
- docs(architecture): align chat tool registry with the live 7-tool set by @Ayush7614 in #1173
- docs(architecture): sync MCP inventory with the 11-tool default surface by @Ayush7614 in #1174
- fix(ui): align chat tool labels with the live 7-tool registry by @Ayush7614 in #1417
- fix(ui): replace dead architecture-diagram chat suggestion by @Ayush7614 in #1418
- docs(examples): add search CLI walkthrough by @Ayush7614 in #1387
- docs(examples): add wiki-export walkthrough by @Ayush7614 in #1388
- docs(examples): add hooks-sync walkthrough by @Ayush7614 in #1386
- docs(examples): add decisions CLI walkthrough by @Ayush7614 in #1385
- fix(server): drop unused get_dependency_path chat summary by @Ayush7614 in #1425
- fix(server): drop dead get_architecture_diagram chat summary by @Ayush7614 in #1419
- fix(server): align chat system prompt with the 7-tool registry by @Ayush7614 in #1421
- fix(server): summarize get_change_risk in chat tool results by @Ayush7614 in #1420
- fix(mcp): align FastMCP instructions with the live tool surface by @Ayush7614 in #1422
- fix(types): document live vs legacy chat artifact tool bindings by @Ayush7614 in #1423
- fix(types): update ChatArtifact contract comments for live tools by @Ayush7614 in #1424
- fix(mcp): add explicit --host control and security warning for network transports by @akshatmalik-bruh in #1406
- fix(webhooks): fail-closed auth and per-request secret reading by @akshatmalik-bruh in #1408
- fix(deps): close three npm advisories and refresh stale lock entries by @RaghavChamadiya in #1433
- fix(server): require API key for repo health coordinator route by @akshatmalik-bruh in #1405
- feat(claude-plugin): add remaining CLI adapters as slash commands by @Ayush7614 in #1428
- fix(mcp): make get_context resolve the symbol ids get_symbol hands out by @RaghavChamadiya in #1435
- release: v0.41.0 (CLI parity with the MCP tool surface, get_health defect sweep) by @RaghavChamadiya in #1438
Full Changelog: v0.40.0...v0.41.0
v0.40.0
What's Changed
- docs(vscode): release notes for the 0.7.0 extension release by @RaghavChamadiya in #1304
- fix(decisions): ground each marker decision in its own span, and stop scoring untouched files as stale by @RaghavChamadiya in #1315
- refactor(sessions): make the transcript layer harness-agnostic by @RaghavChamadiya in #1316
- feat(precedent): record structural facts about a checkout at index time by @RaghavChamadiya in #1317
- feat(answer): surface a recorded fact that disagrees with an answer by @RaghavChamadiya in #1318
- docs(benchmarks): rerun section 2 on a second agent harness, and correct the adoption claim by @RaghavChamadiya in #1319
- docs(benchmarks): lead with the 48-question Codex run, and describe the retrieval fix as a fix by @RaghavChamadiya in #1321
- feat(decisions): bind a record to the directories it governs, and measure staleness by @RaghavChamadiya in #1322
- feat(episodes): Record each code fix as a dated change bound to the files it touched by @RaghavChamadiya in #1324
- feat(episodes): record each agent session as a local, dated episode bound to the files it touched by @RaghavChamadiya in #1325
- feat(episodes): keep a session after its transcript is pruned, and search episode bodies by @RaghavChamadiya in #1331
- feat(episodes): answer "what happened here" from get_why, and count it on the risk and context cards by @RaghavChamadiya in #1333
- fix(mcp): bring the get_risk docstring back under the schema budget by @RaghavChamadiya in #1334
- fix(hooks): stop counting an injection nothing could disagree with as followed by @RaghavChamadiya in #1335
- feat(hooks): answer a failed path with the file the index says you meant by @RaghavChamadiya in #1336
- fix(health): stop get_health returning 4.7MB, and index the table it reads by @RaghavChamadiya in #1337
- docs: correct code-health marker taxonomy and stale benchmark claims by @RaghavChamadiya in #1338
- Retire the skeleton-nudge Read hook by @RaghavChamadiya in #1339
- docs(benchmarks): discharge the Opus promise, name RTK, state the code-only scope by @RaghavChamadiya in #1340
- fix(codex): Match the Codex shell tool by the names Codex actually sends by @RaghavChamadiya in #1341
- fix(health): rank the worst-files lists by deduction, not by a score that clamps at 1.0 by @RaghavChamadiya in #1342
- fix(cli): report what a surface is actually doing, not what it once did by @RaghavChamadiya in #1343
- fix(health): show the line on file-level findings, and stop one biomarker flooding the drawer by @RaghavChamadiya in #1344
- perf(health): stop shipping every file's findings in the refactoring-targets list by @RaghavChamadiya in #1345
- feat(episodes): serve recorded episodes over HTTP by @RaghavChamadiya in #1346
- perf(health): stop the overview route reading both health tables twice by @RaghavChamadiya in #1350
- perf(health): stop the badge reading the whole dataset, and index symbols by file by @RaghavChamadiya in #1351
- feat(decisions): say what the page actually knows by @RaghavChamadiya in #1352
- fix(graph): stop reporting a Go package as a circular dependency by @RaghavChamadiya in #1354
- fix(core/cli): do not cache failed update-check results by @Ayush7614 in #1330
- fix(tests): give the SCC test double the state the mixin reads by @RaghavChamadiya in #1355
- feat(sessions): add Codex session transcript adapter support by @rehan6025 in #1277
- perf(health): stop two dashboard routes reading tables they barely use by @RaghavChamadiya in #1356
- fix(health): stop the directive promising a fix it does not have by @RaghavChamadiya in #1358
- fix(health): make module the package boundary, not a graph community label by @RaghavChamadiya in #1359
- fix(update): stop a config change advancing the sync pointer past commits it never indexed by @RaghavChamadiya in #1360
- fix(health): stop
onlydropping the totals, and bucket test files out of the headline findings by @RaghavChamadiya in #1361 - feat(hooks): collapse unchanged re-reads, and report what the hooks cost by @RaghavChamadiya in #1362
- fix(watch): index the working tree, so
epowise watch actually updates by @RaghavChamadiya in #1363 - fix(health): let a file at the score floor show movement, and stop the trend hiding improvements by @RaghavChamadiya in #1364
- docs: put the numbers where people actually look by @RaghavChamadiya in #1365
- fix(health): give Go, Maven and Ruby monorepos real module attribution, without a re-index by @RaghavChamadiya in #1366
- feat: verify returned vector width across all embedding providers by @akshatmalik-bruh in #1305
- fix(cli): correct _read_output_line_count for trailing newlines by @Ayush7614 in #1328
- fix(core): pass unbounded limit to list_jobs from resume readers by @Ayush7614 in #1329
- fix(status/doctor): query configured DB when no local wiki.db exists by @Ameysr in #1320
- feat(claude-plugin): add /repowise:security slash command by @Ayush7614 in #1107
- docs(website): sync CLI and Claude plugin pages with shipped surface by @Ayush7614 in #1106
- docs(examples): add change-risk CLI walkthrough by @Ayush7614 in #1177
- fix(refactoring): stop three plan fields from reporting constants as measurements by @RaghavChamadiya in #1374
- fix(tests): make the integration JobStore double honour its filters by @RaghavChamadiya in #1375
- perf(update): stop four repeated costs in the update prologue by @RaghavChamadiya in #1376
- fix(update): prune deleted files, and stop a degraded run stranding its range by @RaghavChamadiya in #1377
- fix(search): stop ranking on a keyless index's own vectors by @RaghavChamadiya in #1378
- perf(update): fold lifetime churn onto an anchor instead of re-walking history by @RaghavChamadiya in #1379
- fix(keyless): close two unguarded vector reads and the confidence hole by @RaghavChamadiya in #1380
- perf(update): stop rewriting the graph rows an update did not change by @RaghavChamadiya in #1381
- perf(agent): slim the resident CLAUDE.md block and stop waking hooks on shell commands by @RaghavChamadiya in #1382
- fix(generation): stop a keyless wiki warning about every page it has by @RaghavChamadiya in #1383
- fix(dead-code): persist the repo-wide verdict an update already computed by @RaghavChamadiya in #1389
- fix: unwedge get_why, and four defects found smoke-testing the release by @RaghavChamadiya in #1395
- fix(server): serve only indexed files from /file-content by @RaghavChamadiya in #1397
- fix(server): decide keyless access from the peer address, not REPOWISE_HOST by @RaghavChamadiya in #1401
- release: v0.40.0 - two server security fixes, episodes, and a much cheaper update by @RaghavChamadiya in #1396
New Contributors
- @rehan6025 made their first contribution in #1277
- @Ameysr made their first contribution in #1320
Full Changelog: v0.39.0...v0.40.0
v0.39.0
What's Changed
- feat(answer): name what each candidate file defines, not just its path by @RaghavChamadiya in #1306
- docs(benchmarks): rescore ContextBench on the sealed half after the gate fixes by @RaghavChamadiya in #1307
- docs(benchmarks): tighten section 1 and refresh the token-efficiency figures by @RaghavChamadiya in #1308
- docs(benchmarks): report the agent-loop result, and separate it from the payload number by @RaghavChamadiya in #1310
- fix(search): repair a drifted full-text index instead of refusing to open it by @RaghavChamadiya in #1311
- feat(docs): read the wiki sidebar as a table of contents, and fit diagrams to the column by @RaghavChamadiya in #1312
- chore(deps): bump aiohttp, cryptography, gitpython, postcss, undici, fast-uri by @RaghavChamadiya in #1313
- release: v0.39.0 — candidate defines, a sidebar that reads as an outline, and a store that opens again by @RaghavChamadiya in #1314
Full Changelog: v0.38.0...v0.39.0
v0.38.0
What's Changed
- feat(generation): measure vocabulary overlap across orientation pages by @swati510 in #1160
- feat(pages): retired page ids keep resolving by @swati510 in #1163
- feat(generation): the overview carries the architecture map by @swati510 in #1164
- feat(generation): stamp layer provenance on the pages a layer groups by @swati510 in #1165
- feat(pages): a retired page can hand off to the repository's overview by @swati510 in #1166
- fix(answer): stop the prompt formatter halving every page excerpt it fetches by @swati510 in #1168
- fix(answer): attach page content on every retrieval, not only the weak ones by @swati510 in #1169
- feat(docs): the tree groups modules under their layer from the members by @swati510 in #1170
- feat(generation): layers group the docs tree without a page to hang it off by @swati510 in #1171
- fix(generation): reject pages that talk to the prompter, and cap the overview's prose by @swati510 in #1172
- fix(cli): generation checks reach a normal run of init and update by @swati510 in #1178
- refactor(generation): drop the onboarding prerequisite table nothing reads by @swati510 in #1179
- feat(answer): meter what one synthesis call costs by @swati510 in #1180
- perf(answer): embed the question once per call, not once per stage by @swati510 in #1182
- docs(generation): record what the overlap thresholds actually measure by @swati510 in #1181
- fix(search): stop asking full-text search for most of the corpus by @swati510 in #1188
- fix(answer): keep decision vectors and pageless ids out of the answer by @swati510 in #1183
- feat(docs): the docs tree opens on the shape of the repository, not its contents by @swati510 in #1184
- feat(docs): the file corpus sits above the layer outline, not under it by @swati510 in #1185
- fix(docs): the docs tree's outline numbers read as a sequence or not at all by @swati510 in #1186
- fix(docs): a module with no layer stops being drawn as one by @swati510 in #1187
- feat(search): index a page's summary and target path by @swati510 in #1189
- fix(search): drop a tombstoned page from the full-text index by @swati510 in #1190
- feat(search): centre a hit's evidence snippet on what the query matched by @swati510 in #1191
- fix(readme): media that actually renders on GitHub by @RaghavChamadiya in #1197
- fix(embeddings): say which pages lose text at the embedding cap by @swati510 in #1192
- fix(doctor): reconcile the store against the database again by @swati510 in #1196
- feat(search): let a page be too thin to be worth indexing by @swati510 in #1198
- refactor(embeddings): one recipe for every page vector by @swati510 in #1200
- fix(generation): refuse a structurally-keyed page that has no key by @swati510 in #1201
- fix(index): tombstone a page whose file is no longer on disk by @swati510 in #1202
- feat(embeddings): a page below the information floor gets no vector by @swati510 in #1203
- docs(readme): give the PR bot a section, a picture and a comparison by @RaghavChamadiya in #1205
- fix(generation): a file page drops the sections it cannot fill by @swati510 in #1206
- fix(generation): a symbol spotlight drops the importers section when empty by @swati510 in #1207
- fix(generation): a symbol spotlight carries a render key, and update sweeps it by @swati510 in #1208
- feat(generation): file pages and spotlights name the questions they answer by @swati510 in #1209
- fix(generation): add the questions block the tests already assert by @swati510 in #1210
- fix(ingestion): extract unparenthesized single-parameter arrow functions in JS/TS by @akshatmalik-bruh in #1215
- feat(generation): module pages stop opening with the same sentence by @swati510 in #1212
- feat(generation): a module page names its own symbols, not only prose about them by @swati510 in #1211
- feat(generation): a page says how far it can be trusted by @swati510 in #1213
- fix(ingestion): filter HTML intrinsic elements from JSX component call targets by @akshatmalik-bruh in #1217
- docs(readme): cite the 21-repo health validation, drop the PR comment screenshot by @RaghavChamadiya in #1218
- feat(ingestion): Svelte at the Full tier via a byte-preserving TS projection by @RaghavChamadiya in #1221
- perf(dead-code): make the dynamic-import package clamp a set lookup by @RaghavChamadiya in #1222
- feat(health): perf dialects for Kotlin and C++ by @RaghavChamadiya in #1224
- feat(health): dataflow def/use dialect for C++ by @RaghavChamadiya in #1225
- perf(dead-code): feed the marker prepasses ingestion's bytes by @RaghavChamadiya in #1223
- fix(mcp): resolve the embedder API key from persisted config by @RaghavChamadiya in #1230
- fix(mcp): stop the first tool call racing the lancedb import by @RaghavChamadiya in #1231
- feat(ingestion): Vue support via a shared single-file-component projection by @RaghavChamadiya in #1232
- feat(ingestion): HTML at the import tier via script src and link href by @RaghavChamadiya in #1235
- feat(generation): mine the repository's own vocabulary, ranked and gated by @swati510 in #1233
- feat(generation): read reStructuredText documents as reStructuredText by @swati510 in #1238
- fix(tests): restore structlog's global config after every test by @RaghavChamadiya in #1239
- feat(generation): add configurable synthesis evidence by @serjflint in #1227
- fix(stats): the punch card's UTC footnote describes, it does not prescribe by @RaghavChamadiya in #1240
- feat(generation): give onboarding the repository's own vocabulary by @RaghavChamadiya in #1241
- feat(generation): rank key concepts by what the repository writes about by @RaghavChamadiya in #1242
- fix(generation): read execution flows by the field names they have by @RaghavChamadiya in #1245
- feat(generation): the overview counts its packages instead of describing them by @RaghavChamadiya in #1246
- fix(generation): ground flow narratives in exact source by @serjflint in #1229
- feat(generation): read reStructuredText documents written under .txt by @RaghavChamadiya in #1247
- fix(generation): a definition is prose the author wrote, not the markup below it by @RaghavChamadiya in #1248
- feat(mcp): reach a file page by the words its own file uses, and serve paths a caller can open by @RaghavChamadiya in #1259
- fix: bound the betweenness pool, keep live update locks, and count failed pages once by @RaghavChamadiya in #1262
- docs(contributing): document how to claim an issue by @RaghavChamadiya in #1263
- fix(ts): allow Node.js package exports wildcard to cross directory boundaries by @jyotirmya17 in #1256
- fix(python): capture correct module path for aliased imports by @jyotirmya17 in #1243
- docs(examples): add structurizr export walkthrough by @Ayush7614 in #1176
- refactor(generation): name the per-file vocabulary for what it is by @RaghavChamadiya in h...
v0.37.0
What's Changed
- feat(init): add --no-editor-setup to skip global MCP/hook registration by @RaghavChamadiya in #1086
- Scope the Stats page to what no other page shows by @RaghavChamadiya in #1091
- feat(stats): rework the coding-rhythm chart and name how a repo ships by @RaghavChamadiya in #1096
- fix(coupling): keep ?focus= in sync with the pinned file by @Real5K in #1088
- fix(resume): keep the pages a resumed run deliberately skipped by @RaghavChamadiya in #1097
- fix(ui): use stored concept tree for pages parented to repo root (#1081) by @akshatmalik-bruh in #1085
- docs(examples): add health-coverage walkthrough by @Ayush7614 in #1020
- docs(examples): add OpenCode provider setup example by @Ayush7614 in #1021
- fix(generation): enforce documentation completion by @austintraver in #1011
- fix(generation): filter file dependency context by @austintraver in #1010
- ci: run types and ui tests on every PR by @RaghavChamadiya in #1101
- fix(dead-code): align default min_confidence floor to RISK_CAP_CONFIDENCE (#1084) by @akshatmalik-bruh in #1087
- fix(server): fail job explicitly on unknown execution mode (#881) by @akshatmalik-bruh in #911
- fix(generation): keep a page whose provider call failed (Refs #1089) by @RaghavChamadiya in #1104
- fix(cli): surface page generation failures and resume hint on init completion (#1094) by @akshatmalik-bruh in #1098
- docs: onboard contributors through repowise itself, trim README badges by @RaghavChamadiya in #1110
- fix(health): classify .mts/.cts tests in coverage_gradient and move_method by @RaghavChamadiya in #1111
- refactor(core): one home for "is this path a test?" by @RaghavChamadiya in #1112
- Convert the last test-path copies in the server to the shared rules by @RaghavChamadiya in #1113
- feat(web): rebuild the Overview page around sections instead of cards by @RaghavChamadiya in #1114
- Convert the last two inline test-path checks, and close the fixture gap (Refs #1103) by @RaghavChamadiya in #1115
- Rebuild the docs page on the Overview's design language by @RaghavChamadiya in #1118
- feat: load the docs page without every page's body by @RaghavChamadiya in #1120
- feat(ui): rebuild Commits and Contributors on the section design language by @RaghavChamadiya in #1121
- docs(examples): add security-scan walkthrough by @Ayush7614 in #1109
- docs(commercial): acknowledge OSS full-history secret scan by @Ayush7614 in #1105
- fix(mcp): budget get_answer synthesis per provider, not at a flat 30s by @RaghavChamadiya in #1124
- feat(ui): rebuild the contributor profile and commit detail on the section design language by @RaghavChamadiya in #1125
- fix(mcp): report an empty completion instead of shipping a blank answer by @RaghavChamadiya in #1126
- feat(ui): rebuild Code Health on the section design language by @RaghavChamadiya in #1129
- fix(ingestion): tolerate malformed .gitignore patterns by @ShotaNagafuchi in #1095
- fix(dead-code): use dict.get() for git metadata in zombie package detector by @akshatmalik-bruh in #1128
- feat(ui): rebuild Coverage and Dead code on the section design language by @RaghavChamadiya in #1132
- test(cli): cover repowise security scan stub and history wiring by @Ayush7614 in #1108
- feat(ui): rebuild Chat, Settings and Decisions on the section design language by @RaghavChamadiya in #1134
- fix(providers): refresh stale model defaults and fix cost and temperature handling by @RaghavChamadiya in #1137
- feat(init): first-run UX pass over the interactive init flow by @RaghavChamadiya in #1139
- perf(cli): defer the pipeline import out of the generate engine by @RaghavChamadiya in #1140
- fix(hooks): make the augment hook silent when its console script is missing by @RaghavChamadiya in #1141
- fix(mcp): stop get_health dropping targets and repeating itself by @RaghavChamadiya in #1142
- docs(examples): add distill / expand / saved walkthrough by @Ayush7614 in #1123
- Typed node ids, and a Structurizr DSL export built on them by @swati510 in #1143
- test(cli): cover repowise decision list/show/confirm/dismiss/health by @Ayush7614 in #1138
- docs: remove obsolete Anthropic Message Batches / --no-batch by @Ayush7614 in #1136
- docs(website): sync language list with 16 AST languages by @Ayush7614 in #1135
- docs(website): sync MCP pages with the live default tool surface by @Ayush7614 in #1122
- fix(structurizr): make the exported DSL openable, and correct three parser bugs by @RaghavChamadiya in #1144
- feat(knowledge-graph): name what the arrows and dots mean, and rebuild the detail panel by @RaghavChamadiya in #1145
- fix(architecture): stop the graph blaming the backend mid-load, and quiet its chrome by @RaghavChamadiya in #1146
- fix(zoom): repair the node fixture that is failing type-check on main by @RaghavChamadiya in #1147
- perf(architecture-graph): stop the canvas doing per-node and per-frame work, and fix what dimming blends toward by @RaghavChamadiya in #1149
- refactor(architecture): give the graph one scope control, and stop it spending 8 seconds arriving by @RaghavChamadiya in #1150
- feat(refactoring): lead with what the pile actually is, and plot the plans whose axes spread by @RaghavChamadiya in #1151
- feat(files): let the map lead, and give it a key it cannot drift from by @RaghavChamadiya in #1152
- fix(dead-code): remove duplicate operator* in C++ contract-method set (B033) by @akshatmalik-bruh in #1153
- fix(server): un-shadow hidden test in test_mcp_workspace (F811) by @akshatmalik-bruh in #1154
- fix(server): hold strong references to fire-and-forget asyncio tasks (RUF006) by @akshatmalik-bruh in #1155
- fix(docs): one breadcrumb, correct reader height, wrapping backlinks by @swati510 in #1156
- fix(search): one command palette answers a keypress by @swati510 in #1157
- fix(nav): links land where their label says by @swati510 in #1158
- chore(ruff): clear 508 lint violations and gate Python lint in CI by @RaghavChamadiya in #1161
- release: v0.37.0 — the UI release by @RaghavChamadiya in #1162
New Contributors
- @ShotaNagafuchi made their first contribution in #1095
Full Changelog: v0.36.0...v0.37.0
v0.36.0
What's Changed
- Cleaner docs nav tree and de-duplicated page headers by @RaghavChamadiya in #1066
- feat(distill): data-driven TOML output filters + install/infra families by @RaghavChamadiya in #1067
- perf(generation): take the top symbol decile, not the top fifth by @RaghavChamadiya in #1069
- fix(generation): read the real dependency keys in getting-started context by @RaghavChamadiya in #1068
- feat(distill): shared shell lexer for the rewrite hook, wider safe pipe tails by @RaghavChamadiya in #1070
- fix(distill): safe cmd.exe argv rendering, honest missed-savings tip, correct permission docs by @RaghavChamadiya in #1071
- test(distill): gate the executable-path shim test to Windows by @RaghavChamadiya in #1072
- fix(generation): one instruction, one 'Questions this page answers' heading by @RaghavChamadiya in #1073
- feat(generation): bound the file-page bucket on very large repos by @RaghavChamadiya in #1074
- docs: lead with interactive init, and stop printing a deprecated flag by @RaghavChamadiya in #1075
- feat(generation): size-aware file-page volume policy, applied by default by @RaghavChamadiya in #1076
- test: drop the removed file_page_top_percentile from two test configs by @RaghavChamadiya in #1077
- README: use the live badges instead of not having one by @RaghavChamadiya in #1079
- fix(api-client): accept the health/files envelope, keep its real total by @RaghavChamadiya in #1080
- fix(server): launch persisted polling sync job by @GautamSharma99 in #831
- fix: resolve alias correctly in generate_refactoring_code by @abhiramvsmg in #884
- Fix #840: Use SO_REUSEADDR in port probe to ignore TIME_WAIT by @kishansaaai in #845
- fix(dead-code): evaluate top-level exported const literals as unused exports in TS/JS by @akshatmalik-bruh in #1065
- fix(health): remove no-op --safe-only flag by @Ayush7614 in #1027
- release: v0.36.0 — bounded file-page volume, distill shell lexer, contributor fixes by @RaghavChamadiya in #1083
New Contributors
- @abhiramvsmg made their first contribution in #884
Full Changelog: v0.35.0...v0.36.0
v0.35.0
What's Changed
- fix(ui): render the bug-fix history these surfaces already receive by @RaghavChamadiya in #960
- docs: lead with the numbers, restore the five-layer table, fix serve ports by @RaghavChamadiya in #961
- fix(workspace): scope file count and top-language queries to node_type='file' by @Nehant14 in #952
- fix(ui): render the fix history the file page already receives by @RaghavChamadiya in #966
- feat(files): mark which symbols in a file keep getting fixed by @RaghavChamadiya in #968
- feat(security): add repowise security scan --history for full git-history secret scanning by @Ayush7614 in #821
- fix(server): resolve workspace repos in chat tool calls by @RaghavChamadiya in #971
- feat(generation): render every wiki page type without an LLM by @RaghavChamadiya in #972
- fix: keep data-shape grep paths color-stable by @pollychen-lab in #860
- fix(generation): make wiki page ids stable across runs by @RaghavChamadiya in #974
- feat(cli): make init --index-only produce a complete wiki, no key, no spend by @RaghavChamadiya in #975
- fix(cli): keep the index-only wiki honest, current and free by @RaghavChamadiya in #976
- feat(cli): add
repowise generatefor scoped, cost-gated wiki generation by @RaghavChamadiya in #978 - feat(cli): rank generate coverage and add an interactive chooser by @RaghavChamadiya in #979
- feat(ui): move governing decisions on file page into dedicated tab (#973) by @akshatmalik-bruh in #977
- feat(parser): add adaptive TSX grammar fallback for .ts files containing JSX by @akshatmalik-bruh in #967
- test(claude-plugin): add structural parity tests mirroring test_codex_plugin by @Ayush7614 in #963
- feat(codex): add code-health skill for Codex plugin parity by @Ayush7614 in #962
- fix(ollama): wrap timeout/connection errors so they retry by @dev-ploy in #829
- chore: make .gitignore OSS-safe and fix two dead doc links by @RaghavChamadiya in #981
- refactor(generate): extract the scoped-generation engine into core by @RaghavChamadiya in #982
- feat(server): expose scoped page generation over HTTP by @RaghavChamadiya in #983
- feat(server): authenticate the SSE job stream and mirror provider keys to repo .env by @RaghavChamadiya in #984
- fix(server): resolve the provider-key repo by id, not the request path by @RaghavChamadiya in #985
- feat(coupling): make the change-coupling page interactive and surface it on Overview by @RaghavChamadiya in #986
- fix(dead-code): correct the findings table and give it an AI prompt, links and reasons by @RaghavChamadiya in #990
- feat: provider key settings and per-page AI docs generation from the reader by @RaghavChamadiya in #988
- feat: bulk AI doc generation and provenance surfaces in the web UI by @RaghavChamadiya in #991
- fix(openai): clamp temperature to 1 for GPT-5+ reasoning models by @IlyaSavich in #989
- feat(dead-code): rebuild the findings table on the shared table primitive by @RaghavChamadiya in #992
- feat(dead-code): one confidence scale, a reopen path, and shared primitives by @RaghavChamadiya in #993
- feat: coverage picker for web bulk documentation generation by @RaghavChamadiya in #994
- feat: deterministic template wiki for workspace and keyless server indexing by @RaghavChamadiya in #999
- fix(update): report deferred workspace docs runs honestly by @RaghavChamadiya in #1000
- fix(init): render the template wiki when no provider is configured by @RaghavChamadiya in #1001
- fix(init): degrade unanswerable prompts instead of ending the run by @RaghavChamadiya in #1002
- feat(init): add --docs, and stop telling agents a key is required by @RaghavChamadiya in #1003
- fix(update): clean up stale .update.pending markers by @RaghavChamadiya in #1004
- fix(server): self-heal indexed commit in overview-summary by @RaghavChamadiya in #1005
- fix(embed): resolve the embedder from the store, not the environment by @RaghavChamadiya in #1007
- chore: shrink demo media from ~28MB to ~7MB by @RaghavChamadiya in #1006
- fix(wiki): page title, layer identity and deterministic file page defects by @RaghavChamadiya in #1013
- feat(wiki): persist page hierarchy in the data model by @RaghavChamadiya in #1014
- feat(wiki): read the stored page tree in MCP, the docs tree and breadcrumbs by @RaghavChamadiya in #1022
- test(claude-plugin): assert commands/*.md set and frontmatter by @Ayush7614 in #1018
- docs(examples): add examples index and discoverability links by @Ayush7614 in #1019
- docs(claude-plugin): sync MCP tool surface and hooks with reality by @Ayush7614 in #1017
- feat(generation): derive a concept outline deterministically, name it with an LLM by @RaghavChamadiya in #1023
- feat(generation): concept groups replace per-directory module pages by @RaghavChamadiya in #1024
- feat(generation): a model names the concept pages, and the tree stops documenting documentation by @RaghavChamadiya in #1025
- feat(generation): one renderer per page type, salted structural pages by @RaghavChamadiya in #1032
- Collapse init and generate to a single cost question by @RaghavChamadiya in #1036
- feat: drop the template-vs-AI provenance axis from the API and UI by @RaghavChamadiya in #1037
- feat(ui): concept-first docs navigation by @RaghavChamadiya in #1038
- feat(refactoring): show the duplicated block in extract-helper plans by @RaghavChamadiya in #1039
- feat(mcp): demote decision records and test pages in retrieval by @RaghavChamadiya in #1040
- docs(commercial): list ten MCP tools including get_change_risk by @Ayush7614 in #1031
- fix(dead-code): align CLI/REST min_confidence default with MCP by @Ayush7614 in #1030
- docs: fix stale MCP tool counts in package READMEs by @Ayush7614 in #1028
- docs(cli): document repowise security in CLI_REFERENCE by @Ayush7614 in #1026
- feat(claude-plugin): add coverage and impacted-tests slash commands by @Ayush7614 in #1029
- Concept pages read as subsystem docs, plus parent-dir overview pages by @RaghavChamadiya in #1043
- docs: align wiki generation docs with the single-renderer model by @RaghavChamadiya in #1044
- feat(mcp): lead subsystem questions with their concept page by @RaghavChamadiya in #1046
- fix(mcp): resolve refactoring alias against its scoped session (#880) by @swati510 in #1045
- feat(upgrade): recommend a re-index for wikis predating the subsystem pages by @RaghavChamadiya in #1035
- docs: correct generate written-set and log concept-tree changes by @RaghavChamadiya in #1047
- docs: correct onboarding collection slot count in docstrings by @RaghavChamadiya in #1048
- fix(ui): stop counting tombstoned pages in the docs tree by @RaghavChamadiya in #1049
- fix(cli): exclude tombstoned pages from status and export listings by @RaghavChamadiya in #1050
- feat(cli): include hierarchy columns in JSON wiki export by @RaghavChamadiya in #1051
- fix(generat...