docs: update version management for auto-bump and multi-channel updates.xml
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
42
.github/CLAUDE.md
vendored
42
.github/CLAUDE.md
vendored
@@ -115,38 +115,34 @@ BRIEF: One-line description
|
|||||||
|
|
||||||
**`README.md` is the single source of truth for the repository version.**
|
**`README.md` is the single source of truth for the repository version.**
|
||||||
|
|
||||||
- **Bump the patch version on every PR** — increment `XX.YY.ZZ` (e.g. `01.02.03` → `01.02.04`) in `README.md` before opening the PR; the `sync-version-on-merge` workflow propagates it automatically to all badges and `FILE INFORMATION` headers on merge to `main`.
|
- **Patch version is auto-bumped by the release workflow** — `release.yml` reads the current version from `README.md`, increments the patch (`XX.YY.ZZ` → `XX.YY.(ZZ+1)`), updates `README.md`, `templateDetails.xml`, and the matching channel in `updates.xml`, commits, pushes, then builds the ZIP. Manual bumping is no longer required.
|
||||||
- The `VERSION: XX.YY.ZZ` field in `README.md` governs all other version references.
|
- The `VERSION: XX.YY.ZZ` field in `README.md` governs all other version references.
|
||||||
- Version format is zero-padded semver: `XX.YY.ZZ` (e.g. `01.02.03`).
|
- Version format is zero-padded semver: `XX.YY.ZZ` (e.g. `01.02.03`).
|
||||||
- Never hardcode a specific version in document body text — use the badge or FILE INFORMATION header only.
|
- Never hardcode a specific version in document body text — use the badge or FILE INFORMATION header only.
|
||||||
|
|
||||||
### Joomla Version Alignment
|
### Joomla Version Alignment
|
||||||
|
|
||||||
The version in `README.md` **must always match** the `<version>` tag in `manifest.xml` and the latest entry in `updates.xml`. The `make release` command / release workflow updates all three automatically.
|
The version in `README.md` **must always match** the `<version>` tag in `templateDetails.xml` and the matching channel entry in `updates.xml`. The release workflow updates all three automatically.
|
||||||
|
|
||||||
|
### Multi-Channel updates.xml
|
||||||
|
|
||||||
|
`updates.xml` contains separate `<update>` blocks per stability channel (development, alpha, beta, rc, stable). Each release workflow only modifies its own channel using targeted Python regex replacement — other channels are preserved untouched. Joomla filters by the user's "Minimum Stability" setting.
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<!-- In manifest.xml — must match README.md version -->
|
|
||||||
<version>01.02.04</version>
|
|
||||||
|
|
||||||
<!-- In updates.xml — prepend a new <update> block for every release.
|
|
||||||
Note: the backslash in version="4\.[0-9]+" is a literal backslash character
|
|
||||||
in the XML attribute value. Joomla's update server treats the value as a
|
|
||||||
regular expression, so \. matches a literal dot. -->
|
|
||||||
<updates>
|
<updates>
|
||||||
<update>
|
<!-- 1. DEVELOPMENT --> <update>...<tag>development</tag>...</update>
|
||||||
<name>{{EXTENSION_NAME}}</name>
|
<!-- 2. ALPHA --> <update>...<tag>alpha</tag>...</update>
|
||||||
<version>01.02.04</version>
|
<!-- 3. BETA --> <update>...<tag>beta</tag>...</update>
|
||||||
<downloads>
|
<!-- 4. RC --> <update>...<tag>rc</tag>...</update>
|
||||||
<downloadurl type="full" format="zip">
|
<!-- 5. STABLE --> <update>...<tag>stable</tag>...</update>
|
||||||
https://git.mokoconsulting.tech/MokoConsulting/MokoCassiopeia/releases/download/01.02.04/{{EXTENSION_ELEMENT}}-01.02.04.zip
|
|
||||||
</downloadurl>
|
|
||||||
</downloads>
|
|
||||||
<targetplatform name="joomla" version="4\.[0-9]+" />
|
|
||||||
</update>
|
|
||||||
<!-- … older entries preserved below … -->
|
|
||||||
</updates>
|
</updates>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Key rules:**
|
||||||
|
- SHA-256 must be raw hex (no `sha256:` prefix)
|
||||||
|
- Version format must be `XX.YY.ZZ`, not tag names like `v01`
|
||||||
|
- Download URLs must point to Gitea (not GitHub) for all pre-release channels
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Joomla Extension Structure
|
## Joomla Extension Structure
|
||||||
@@ -286,11 +282,11 @@ Approved prefixes: `dev/` · `rc/` · `version/` · `patch/` · `copilot/` · `d
|
|||||||
| Change type | Documentation to update |
|
| Change type | Documentation to update |
|
||||||
|-------------|------------------------|
|
|-------------|------------------------|
|
||||||
| New or renamed PHP class/method | PHPDoc block; `docs/api/` entry |
|
| New or renamed PHP class/method | PHPDoc block; `docs/api/` entry |
|
||||||
| New or changed manifest.xml | Update `updates.xml` version; bump README.md version |
|
| New or changed manifest.xml | Release workflow auto-bumps version across README.md, templateDetails.xml, and updates.xml |
|
||||||
| New release | Prepend `<update>` block to `updates.xml`; update CHANGELOG.md; bump README.md version |
|
| New release | Trigger `release.yml` — auto-bumps patch, builds ZIP, updates matching channel in `updates.xml` |
|
||||||
| New or changed workflow | `docs/workflows/<workflow-name>.md` |
|
| New or changed workflow | `docs/workflows/<workflow-name>.md` |
|
||||||
| Any modified file | Update the `VERSION` field in that file's `FILE INFORMATION` block |
|
| Any modified file | Update the `VERSION` field in that file's `FILE INFORMATION` block |
|
||||||
| **Every PR** | **Bump the patch version** — increment `XX.YY.ZZ` in `README.md`; `sync-version-on-merge` propagates it |
|
| **Every release** | **Patch auto-bumped** by `release.yml` — no manual version bump needed |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user