Conventions for HumHub-operated module repositories on GitHub / GitLab. Custom modules outside HumHub's organisations can ignore this — it's a description of how the official modules are organised.
master— current stable release. Bugfixes and small enhancements land here when a public release is planned shortly.develop— exists only when a larger change is in progress against a future module version line. Not all modules have it; when it does exist, it can lag behind master, so rebase or pull before committing.
When in doubt, target master.
Modules follow semantic versioning (MAJOR.MINOR.PATCH), independent of HumHub core's own versioning.
| Change | Version bump |
|---|---|
| Bug fix, minor enhancement | PATCH |
New feature, bump of humhub.minVersion |
MINOR or MAJOR |
| Breaking change to the module's public API | MAJOR |
The version in module.json is only bumped when a release is actually cut — unreleased work lives under the (Unreleased) section of docs/CHANGELOG.md with the same version still set.
If your change relies on a feature only available in a newer HumHub core, bump humhub.minVersion in module.json and bump at least the MINOR version of the module. A PATCH bump is not enough.
If the required core version is not yet released, the change must go onto a develop branch — the module repo gets a develop branch (creating one if missing) and work targets it.
Note the required core version in docs/CHANGELOG.md under the upcoming version.
- (If
developexists) mergedevelopintomaster. - Replace
(Unreleased)indocs/CHANGELOG.mdwith today's date — match the format used by the previous entry. - Verify
versioninmodule.jsonmatches the topmost CHANGELOG entry. - Commit
Release <version>and push. - Create a GitHub release with tag
v<version>and title<version>(nov). Body = the CHANGELOG section.
The marketplace upload runs automatically via the module's GitHub Actions workflow on the release event.
For modules whose translations are managed via translate.humhub.org:
- Do not run
yii message/extract-moduleto regenerate message files — the translation platform owns them. - All
messages/*changes must come from translate.humhub.org. Manual edits get overwritten on the next sync.