Repository navigation
Version: MAJOR.MINOR.PATCH for v2 and basic, bump rule and CI check #230
Copy link
Copy link
Closed
Labels
uniRelease naming and management, common across the repositoriesRelease naming and management, common across the repositories
Description
Goal
Move decoder from the 2.xx scheme (+0.01 per pull request) to MAJOR.MINOR.PATCH, make the legacy basic version canonical, and add a CI check that a code change comes with a new version.
Changes
v2,android/app/build.gradle:versionName "2.17"→ the next version in the new form (2.17.1for a fix,2.18.0for a feature) in the pull request that next changes the app.versionCodestays a separate counter (+1 per version, now 42).- Version numbers are no longer reserved for open pull requests (2.14 and 2.18 for fix: streams above 1080p in the single view (#166) #220): each pull request takes the next number by the rule when it is merged.
basic,app/build.gradle:1.07.1has a leading zero; the canonical form is1.7.1. Its next version is1.7.2(or1.8.0).versionCodekeeps growing as before.- Release title (Release: "latest" titled "Decoder <version>", moving tag, SHA256SUMS, Telegram on a version change #229):
Decoder 2.17.1etc.; the notes line forbasicshows1.7.x. - Docs:
docs/testing.md:50-51("v2is 2.xx", "+0.01", "basickeeps its 1.07.x line"): the rule below instead. CHANGELOG.md(Add CHANGELOG.md with the version history #228): old headings stay as they were released (2.00…2.17,1.07,1.07.1); the header says that later versions useMAJOR.MINOR.PATCH.
Version rule
Versions are MAJOR.MINOR.PATCH, numbers without leading zeros (the common rule of the OpenIPC repositories maintained together with vtesse, vectis, camex, cerberus and decoder):
- PATCH: fixes and small changes. MINOR: a new feature (option, format field, codec/protocol, platform). MAJOR: a large update or an incompatible change (arguments, config format, protocol, default behaviour), only when the maintainer decides.
- Every pull request that changes code or the build bumps the version as its last commit before the merge, together with its
CHANGELOG.mdsection. Pull requests with only docs, CI, tests or images do not. - The version lives in one place,
android/app/build.gradle (versionName); the build, CI and the release read it from there, not from git tags.
CI check
A pull-request job that fails when code changed but the version did not (checkout with fetch-depth: 0):
ver() { sed -n 's/.*versionName "\(.*\)".*/\1/p' | head -1; }
base=origin/v2
changed=$(git diff --name-only "$base"...HEAD -- android)
old=$(git show "$base:android/app/build.gradle" | ver)
new=$(ver < android/app/build.gradle)
echo "$new" | grep -Eq '^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$' || { echo "::error::version $new is not MAJOR.MINOR.PATCH"; exit 1; }
if [ -n "$changed" ] && [ "$old" = "$new" ]; then
echo "::error::code changed, version still $old; bump it (PATCH or MINOR) and add a CHANGELOG.md section:"
echo "$changed"; exit 1
fiAlso check that the new version is greater than the old one (sort -V). Describe the rule where the project documents its releases (all three README files in one commit, or docs/).
On basic the same job with base=origin/basic, the paths app and build.gradle, and app/build.gradle.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
uniRelease naming and management, common across the repositoriesRelease naming and management, common across the repositories
Activity
ci: check-version.sh reads the one versionName assignment, 2.17.0 is …
Merge pull request #232 from OpenIPC/ci/version-check
Merge pull request #233 from OpenIPC/chore/basic-version-1.7.1
compot-dev commentedon Oct 17, 2026
Done: #232 (
v2:MAJOR.MINOR.PATCHrule indocs/testing.md,.github/check-version.shin a pull-request job,CHANGELOG.mdheader) and #233 (basic:versionName1.7.1).v2stays at 2.17 until the next app change, which takes 2.17.1 or 2.18.0 with itsCHANGELOG.mdsection; open pull requests (#220) take the next number when they are merged.