This document describes how to create releases for the Matrix Digital Rain project.
The Matrix Digital Rain project uses two methods for creating releases:
- GitHub Actions Workflow - Automated releases via GitHub Actions
- Local Script - Manual releases using the
create-release.shscript
- Git repository with appropriate permissions
- For GitHub releases: Write access to the repository
- For local releases: Bash shell and
zipcommand
GitHub Actions provides an automated way to create releases with proper tagging and GitHub integration.
- Go to the repository on GitHub
- Click on "Actions" tab
- Select "Create Release" workflow
- Click "Run workflow" button
- Enter the version number (e.g.,
1.0.0) - Optionally mark as pre-release
- Click "Run workflow"
The workflow will:
- Update the VERSION file
- Create and push a git tag
- Generate a changelog from git history
- Package the web application
- Create a GitHub release with the package
- Deploy to GitHub Pages at
https://ap0ught.github.io/matrix/vX.Y.Z/
# Update VERSION file
echo "1.0.0" > VERSION
git add VERSION
git commit -m "Release version 1.0.0"
# Create and push tag
git tag -a v1.0.0 -m "Release 1.0.0"
git push origin v1.0.0The release workflow will automatically trigger and create the release.
The local script creates a release package without GitHub integration. This is useful for:
- Testing the release process
- Creating distribution packages for other platforms
- Internal releases
# Make the script executable (first time only)
chmod +x create-release.sh
# Run the script
./create-release.shThe script will:
- Read the current version from VERSION file
- Prompt for a new version (or use current)
- Package the web application files
- Create a
.ziparchive - Generate SHA-256 checksum
The script creates:
matrix-{version}.zip- Release packagematrix-{version}.zip.sha256- Checksum file
# Extract the release
unzip matrix-1.0.0.zip -d matrix-test
# Start a server
cd matrix-test
python3 -m http.server 8000
# Open http://localhost:8000 in your browserEach release includes:
matrix-{version}.zip
├── index.html # Main HTML entry point
├── README.md # User documentation
├── LICENSE # Project license
├── VERSION # Version number
├── js/ # JavaScript modules
│ ├── main.js
│ ├── config.js
│ ├── webgl/ # WebGL renderer
│ └── webgpu/ # WebGPU renderer
├── lib/ # Third-party libraries
│ ├── regl.min.js
│ └── gl-matrix.js
├── assets/ # Fonts and textures
│ └── *_msdf.png
└── shaders/ # GLSL and WGSL shaders
├── glsl/
└── wgsl/
The project uses Semantic Versioning:
- MAJOR: Incompatible API changes or major feature overhauls
- MINOR: New features in a backward-compatible manner
- PATCH: Backward-compatible bug fixes
Examples:
1.0.0- First stable release1.1.0- New Matrix version added1.1.1- Bug fix for shader rendering
The release workflow (.github/workflows/release.yml) performs:
-
Version Determination
- Manual: Uses input version
- Tag push: Extracts from tag name
-
Changelog Generation
- Lists commits since previous tag
- Includes installation instructions
-
Package Creation
- Copies web application files
- Creates
.ziparchive - Generates SHA-256 checksum
-
Release Publication
- Creates GitHub release
- Uploads package and checksum
- Adds changelog as release notes
The create-release.sh script:
- Reads current VERSION file
- Prompts for new version
- Updates VERSION file
- Packages application files
- Creates archive and checksum
- Displays installation instructions
Problem: Workflow fails when pushing a tag
Solution: Ensure the VERSION file matches the tag version, or let the workflow update it
Problem: zip or sha256sum not found
Solutions:
- Install zip:
sudo apt-get install zip(Ubuntu/Debian) - macOS uses
shasum -a 256automatically - Windows: Use Git Bash or WSL
Problem: Archive is unexpectedly large
Solution: Check for unwanted files:
# Ensure .gitignore excludes build artifacts
git status --ignored-
Test before releasing
- Run the local script first
- Test the extracted package
- Verify all features work
-
Write clear release notes
- Describe major changes
- List new features
- Document breaking changes
-
Use semantic versioning
- Follow MAJOR.MINOR.PATCH format
- Be consistent with version increments
-
Verify checksums
- Always include SHA-256 checksums
- Document checksum verification in release notes
The README includes a release badge that automatically displays the latest version:
[](https://github.com/ap0ught/matrix/releases/latest)This badge updates automatically when new releases are created.
Each release is automatically deployed to GitHub Pages at a version-specific URL:
- Main site (latest master): https://ap0ught.github.io/matrix/
- Versioned releases: https://ap0ught.github.io/matrix/vX.Y.Z/
- Version archive: https://ap0ught.github.io/matrix/versions/
This allows users to:
- Access specific versions via permanent URLs
- Compare different versions side-by-side
- Reference specific versions in documentation
- Test releases without downloading
For more details, see GitHub Pages Deployment Documentation.