repowise is built so that upgrading is painless: upgrade the package, run repowise update, and your existing index keeps working. A full reindex is only ever recommended for a genuinely breaking change, never forced, and repowise tells you exactly when and how.
pipx upgrade repowise # or: uv tool upgrade repowise / pip install -U repowise
cd your-repo
repowise update # picks up the new version against your existing indexThat's it. No reindex in the normal case.
When you run repowise update (or repowise serve) after upgrading, repowise:
- Reads your store's format version and compares it to the running build. The on-disk store records which version wrote it, so repowise knows exactly what, if anything, an upgrade needs.
- Applies any automatic, no-cost adjustments in place. New database columns are back-filled automatically. If your embedding model changed, vectors are re-embedded for you (no LLM calls). You don't run anything.
- Keeps your parse cache warm. Ordinary releases do not invalidate cached work, so updates stay fast.
- Shows you what changed. A short "what's new" summary appears for the versions you crossed, and
repowise whats-newshows release notes any time. The web UI surfaces a dismissible "update available" banner and a what's-new view.
Rarely, a release changes the store format in a way an in-place migration can't cover. When that happens repowise keeps your existing index working and shows a clear notice with the exact command, for example:
Reindex recommended: repowise init --force
It is a recommendation, not a requirement. Nothing is wiped until you choose to run it. You can keep using the current index and reindex when convenient.
Per-path rules in .repowise/health-rules.json used to be matched with
fnmatch, where * crossed directory separators. They now use the same
gitignore matching as exclude_patterns, .gitignore and the file traverser,
so one glob means one thing wherever you write it.
What changes for you: a single * stops at a path segment. A rule written
as src/legacy/* used to silence the whole subtree and now covers one level,
which means biomarkers you had turned off can start firing again.
The fix is one character:
- {"path": "src/legacy/*", "disabled_biomarkers": ["complex_method"]}
+ {"path": "src/legacy/**", "disabled_biomarkers": ["complex_method"]}You do not have to hunt for them. Any affected pattern logs a warning naming the pattern when the file is loaded:
health_rules_glob_narrowed pattern=src/legacy/* hint='*' no longer crosses '/' …
Patterns without a /, patterns already using **, and directory prefixes
like vendor/ are unaffected.
- CLI:
repowise --version, orrepowise doctorfor an update check with the right upgrade command for your install method. - Web UI: the version is shown in the sidebar footer, with a dot when a newer release is available.
docs/CHANGELOG.md- full release notes.