From caee98f7c305b6e4482ab9d4f06581e4fa307458 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 27 Feb 2026 04:32:47 +0000
Subject: [PATCH] Add comprehensive release process documentation
Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com>
---
docs/README.md | 8 +-
docs/RELEASE_PROCESS.md | 638 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 645 insertions(+), 1 deletion(-)
create mode 100644 docs/RELEASE_PROCESS.md
diff --git a/docs/README.md b/docs/README.md
index 03ddd74..550a4ec 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -45,9 +45,15 @@ This directory contains comprehensive documentation for the MokoCassiopeia Jooml
* **[Workflow Guide](WORKFLOW_GUIDE.md)** - Complete workflow reference
* Git branching strategy
* Development workflow
- * Release process
* Pull request guidelines
+* **[Release Process](RELEASE_PROCESS.md)** ⭐ - Complete release documentation
+ * Automated release workflow with GitHub Actions
+ * Manual release procedures
+ * Update server configuration
+ * Testing and rollback procedures
+ * Build scripts and tools
+
* **[Joomla Development Guide](JOOMLA_DEVELOPMENT.md)** - Joomla-specific development
* Testing with Codeception
* PHP quality checks (PHPStan, PHPCS)
diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md
new file mode 100644
index 0000000..f64b1ad
--- /dev/null
+++ b/docs/RELEASE_PROCESS.md
@@ -0,0 +1,638 @@
+
+
+# Release Process — MokoCassiopeia
+
+This document describes the complete release process for MokoCassiopeia Joomla template, including automated workflows and manual procedures.
+
+## Table of Contents
+
+1. [Overview](#overview)
+2. [Release Types](#release-types)
+3. [Automated Release Process](#automated-release-process)
+4. [Manual Release Process](#manual-release-process)
+5. [Update Server Configuration](#update-server-configuration)
+6. [Testing Releases](#testing-releases)
+7. [Rollback Procedures](#rollback-procedures)
+8. [Troubleshooting](#troubleshooting)
+
+---
+
+## Overview
+
+MokoCassiopeia uses an automated release system powered by GitHub Actions. The system:
+
+- **Builds** installation packages automatically
+- **Generates** checksums for security verification
+- **Creates** GitHub Releases with downloadable artifacts
+- **Updates** the Joomla update server (`updates.xml`) automatically
+- **Validates** package integrity with SHA-256 hashes
+
+### Key Components
+
+1. **Release Workflow** (`.github/workflows/release.yml`): Builds and publishes releases
+2. **Auto-Update SHA** (`.github/workflows/auto-update-sha.yml`): Updates `updates.xml` after release
+3. **Build Script** (`scripts/build-release.sh`): Local development builds
+4. **Update Server** (`updates.xml`): Joomla update server manifest
+
+---
+
+## Release Types
+
+### Patch Release (Third Digit)
+
+**Format**: `XX.XX.XX` → `XX.XX.XX+1` (e.g., `03.08.03` → `03.08.04`)
+
+**When to use**:
+- Bug fixes
+- Security patches
+- Documentation updates
+- Minor CSS/styling tweaks
+- No breaking changes
+
+**Example**: `03.08.03` → `03.08.04`
+
+### Minor Release (Second Digit)
+
+**Format**: `XX.XX.00` → `XX.XX+1.00` (e.g., `03.08.03` → `03.09.00`)
+
+**When to use**:
+- New features
+- New module/component overrides
+- Significant styling changes
+- Backward-compatible changes
+
+**Example**: `03.08.03` → `03.09.00`
+
+### Major Release (First Digit)
+
+**Format**: `XX.00.00` → `XX+1.00.00` (e.g., `03.08.03` → `04.00.00`)
+
+**When to use**:
+- Breaking changes
+- Major architecture changes
+- Joomla version upgrades
+- Complete redesigns
+
+**Example**: `03.08.03` → `04.00.00`
+
+---
+
+## Automated Release Process
+
+**Recommended for most releases**
+
+### Prerequisites
+
+- [ ] All changes merged to `main` branch
+- [ ] Tests passing
+- [ ] Documentation updated
+- [ ] CHANGELOG.md updated
+- [ ] Local testing completed
+
+### Step 1: Prepare Release Branch
+
+```bash
+# Create release branch
+git checkout main
+git pull
+git checkout -b release/03.08.04
+
+# Update version in templateDetails.xml
+# Edit: src/templates/templateDetails.xml
+# Change: 03.08.03
+# To: 03.08.04
+
+# Update CHANGELOG.md
+# Add new section:
+## [03.08.04] - 2026-02-27
+
+### Added
+- Feature descriptions
+
+### Fixed
+- Bug fix descriptions
+
+### Changed
+- Change descriptions
+
+# Commit changes
+git add src/templates/templateDetails.xml CHANGELOG.md
+git commit -m "chore: Prepare release 03.08.04"
+git push origin release/03.08.04
+```
+
+### Step 2: Create Pull Request
+
+1. Go to GitHub repository
+2. Click "Pull requests" → "New pull request"
+3. Base: `main`, Compare: `release/03.08.04`
+4. Title: `Release 03.08.04`
+5. Description: Copy relevant CHANGELOG entries
+6. Create pull request
+7. Review and merge
+
+### Step 3: Create and Push Tag
+
+```bash
+# Switch to main and pull changes
+git checkout main
+git pull
+
+# Create tag
+git tag 03.08.04
+
+# Push tag (triggers release workflow)
+git push origin 03.08.04
+```
+
+### Step 4: Monitor Automated Process
+
+1. **Go to GitHub Actions tab**
+2. **Watch "Create Release" workflow**:
+ - Builds package
+ - Generates checksums
+ - Creates GitHub Release
+ - Uploads artifacts
+
+3. **Watch "Auto-Update SHA Hash" workflow**:
+ - Downloads release package
+ - Calculates SHA-256 hash
+ - Updates `updates.xml`
+ - Commits to main branch
+
+### Step 5: Verify Release
+
+1. **Check GitHub Release**:
+ - Go to Releases tab
+ - Verify release `03.08.04` exists
+ - Download ZIP package
+ - Verify checksums match
+
+2. **Check updates.xml**:
+ ```bash
+ git pull
+ cat updates.xml
+ ```
+ - Verify version is `03.08.04`
+ - Verify download URL is correct
+ - Verify SHA-256 hash is present
+
+3. **Test Joomla Update**:
+ - Install previous version in Joomla
+ - Go to Extensions → Update
+ - Verify update is detected
+ - Perform update
+ - Verify template works correctly
+
+---
+
+## Manual Release Process
+
+**Use when automation fails or for local testing**
+
+### Step 1: Prepare Repository
+
+```bash
+# Update version numbers
+# Edit: src/templates/templateDetails.xml
+# Edit: CHANGELOG.md
+
+# Commit changes
+git add src/templates/templateDetails.xml CHANGELOG.md
+git commit -m "chore: Prepare release 03.08.04"
+git push
+```
+
+### Step 2: Build Package Locally
+
+```bash
+# Run build script
+./scripts/build-release.sh 03.08.04
+
+# Output will be in build/ directory:
+# - mokocassiopeia-src-03.08.04.zip
+# - mokocassiopeia-src-03.08.04.zip.sha256
+# - mokocassiopeia-src-03.08.04.zip.md5
+```
+
+### Step 3: Test Package
+
+```bash
+# Install in Joomla test environment
+# Extensions → Manage → Install → Upload Package File
+# Select: build/mokocassiopeia-src-03.08.04.zip
+
+# Test all features:
+# - Template displays correctly
+# - Module overrides work
+# - Alternative layouts selectable
+# - Dark mode works
+# - No JavaScript errors
+```
+
+### Step 4: Create GitHub Release
+
+1. **Go to GitHub Releases**
+2. **Click "Create a new release"**
+3. **Tag**: `03.08.04` (create new tag)
+4. **Release title**: `Release 03.08.04`
+5. **Description**: Copy from CHANGELOG.md
+6. **Upload files**:
+ - `mokocassiopeia-src-03.08.04.zip`
+ - `mokocassiopeia-src-03.08.04.zip.sha256`
+ - `mokocassiopeia-src-03.08.04.zip.md5`
+7. **Publish release**
+
+### Step 5: Update updates.xml Manually
+
+```bash
+# Extract SHA-256 hash
+cat build/mokocassiopeia-src-03.08.04.zip.sha256
+# Example output: a1b2c3d4e5f6...
+
+# Edit updates.xml
+# Update 03.08.04
+# Update 2026-02-27
+# Update https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/download/03.08.04/mokocassiopeia-src-03.08.04.zip
+# Update sha256:a1b2c3d4e5f6...
+
+# Commit and push
+git add updates.xml
+git commit -m "chore: Update updates.xml for release 03.08.04"
+git push
+```
+
+---
+
+## Update Server Configuration
+
+### updates.xml Structure
+
+```xml
+
+
+ MokoCassiopeia
+ Moko Consulting's site template based on Cassiopeia.
+ mokocassiopeia
+ template
+ site
+
+ 03.08.04
+ 2026-02-27
+ Jonathan Miller || Moko Consulting
+ hello@mokoconsulting.tech
+ (C)GNU General Public License Version 3 - 2026 Moko Consulting
+
+ https://github.com/mokoconsulting-tech/MokoCassiopeia
+
+
+ https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/download/03.08.04/mokocassiopeia-src-03.08.04.zip
+ sha256:a1b2c3d4e5f6...
+
+
+
+ stable
+
+
+ Moko Consulting
+ https://www.mokoconsulting.tech
+
+
+
+
+```
+
+### Hosting Update Server
+
+The `updates.xml` file is hosted directly on GitHub:
+
+**URL**: `https://raw.githubusercontent.com/mokoconsulting-tech/MokoCassiopeia/main/updates.xml`
+
+This URL is configured in `src/templates/templateDetails.xml`:
+
+```xml
+
+
+ https://raw.githubusercontent.com/mokoconsulting-tech/MokoCassiopeia/main/updates.xml
+
+
+```
+
+---
+
+## Testing Releases
+
+### Pre-Release Testing
+
+```bash
+# 1. Build package locally
+./scripts/build-release.sh
+
+# 2. Set up Joomla test environment
+# - Clean Joomla 5.x installation
+# - Previous MokoCassiopeia version installed
+
+# 3. Test current version features
+# - All module overrides
+# - Alternative layouts
+# - Dark mode toggle
+# - Responsive behavior
+
+# 4. Install new package
+# Extensions → Manage → Install → Upload Package
+
+# 5. Verify upgrade process
+# - No errors during installation
+# - Settings preserved
+# - Custom modifications retained
+
+# 6. Test new features
+# - New functionality works
+# - Bug fixes applied
+# - No regressions
+```
+
+### Update Server Testing
+
+```bash
+# 1. Install previous version in Joomla
+# 2. Go to: Extensions → Update
+# 3. Click "Find Updates"
+# 4. Verify update shows: "MokoCassiopeia 03.08.04"
+# 5. Click "Update"
+# 6. Verify successful update
+# 7. Test template functionality
+```
+
+### Checklist
+
+- [ ] Package installs without errors
+- [ ] Template activates correctly
+- [ ] All module overrides work
+- [ ] Alternative layouts selectable
+- [ ] Dark mode functions
+- [ ] Responsive on mobile/tablet/desktop
+- [ ] No JavaScript console errors
+- [ ] No PHP errors in Joomla logs
+- [ ] Update server detects new version
+- [ ] Update process completes successfully
+
+---
+
+## Rollback Procedures
+
+### Rollback Release
+
+If a release has critical issues:
+
+1. **Delete GitHub Release**:
+ - Go to Releases
+ - Click release to delete
+ - Click "Delete"
+ - Confirm deletion
+
+2. **Delete Git Tag**:
+ ```bash
+ # Delete local tag
+ git tag -d 03.08.04
+
+ # Delete remote tag
+ git push --delete origin 03.08.04
+ ```
+
+3. **Revert updates.xml**:
+ ```bash
+ # Revert to previous version
+ git revert
+ git push
+ ```
+
+4. **Notify Users**:
+ - Create GitHub issue explaining the problem
+ - Pin the issue
+ - Provide rollback instructions for users
+
+### User Rollback Instructions
+
+For users who installed the problematic version:
+
+1. **Download previous version** from GitHub Releases
+2. **Uninstall current version**:
+ - Extensions → Manage → Manage
+ - Find MokoCassiopeia
+ - Click "Uninstall"
+3. **Install previous version**:
+ - Extensions → Manage → Install
+ - Upload previous version ZIP
+4. **Verify functionality**
+
+---
+
+## Troubleshooting
+
+### Release Workflow Fails
+
+**Problem**: Build fails with "rsync: command not found"
+
+**Solution**: The GitHub Actions runner always has rsync installed. If this occurs, check the workflow file syntax.
+
+**Problem**: ZIP creation fails
+
+**Solution**: Check that `src/templates/` and `src/media/` directories exist and contain files.
+
+**Problem**: Version update fails
+
+**Solution**: Verify `sed` commands in workflow match actual XML structure.
+
+### Auto-Update SHA Fails
+
+**Problem**: Cannot download release package
+
+**Solution**:
+- Verify release was published (not draft)
+- Check package naming: `mokocassiopeia-src-{version}.zip`
+- Verify release tag format
+
+**Problem**: SHA-256 hash mismatch
+
+**Solution**:
+- Package may have been modified after calculation
+- Re-run the workflow manually
+- Verify package integrity
+
+**Problem**: Commit fails
+
+**Solution**:
+- Check workflow has write permissions
+- Verify no branch protection rules blocking bot commits
+
+### Manual Build Issues
+
+**Problem**: `./scripts/build-release.sh: Permission denied`
+
+**Solution**:
+```bash
+chmod +x scripts/build-release.sh
+./scripts/build-release.sh
+```
+
+**Problem**: Build directory exists
+
+**Solution**:
+```bash
+rm -rf build/
+./scripts/build-release.sh
+```
+
+### Update Server Issues
+
+**Problem**: Joomla doesn't detect update
+
+**Solution**:
+1. Check `updates.xml` is accessible:
+ ```bash
+ curl https://raw.githubusercontent.com/mokoconsulting-tech/MokoCassiopeia/main/updates.xml
+ ```
+2. Verify version number is higher than installed version
+3. Clear Joomla cache: System → Clear Cache
+4. Check update URL in templateDetails.xml
+
+**Problem**: Update fails with "Invalid package"
+
+**Solution**:
+- Verify SHA-256 hash matches
+- Re-download package and check integrity
+- Verify package structure is correct
+
+---
+
+## Best Practices
+
+### Version Numbering
+
+- **Always increment** version numbers sequentially
+- **Never reuse** version numbers
+- **Use consistent** format: `XX.XX.XX`
+
+### Changelog
+
+- **Update before** release
+- **Include all changes** since last version
+- **Categorize** changes: Added, Changed, Fixed, Removed
+- **Write clear descriptions** for users
+
+### Testing
+
+- **Test locally** before pushing tag
+- **Test update process** from previous version
+- **Test on clean** Joomla installation
+- **Test different** configurations
+
+### Communication
+
+- **Announce releases** on GitHub Discussions
+- **Document breaking changes** clearly
+- **Provide migration guides** for major changes
+- **Respond promptly** to issue reports
+
+---
+
+## Quick Reference
+
+### Automated Release Commands
+
+```bash
+# 1. Create release branch
+git checkout -b release/03.08.04
+
+# 2. Update version and CHANGELOG
+# (edit files)
+
+# 3. Commit and push
+git add .
+git commit -m "chore: Prepare release 03.08.04"
+git push origin release/03.08.04
+
+# 4. Create and merge PR (via GitHub UI)
+
+# 5. Create and push tag
+git checkout main
+git pull
+git tag 03.08.04
+git push origin 03.08.04
+
+# 6. Wait for automation to complete
+```
+
+### Manual Release Commands
+
+```bash
+# Build locally
+./scripts/build-release.sh 03.08.04
+
+# Test installation
+# (manual Joomla testing)
+
+# Create release on GitHub
+# (via GitHub UI)
+
+# Update updates.xml
+# (edit file with SHA-256)
+git add updates.xml
+git commit -m "chore: Update updates.xml for 03.08.04"
+git push
+```
+
+---
+
+## Related Documentation
+
+- **Build Scripts**: [scripts/README.md](../scripts/README.md)
+- **Workflow Guide**: [WORKFLOW_GUIDE.md](WORKFLOW_GUIDE.md)
+- **Contributing**: [CONTRIBUTING.md](../CONTRIBUTING.md)
+- **Changelog**: [CHANGELOG.md](../CHANGELOG.md)
+
+---
+
+## Support
+
+- **Issues**: [GitHub Issues](https://github.com/mokoconsulting-tech/MokoCassiopeia/issues)
+- **Discussions**: [GitHub Discussions](https://github.com/mokoconsulting-tech/MokoCassiopeia/discussions)
+- **Email**: hello@mokoconsulting.tech
+
+---
+
+## License
+
+Copyright (C) 2026 Moko Consulting
+
+This documentation is licensed under GPL-3.0-or-later.