v0.59.0

Salesforce, COBOL and a map of your services

Apex, Lightning, Visualforce, flows and COBOL with copybooks and CICS are mapped end to end, a folder of services gets a System Map with every route between two services, the indexing page shows each step as it runs, and agents record and accept decisions as themselves.

This cycle read two new worlds of code and a folder of services as one system. Salesforce reaches the Full tier, COBOL resolves copybooks, CICS, JCL and DB2 includes, and the System Map groups services, focuses one and lists every route between two. On repowise.dev the indexing page shows each step and what the run has found so far. The open-source release, 0.59.0, makes the first hour with a repository a guided one, and agents record and accept decisions as themselves.

Salesforce at the Full tier

On repowise.dev and in the open-source release.

  • Apex resolves in each sfdx project's namespace, at 99.9% to 100% cross-file class recall across four public projects.
  • Lightning, Aura, Visualforce, flows and object metadata link into the same graph as the Apex that uses them.
  • Apex gets code health, dead code, Extract Method, coverage and four advisory security markers.

COBOL reads like a codebase

On repowise.dev and in the open-source release.

COPY, EXEC SQL INCLUDE, EXEC CICS LINK and XCTL, JCL steps and BMS mapsets resolve. On a public CICS sample, copybook pairs resolve 246 of 246 and CICS program pairs 41 of 41. Paragraphs are scored for code health, and programs defined in a CSD are entry points.

A System Map for a folder of services

On repowise.dev and in the open-source release.

The System Map groups services into systems. Focus one to see its callers and dependencies, or pick two to list every route between them. It lays out 300 services in 70 ms.

Cross-repo links read .NET, Spring, Node and Go HTTP clients and routers, Spring Cloud Gateway, nginx, Ocelot and YARP, Kafka, JMS, AMQP, Azure Service Bus and gRPC, and service host names from compose, Kubernetes and Spring config. Every link names how it was matched.

Indexing that shows each step

On repowise.dev.

  • Each stage row shows what it did when it finishes ("Reading the code 6,023 files · 0:14") and, while it runs, a count against the total and the file in hand. Structure and history run side by side.
  • "What we have found so far" turns the run's findings into short sentences: languages, size, history, structure, hotspots, dependencies, health, dead code and decisions. The list stays on screen when the run finishes or fails.
  • A first index shows an estimate, and a repository indexed before shows how long it usually takes.
  • The finished page leads with those findings, then Explore and one question to ask about the top hotspot.

Agents record and accept decisions

Open-source release.

An agent records a decision with repowise decision add --agent <slug> and accepts a candidate with repowise decision confirm <id> --agent <slug>, signed as itself in decision show, the web UI and CLAUDE.md. Every accepted decision carries its own text. After a git commit, Claude Code is asked whether the commit made a decision worth recording, and repowise decision config capture-prompt --off turns that off. Staleness is measured from the commit that landed the decision.

A guided first hour

Open-source release.

  • repowise init ends on up to four findings from your code (health, unreachable files, the top hotspot, decision candidates) and the exact generate command for the model found on the machine.
  • repowise serve opens the web UI in your browser (--no-open skips it), and a new repository opens on a three-step welcome.
  • A Setup page lists what is set up and what is left, each row with one action and a prompt for your agent.
  • A repository indexed without a model gets one in two clicks, with the price shown before anything runs.

Tests and coverage that say what they measured

Open-source release.

untested_complexity lists the complex functions your tests do not run, ranked by CRAP score, each with a prompt to add tests. Every file gets one reach state, and a test that mocks a module out no longer counts as reaching it: on a large repository the unreached list reads 320 files where it read 1,370. impacted-tests separates tests kept only by a conftest or a long import chain, and missed no test across 14 commits on three repositories.

Gates in CI and on agent commits

Open-source release.

The CI action posts one editable PR comment covering every gate and sets a verdict output. A failing health check annotation ends with a one-line fix, and repowise hook health-gate install puts the same gate on Claude Code's commits and pushes.

Also in the open-source release

  • repowise report estate reports per-repository health across a workspace, the riskiest seams and where to start.
  • /api/workspace at 207 repositories answers in 137 ms, from 1,786 ms, and a no-change workspace update takes 2.6 to 4.5 s, from about 11 s.
  • repowise grammars fetch stages the COBOL and Apex grammars for machines without network access.
  • REPOWISE_OFFLINE and DO_NOT_TRACK stop every network call repowise makes on its own.
  • repowise mcp starts in an unindexed directory and tells the agent how to index it, and get_why and get_context work on a directory.
  • Every doctor check has a stable id and its fix command, and doctor --quick answers in about two seconds.
  • repowise decision reaffirm keeps an accepted decision current, and every review command returns one JSON shape an agent can drive.
  • One file count, symbol count and last-sync time across the CLI, MCP and web UI.
  • A repository's excluded paths and wiki style live in .repowise/config.yaml.
  • Dependency updates close every open security advisory.

Upgrading

pip install --upgrade repowise

The first repowise update after upgrading re-parses, rescans and re-scores code health once, with no model calls and nothing to re-index. Repositories with Apex, COBOL or Scala files, or a tests/ folder inside a JS or TS src tree, can see scores move. On repowise.dev, each repository picks up the new languages and scoring on its next index.

Thank you

This release includes work from 36 contributors outside the core team.

Run this release on your repo.

Index a repository free and see what this release finds in it. Rolling it out to a team? We will walk you through it.