Toolbox releases are managed through a structured version numbering scheme and a semi-automated release script. Once a tag is pushed to GitHub, the CI pipeline builds and submits the extension to the browser stores automatically — the only manual steps are tagging correctly and verifying that the commit is clean.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/toolbox-team/reddit-moderator-toolbox/llms.txt
Use this file to discover all available pages before exploring further.
Version format
Toolbox uses two parallel identifiers for each release:| Identifier | Format | Example | Where it appears |
|---|---|---|---|
Manifest version | major.minor.patch.build | 7.0.0.3 | manifest.json version field |
| Git tag (stable) | vMajor.minor.patch | v7.0.0 | Git tag |
| Git tag (beta) | vMajor.minor.patch-beta.build | v7.0.0-beta.3 | Git tag |
version_name | major.minor.patch "Release Name" | 7.0.0 "Delaying Donkey" | manifest.json version_name field, store listings |
1 whenever the major.minor.patch changes (i.e. on the first beta of a new feature release or any hotfix). Subsequent releases on the same major.minor.patch increment the build number, including the final stable promotion.
Naming convention
Release names follow the pattern adjective + animal, where both words start with the same letter (e.g. Delaying Donkey, Pensive Penguin). The name traditionally reflects something about the development cycle of that release. Names are only changed for major or minor version bumps — patch-level hotfixes reuse the existing name.Release timeline example
The table below illustrates how version numbers evolve across a typical release cycle:Manifest version | Git tag | Release type | Notes |
|---|---|---|---|
7.0.0.1 | v7.0.0-beta.1 | beta | Development of 7.0.0 begins |
7.0.0.2 | v7.0.0-beta.2 | beta | Iteration in the beta channel |
... | ... | beta | |
7.0.0.21 | v7.0.0-beta.21 | beta | Last beta release of 7.0.0 |
7.0.0.21 | v7.0.0 | stable | Same build promoted to stable |
7.0.1.1 | v7.0.1 | stable | Hotfix — no beta needed |
7.0.2.1 | v7.0.2 | stable | Another hotfix |
7.1.0.1 | v7.1.0-beta.1 | beta | Development of 7.1.0 begins |
The final beta build and the stable release share the same manifest
version (e.g. 7.0.0.21). The stable promotion is a separate tag on the same commit rather than a new build.Tagging a new release
Start from a clean master branch
Make sure your working directory has no uncommitted changes and that you are on the
master branch:git status should report a clean working tree before you proceed.Update Firefox minimum version
Open
firefox_manifest.json and update the strict_min_version field under browser_specific_settings.gecko to the current Firefox ESR version.Use the Firefox release calendar to find the latest ESR. This value must be kept current because AMO will eventually reject extensions where it is too low.Run the release script
- The new four-segment version number (e.g.
7.1.0.1). Rules to follow:- Only update
major.minor.patchif the previous release was a stable release (i.e. you are starting a new beta series). - If the previous release was a beta, increment the build number by 1 and keep
major.minor.patchthe same. - If the previous release was stable, reset the build number to 1.
- Only update
- The release name (e.g.
Pensive Penguin). Only change this for major or minor version bumps; patch releases and beta iterations reuse the existing name.
Verify the release commit
Inspect the commit produced by the script:The diff should contain only version string changes in the manifest files (
manifest.json, firefox_manifest.json). If any other files were changed, do not push — investigate and fix the issue first.What CI does after the tag push
Once your tag reaches GitHub, the pipeline:- Checks out the tagged commit and sets
BUILD_TYPEandBUILD_SHAappropriately. - Runs
npm run buildto producebuild/chromeandbuild/firefoxartifacts. - Submits the Chrome build to the Chrome Web Store.
- Submits the Firefox build to AMO (addons.mozilla.org).