Skip to content

release: v0.58.0 · a guided init, a redesigned web UI, and a health check CI gate - #4316

Merged
swati510 merged 1 commit into
mainfrom
release/v0.58.0
Oct 20, 2026
Merged

swati510 merged 1 commit into
mainfrom
release/v0.58.0

Conversation

@RaghavChamadiya

@RaghavChamadiya RaghavChamadiya commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

repowise 0.58 makes the first run read like a plan and puts code health at the front of every review. repowise init opens on one plan screen, shows its progress as a checklist of finished steps, and ends on one finish panel that leads with repowise serve, for one repository or a folder of them. repowise health check gates a change in CI on the code-health findings it writes, using git alone. The web UI is redesigned around what to do next: a short Overview, a rebuilt Code Health page with a folder map you can zoom, Commits led by each change's health delta and its wins, and an Ownership page built around knowledge coverage and off-boarding. Change risk follows code that moves between files, get_overview lays out every package in a lean default, and GitHub Copilot CLI joins the providers.

By the numbers

In the 5 days since 0.57.0:

  • 278 pull requests merged, from 35 contributors, 19 of them first-time contributors
  • 1,609 files changed, +157,134 / -64,952 lines
  • 92 fixes, 80 features, 9 performance changes, 79 refactors and 7 documentation changes
  • 462 test files touched, 181 of them new
  • 58 issues closed

Thank you to everyone who built this release with us. To our returning contributors: @aazminu, @Aman-goel-04, @arnavsx3, @kocaemre, @Laex, @msranjana, @ozenyunus35, @PragalvaXFREZ, @rishu685, @Sriram-PR, @TheNetherWatcher, @ump45nose, @wanjinhao1, @ynaamane and @Yushu-Li, thank you for coming back and raising the bar again.

And a special welcome to the 19 people whose first contribution landed in this release: @abdelhadi703, @c0mrade8, @ddaihao2022, @dhvani7014, @Gabrieljr42, @ganeshmshetty, @ian0318git, @JackGitLab, @jungwonenjoyericl, @kayaal34, @Maedza, @Marko0519, @swastiktawate, @teddiesloco, @Venius24, @wang2-lat, @WynandVStaden, @Yi-111-a and @ZhangDT-sky. Glad to have you here.

repowise init shows the whole run before it starts

