VaxLink Release Process¶
Channels¶
| Channel | Branch | Web Store listing | Manifest name (stamped) | Badge in popup |
|---|---|---|---|---|
| Alpha | dev |
VaxLink Alpha | VaxLink Alpha, version_name X.Y.Z-alpha |
shown |
| Prod | main |
VaxLink | VaxLink, version_name X.Y.Z |
hidden |
Two independent store listings with independent version counters. Prod may jump versions (1.0.2 → 1.0.6) — gaps mean those versions were alpha-only. Same version number = same code on both channels.
Channel identity is never edited in manifest.json (it stays "VaxLink Alpha" in git on both branches — that's what unpacked development shows). scripts/package-extension.sh stamps the name and version_name at package time. Anything else channel-specific must derive from chrome.runtime.getManifest().name at runtime, like the popup badge does.
Versioning¶
- Bump
version(andversion_name) inmanifest.jsonondevonly, in a dedicatedupdate version to X.Y.Zcommit. - Bump whenever a build will be uploaded to a store listing — the store requires strictly increasing versions per listing, including re-uploads after a botched build.
- Three-part versions (
1.0.7). If alpha ever needs multiple uploads per version, use a fourth part (1.0.8.1,1.0.8.2) and ship1.0.8.x's final state to prod as1.0.8.
Changelog workflow¶
CHANGELOG.md follows Keep a Changelog with two VaxLink-specific additions:
- "Clinic feedback addressed" table — for any release containing fixes driven by pilot feedback, add a table row per feedback item: the nurse's words (short paraphrase or quote), what changed, and the issue refs. This is the artifact to send back to the nursing team — it closes the loop and shows their feedback lands.
- Contributors line per release. Generate code contributors with:
Credit non-code contributions explicitly (e.g.
clinic feedback: WDGPH immunization nursing team).
Maintain an ## [Unreleased] section at the top of the changelog on dev; when bumping the version, rename it to ## [X.Y.Z] – YYYY-MM-DD in the same commit. Keep a ### Known issues (tracked) subsection so testers know what NOT to re-report, with issue numbers.
Feedback traceability (feedback → issue → fix → changelog)¶
- Clinic feedback arrives (email/clinic notes). File or update a GitHub issue per distinct item, quoting the feedback and the build it was observed on (e.g. "VaxLink Alpha 1.0.5").
- Fix commits reference the issue (
(#25)in the subject or body). - The changelog's feedback table links the quote to the issue and the release that shipped the fix.
- After release, comment on each addressed issue with the version that shipped the fix; close it once the clinic confirms.
This gives both directions: from a nurse's complaint to the exact commit, and from any commit back to why it exists.
Release steps (automated via release-please)¶
Releases are driven by release-please (.github/workflows/release-please.yml, config in release-please-config.json).
The one habit it requires: Conventional Commit subjects on dev going forward:
fix: stop eating Tab keystrokes (#30)→ patch bump, "Fixed" sectionfeat: preset dose for prefilled syringes (#24)→ minor bump, "Added" sectionfeat!:or aBREAKING CHANGE:footer → major bumpchore:/docs:/test:/refactor:→ recorded but hidden from the changelog
Alpha (automated)¶
- Push conventional commits to
dev. The bot opens/updates a single Release PR ("chore: release VaxLink X.Y.Z") that contains the version bump (rootpackage.json+manifest.jsonversion and version_name via jsonpath) and the generatedCHANGELOG.mdsection. It accumulates until you're ready. - Merging the Release PR is the release. The bot tags
vX.Y.Zand creates a GitHub Release (marked prerelease). A follow-up job builds both channel zips, attaches them as release assets, and appends a "Clinic feedback addressed" section listing issues labeledclinic-feedbackclosed since the previous release. - Upload the attached
vaxlink-alpha-<v>.zipto the VaxLink Alpha listing. Send the release link to the pilot team.
Prod (when an alpha is confirmed good)¶
- Merge
dev → main(manifest no longer conflicts). - Download
vaxlink-prod-<v>.zipfrom the same GitHub Release and upload it to the VaxLink listing. - Edit the GitHub Release: untick "prerelease" to mark it as the latest full release.
- Comment the shipped version on each addressed issue; close after clinic confirmation.
Conventions the automation relies on¶
- Label feedback-driven issues
clinic-feedback— that's how the release notes table is generated. - Reference issues in commit subjects (
(#25)) so changelog entries link back. - Don't hand-edit
versionanywhere; the Release PR owns version bumps. (Hand-written changelog content above the generated sections is preserved — the historical 1.0.0–1.0.7 entries stay.) - Hand-curated "Clinic feedback addressed" tables in CHANGELOG.md remain worth writing for big pilot rounds: the automation lists the issues; the table tells the story with the nurses' words.
Sanity checks before any store upload¶
- Open the zip and confirm
manifest.jsonhas the rightname/version_namefor the listing. - Load the extracted zip unpacked and open the popup: badge present on alpha, absent on prod.
- No
.claude/,README.md,.gitignore, or test files inside the zip (the package script excludes them).