Skip to content

Upgrading

One version covers the whole product — backend, frontend, extension and plugin. They are only guaranteed to work together at the same commit, so they ship together.

Before 1.0, a breaking change bumps the minor version, and “breaking” means you have to do something: a renamed environment variable, a record migration, a removed route, a plugin reinstall. Release notes say so explicitly.

Terminal window
git fetch --tags
git checkout v0.2.0 # whatever the newest release is
docker compose build # rebuild the images
docker compose up

Then, if the release notes mention the skill or the extension:

Terminal window
claude plugin install sumisura@sumisura-local # reinstall the skill

and reload the unpacked extension in your browser.

Back up first if you are nervous. data/jobs/ and data/applications/ are not in git — use Export in the app, or copy the data/ directory.

Some releases add fields to Job Listing and Application records. Records written earlier read as legacy and keep working, but a one-shot migration brings them current. It is a dry run unless you pass -write:

Terminal window
cd backend
go run ./cmd/migrate-records -data-dir ../data # report only
cp -r ../data ../data-backup # these files are not in git
go run ./cmd/migrate-records -data-dir ../data -write # apply

Exit codes: 0 nothing pending, 3 a dry run found work to do, 1 an error.

It only backfills what is provably already on disk, and names anything it cannot know rather than inventing it. Every record is read and validated before anything is written, so a corrupt or newer-than-expected record stops the run with nothing changed.

Nothing to migrate. If you were running the project before it was renamed from CV Reporter, see the rename notes in the release: environment variables changed from CV_REPORTER_MODEL_* to SUMISURA_MODEL_*, the LAN header became X-Sumisura-Token, and the plugin is now installed as sumisura@sumisura-local and invoked as /sumisura:tailor-cv.