An interactive init opens on one screen: the repository scan, an ETA in seconds ("Under a minute" on a small repository) and the plan for index, decisions, documentation, search, connect and sync. Enter runs the free run. m picks a model, e edits the plan, s keeps the global MCP entry where it is, and q quits and removes the .repowise/ the run just made. The same screen offers to keep machine-specific files out of git, and init asks before it points the global Claude Code and Claude Desktop MCP entry at this repository (#4253, #4256, #4246).

A logged-in Claude Code, Codex or OpenCode is offered in the picker with its cost as model calls, parallel processes and minutes, and it runs only when you pick it (#4247).

While the run goes, every finished step leaves a row with its count and time, running rows show the current file or page, and a Next line lists what is still to come. Past 10 seconds a step says Ctrl-C is safe and names repowise init --resume. Piped, init prints short lines, and --progress json gives agents structured progress. Exit codes are 0 for a clean run, 2 for a run with gaps and 130 for an interrupt (#4251, #4254, #4242).

The run ends on one finish panel: what it built, which agent is connected, two example questions, repowise serve with its port, at most two more steps, and the files init added (#4248).

A folder of repositories gets the same plan screen with the repository list, and r chooses which to include; --repos does the same in scripts. Workspace runs stamp each repository like a single-repository init, so the first update has nothing to redo (#4262, #4260, #4263, #4293, #4310).

Init, status, update and the editor files share one set of mode names: Built from code, Written by and Index only. Each mode names the same next step everywhere. repowise update --full takes a fast index to a full one, and repowise reindex turns semantic search on after a keyless init (#4249, #4244, #4309, #4240).

A redesigned web UI that opens on what to do

  • Overview opens on one health reading and a folded Do next, then an ask box with questions drawn from the repository and six Explore cards whose figures match the pages they open (#4163, #3966).
  • Commits opens on what the period's work did to code health: a headline that counts improvements first, then recent wins, then filters for health impact, hotspots, time, author and area kept in the URL. Every commit row leads with its health delta, and the commit sheet reads the verdict, then Got better and Got worse by file, with a prompt for your agent to fix what got worse. Change Records lead with their health rollup and say where a moved finding came from (#4137, #4154, #4141, #4133).
  • Ownership opens on knowledge coverage, the share of recently changed code held by two or more people, beside single-owner hotspots, quiet owners and the truck factor, with tabs for knowledge risks, knowledge loss and an off-boarding what-if: name who leaves and see which code loses its owners. A person's page leads with what depends on them and who could take it over (#4153, #4136).
  • Code Health is rebuilt around what to fix. Its map draws each directory as a disc inside its parent and opens areas into sub-areas and files as you zoom, with lenses for score, churn, main author and knowledge risk, and a context rail with the area's score, 30-day delta, trend, worst files, hotspots, owners and top findings; the map's payload goes out gzipped at 51 KB, down from 634 KB. The Performance tab opens on the changes worth making now, grouped by area with one prompt for your agent. Every file says what its score lost to code shape, change history and test coverage, and the markers read in plain words: Deep nesting, Long function, Compound condition, Many authors, Fading ownership (#4157, #4135, #4138, #4165, #4124, #4119).
  • Coupling opens on the area pairs that change together with no import to explain it, and Hotspots are searched, filtered and paged over the whole set (#4152, #4162).
  • The sidebar groups pages into Understand, Code quality, People & History and Settings, and Tests and Security have their own pages (#4142).
  • Findings cards are quieter, with one "Copy prompt for your agent" action, and every path keeps its file name visible however narrow the column (#4164, #4161).

repowise health check: a CI gate on what a change writes

repowise health check origin/main...HEAD needs git alone, with no index, database or API key. It analyses the changed files at base and head, matches findings by file, marker and symbol, and exits 1 on a code-shape finding written on the change's own lines at high severity or above. --fail-at medium|high|critical moves the floor, and --fail-on worsened also fails findings the change made worse. Code that moved or was renamed is context, so a pure move passes. .repowise/health-rules.json is read from the base, so a change cannot loosen its own gate. Output comes as a table, JSON, Markdown, GitHub annotations, SARIF or GitLab Code Quality (#4302).

Three diff-risk rules read the changed text in any language and warn by default:

  • added-suppression: a new lint, type-check, coverage or repowise suppression
  • weakened-tests: a new skip or focus marker, fewer test cases or assertions, a looser coverage threshold
  • test-only-branch: a test-environment check in production code

--diff-risk error turns them into failures, and RULE=LEVEL sets one at a time (#4312). The security and doc-drift gates gain --fail-on-baseline-growth, which fails when the committed baseline lists a finding the base's copy does not (#4299).

Health scores that saturate per category

Each defect category now follows a saturating curve, A * (1 - exp(-raw / A)) with A at 3.09 times the category cap. Several findings on one function count the largest in full and the rest at 0.25, and history findings are de-stacked the same way before their cap. A file with many findings in one category reads as heavy without collapsing to the floor, and fixing one function's worst finding moves its score (#4144, #4129).

  • bumpy_road is repeated_nesting, and old ids keep working in rules, findings and filters (#4113). brain_method is listed as advisory, since the size markers already charge that function (#4115).
  • repowise health names Production code's score beside the all-files headline, and get_health carries production_average (#4204).
  • repowise health --score <paths> scores files from disk as the next update would, and --against <rev> prints before, after and the weighted average for the same files (#4139).
  • get_health(include=["what_if"]) names the points each code-shape fix recovers for the file, the headline and the hotspot average, and the best single fixes (#4130).
  • File drawers split a file's deduction into code shape, change history and test coverage, and a file with fewer than 5 commits says its history is too short to count (#4124, #4117).
  • One performance headline, led by the causes worth fixing now, appears on every surface, and Fix first and Do next name performance work once its cost is confirmed (#4231, #4227).

Change risk follows moved code

get_change_risk maps the symbols a change moves across files and pairs findings across the move, so a pure split reads as moved and improved findings are counted (#4109, #4112, #4125, #4127). health_delta lists each changed file's score before and after, largest move first (#4123, #4128). The default reply is leaner and keeps every fact an agent acts on, with the headline, reasons, actions and findings all leading with the same finding ("1 of 6 new findings needs review") (#4221, #4215). A repeated committed range comes from a per-process cache, and test selection runs off the event loop and is reused per change (#4209, #4208).

MCP for agents

  • get_overview has a lean default: the week's top three actions, the headline health with the production score, the five riskiest files and a compact scope digest, plus every package with its front doors, layer roots and build, test and lint commands. include=["tools"], ["actions"] and ["scope"] add the rest (#4207, #4214).
  • Every tool advertises MCP tool annotations built from its safety class (#2762).
  • get_answer cites the files its answer names, and get_why anchors a question on the indexed file it names (#4202, #4203).
  • get_context takes a symptom (issue text, an error or a stack trace) for its suspects ranking (#4205).
  • A lean CLAUDE.md and AGENTS.md block carries the files that need care, one health line, the top decisions and the tool table, with sections you can add back (#4235).

Also in this release

  • GitHub Copilot CLI is a provider (#3710).
  • Every GitHub release carries an openapi.json, each operation labelled stable or internal (#3948).
  • A prose-only update reuses stored clone and dead-code results, saving 17-32 s and 12-27 s, and the commit-health scan per update fits in 10 s (#4217, #4213).
  • PHP has a dataflow dialect and Extract Method plans (#3466). Go calls through interface-typed variables, chained Kotlin calls, Kotlin typealiases, Python name aliases, Rust cfg variants and React Native platform files all resolve (#3850, #3845, #3787, #2799, #3020, #3711).
  • Dead code recognises C and C++ files named in CMake, .vcxproj or .rc, C# MEF exports, cmdlets and source generators, Spring servlet initializers and Kotlin @Suppress("unused") (#4121, #4009, #3926, #3921, #3873).
  • Behaviour is pinned by golden snapshots across scanning, dead code, health, the parser and MCP payloads, while init, update, workspace, the pipeline and the MCP tools are organised into small staged modules (#3970, #3972 and the series in the changelog).
  • Security updates for aiohttp and mcp (#4292).

Plus dozens more refinements in the changelog.

Upgrading

pip install --upgrade repowise

HEALTH_ANALYZER_VERSION moved from 40 to 41 with the scoring changes above, so existing indexes re-score on their next update. PARSER_SCHEMA_VERSION moved from 8 to 9, so the parse cache refreshes once, automatically. STORE_FORMAT_VERSION is unchanged, so nothing needs re-indexing.

@repowise-bot

repowise-bot Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

✅ Health of changed files: 8.3 (unchanged)
Average full file score (structure and history) of 5 changed code files, weighted by size before this PR; not the repository score.

Check Result
Coverage 100% of 4 changed lines covered
Tests 4 of 5 changed code files reached by a test · 1 reached by no test · which tests
Security No new findings on changed lines
Doc drift No drift in docs this PR edits · 12 documents name changed files
Coverage

Patch coverage 100.0% (4 of 4 changed executable lines covered)

585b039 · cobertura · 4 of 17 changed files measured, 13 out of scope

Report from this run for 585b039.

Doc drift
  • packages/web/I18N.md names packages/web/messages/en.json, packages/web/messages/zh-CN.json and is not in this PR
  • plugins/claude-code/DEVELOPER.md names .claude-plugin/marketplace.json, plugins/claude-code/.claude-plugin/plugin.json and is not in this PR
  • docs/architecture/ARCHITECTURE.md names pyproject.toml and is not in this PR
  • +9 more on the PR page
🧾 Evidence: 6 not known
Item Status Evidence
Components touched ok · inferred 3 components: docs, packages, plugins
Declared owners ok · declared @RaghavChamadiya, @swati510
Suggested reviewers unknown · not known Not known: not gathered on a pull request
Tests reaching the change unknown · not known 0 of 5 changed files reached by a test; 5 not known
Contracts touched ok · measured No workspace contract touched; no breaking signature change
Consumers in other repos unknown · not known Not known: not gathered on a pull request
Decisions crossed unknown · not known Not known: decision records are read only for an AI review
Health delta ok · measured Findings: 0 introduced, 0 worsened, 0 resolved
AI provenance unknown · not known Provenance: unknown, known for 0 of 1 commit; AI share withheld: coverage 0% is below 30%
Diff size rank ok · measured Larger than 44.8% of recent commits
Outcomes since merge unknown · not known Not known: a pull request is not a merged change

AI review is paused: this repository reached its monthly spending limit. Bot settings


📊 See the full report for this PR
Blast radius, every caller of the contracts it changes, and health before and after. No sign-in.
Plain markdown for agents

Settings and updates

Updated 2026-10-20 16:47 UTC
Silence one PR with [skip repowise] in the title · Bot settings
⭐ Star Repowise · 📥 Install on another repo

@swati510
swati510 merged commit b28c49d into main Oct 20, 2026
10 checks passed
@swati510
swati510 deleted the release/v0.58.0 branch October 20, 2026 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants