Speller release procedure
Speller release step by step
TL;DR Push the tag first, then the branch
We assume you use Tower to do this (TODO: document for other git tools and for using the command line).
- Make sure your git working copy is up to date: commit your own changes, pull to last version, and push local commits to get a clean version.
- Update the speller version number constant
SPELLERVERSIONinconfigure.ac(GRAMCHECKVERSIONif releasing a new grammar checker version), using semantic versioning:- MAJOR version = incompatible changes, and going from beta to release (from
0.x.xto1.x.x) - MINOR version = new / more words
- PATCH version = actual bug fixes
- General rule: never touch the first number
- MAJOR version = incompatible changes, and going from beta to release (from
- Make sure that the new version is also recorded in
manifest.toml, either by editing manually, or (the safer option) by runningmakeafter changingconfigure.ac(both these files are found inlang-xxx, xxx being the ISO code of your language). - Go to Tower and commit the changes to both
configure.acandmanifest.tomlin one common commit, but do not push yet- This is what it should look like in Tower:

- This is what it should look like in Tower:
- create a new GIT tag for the release, as follows::
- click on the main branch in Tower (in the left menu). The
commit you just made for
configure.acandmanifest.tomlshould be on the top of the list. - Right-click on that commit version and choose Create New Tag
From.
This is what it should look like in Tower:

- In the Name field, write the name of the new release, using the following pattern:
“
speller-” (orgrammar-if that is what you release) plus language code plus/plusvplus the version string you just committed. If the newly committed version string is1.2.3and the language code isfao, you should add the tagspeller-fao/v1.2.3. And if you release a new grammar checker forsmj, with the new version1.0.3, the tag should begrammar-smj/v1.0.3:
- Click on Create Tag. The new wersion will now appear under
the Tags speller-xxx menu to the left (where xxx is your iso code) or grammar-xxx if it is a new grammar checker version:

- click on the main branch in Tower (in the left menu). The
commit you just made for
- Click on the usual Push button. Open Options to make sure
that
Push all tagsis chosen, and click Push - what it should look like in Tower:
- Now, the new speller version should be visible in divvun.uit.no within appr. 10 minutes, grammar checkers within 30-60 minutes.
Additional comments:
- check for non-nightly pushes of the released language in this channel: https://giella.zulipchat.com/#narrow/stream/124606-github/topic/pahkat.2Euit.2Eno-index.20.2F.20main
- Only when a non-nightly push of your language appears in the above
channel: bump the bugfix number, e.g. from
1.2.3t01.2.4in bothconfigure.acandmanifest.toml. This is to prepare for the next release (which normally is either a bugfix or a minor release), and will ensure that everyone on the nightly channel receive updates automatically. If the release didn’t go through, then see below on re-release before bumping the bugfix number.
CI + CD will do everything, including releasing the updated speller to the pahkat server, as long as the GIT tag is properly set.
The pahkat client installed as part of Divun Manager will then ensure that the new speller version is automatically installed on user machines on the next server poll.
Re-release on error
If something caused the CI or CD to fail, fix the the issue, and add the same GIT tag to the new revision, the one containing the bug fixes. You will be told there already exists an identical tag, so force push to override the old one.
As long as the new version did not reach users, there is no need to update the version string. But if the buggy version DID get released, then you MUST start from the top, and create a new version. That should be a bugfix version.
Tags, version strings and Divvun Manager channels
Divvun Manager has three channels to install from, selectable from the preferences (the actual text may be localised):
- Stable
- Beta
- Nightly
The channels are populated as follows:
Stable
Any keyboard or language model commit that is:
- git-tagged with version number at least
v1.0.0or higher (see above) - a similar version string in:
- spellers:
configure.ac&manifest.toml - keyboards:
*.kbdgen/targets/*.yaml
- spellers:
Beta
Any keyboard or language model commit that is:
- git-tagged with version number below
v1.0.0(see above) - a similar version string in:
- spellers:
configure.ac&manifest.toml - keyboards:
*.kbdgen/targets/*.yaml
- spellers:
Nightly/Developer
Any keyboard or language model commit pushed to GitHub. That is, Nightly will always contain the latest successful CI/CD build.
Automatic updates in Divvun Manager
When an update is released, in any of the channels according to the rules above, older packages will be updated automatically from the active channel as long as the version number is higher. The version number comparison does not take into account suffixes like -nightly, so to ensure proper automatic installation, make sure to bump the version number after a regular (beta or stable) release.