Update all markdown files: README, CHANGELOG, CLAUDE.md, index files, templates, issue templates, and inline documentation.
5.5 KiB
Contributing to Moko Consulting Projects
Thank you for your interest in contributing. All Moko Consulting repositories follow this universal workflow and version policy.
Branching Workflow
feature/* ──PR──> dev ──draft PR──> (renamed to rc) ──merge──> main
Step by step
-
Create a feature branch from
dev:git checkout dev && git pull git checkout -b feature/my-change -
Work and commit on your feature branch. Push to origin.
-
Open a PR:
feature/my-change→dev. After review and checks, merge it. -
When ready for release, open a draft PR:
dev→main.- This automatically renames the source branch to
rc(release candidate) - An RC pre-release is built and uploaded
- This automatically renames the source branch to
-
Alpha and beta branches are created by manually renaming the branch before the RC stage:
- Rename
devtoalphafor early testing → alpha pre-release is built - Rename
alphatobetafor feature-complete testing → beta pre-release is built - When the draft PR is created, the branch is renamed to
rc
- Rename
-
Once PR checks pass on the
rcbranch, mark the PR as ready and merge tomain. -
Merging to main triggers the stable release pipeline:
- Minor version bump (e.g.,
02.09.xx→02.10.00) - Stability suffix stripped (clean version)
- Gitea release created with ZIP/tar.gz packages
updates.xmlupdated (Joomla extensions)devbranch recreated frommain
- Minor version bump (e.g.,
Branch summary
| Branch | Purpose | Created by |
|---|---|---|
feature/* |
New features and fixes | Developer |
dev |
Integration branch | Auto-recreated after release |
alpha |
Alpha pre-release testing | Manual rename from dev |
beta |
Beta pre-release testing | Manual rename from alpha |
rc |
Release candidate | Auto-renamed on draft PR to main |
main |
Stable releases | Protected, merge only |
version/XX.YY.ZZ |
Archived release snapshots | Auto-created by CI |
Protected branches
| Branch | Direct push | Merge via |
|---|---|---|
main |
Blocked (CI bot whitelisted) | PR merge only |
dev |
Blocked (CI bot whitelisted) | PR merge from feature/* |
rc |
Blocked (CI bot whitelisted) | Auto-created on draft PR |
alpha |
Blocked (CI bot whitelisted) | Manual rename |
beta |
Blocked (CI bot whitelisted) | Manual rename |
feature/* |
Open | N/A (source branch) |
Version Policy
Format
All versions use XX.YY.ZZ — three two-digit segments, zero-padded:
- XX — Major version (breaking changes)
- YY — Minor version (new features, bumped on release to main)
- ZZ — Patch version (auto-incremented on every push to dev/feature branches)
Rollover: patch 99 → 00 increments minor; minor 99 → 00 increments major.
Stability suffixes
Each branch appends a suffix to indicate stability:
| Branch | Suffix | Example |
|---|---|---|
main |
(none) | 02.09.00 |
dev |
-dev |
02.09.01-dev |
feature/* |
-dev |
02.09.01-dev |
alpha |
-alpha |
02.09.01-alpha |
beta |
-beta |
02.09.01-beta |
rc |
-rc |
02.09.01-rc |
Auto version bump
On every push to dev, feature/*, or patch/*:
- Patch version incremented
- Stability suffix
-devapplied - All version-bearing files updated (manifests, CHANGELOG, PHP headers, etc.)
- Commit created with
[skip ci]to avoid loops
Release version flow
Version bumps happen at specific release events:
| Event | Bump | Example |
|---|---|---|
| Feature merged to dev | Patch bump after dev release | 02.09.01-dev → release → 02.09.02-dev |
| Dev promoted to RC | Minor bump | 02.09.02-dev → 02.10.00-rc |
| RC merged to main | Minor bump | 02.10.00-rc → 02.11.00 (stable) |
| Dev recreated from main | Patch bump | 02.11.00 → 02.11.01-dev |
Release stream copies
When a higher-stability release is published, copies are created for all lesser streams with the same base version:
- RC
02.10.00-rcalso creates:02.10.00-dev,02.10.00-alpha,02.10.00-beta - Stable
02.11.00also creates:02.11.00-dev,02.11.00-alpha,02.11.00-beta,02.11.00-rc
This ensures Joomla sites on ANY stability channel see the update (Joomla only shows versions higher than what's installed).
Version files
The version tools update all files containing version stamps:
.mokogitea/manifest.xml(canonical source)- Joomla XML manifests (
<version>tag) README.md,CHANGELOG.md(VERSION:pattern)package.json,pyproject.toml- Any text file with a
VERSION: XX.YY.ZZlabel
Files synced from other repos (with a # REPO: header) are not touched.
Code Standards
- PHP: PSR-12, tabs for indentation
- Copyright: all files must include the Moko Consulting copyright header
- License: SPDX identifier
GPL-3.0-or-later(or as specified per repo) - Attribution: use
Authored-by: Moko Consultingin commits, not individual names
Commit Messages
Use conventional commit format:
type(scope): short description
Optional body with context.
Authored-by: Moko Consulting
Types: feat, fix, chore, docs, style, refactor, test, ci
Special flags in commit messages:
[skip ci]— skip all CI workflows[skip bump]— skip auto version bump only
Reporting Issues
Use the repository's issue tracker with the appropriate template.
Moko Consulting hello@mokoconsulting.tech