This document defines the release workflow for Ananke.
The project follows a structured branching and release strategy based on conventional commits and automated versioning.
mainis the stable production branchdevelopmentis the staging branch- feature work happens in dedicated branches
- releases and pre-releases are automated via npm scripts
- Version numbers are determined automatically using conventional commits
- Do not manually set version numbers
- Commit messages must follow the conventional commits specification
Examples:
feat: add new layout optionfix: correct mobile navigationdocs: update configuration guide
- Contains only stable, released code
- Updated only via rebase from
development - Tagged for official releases
- Acts as staging environment
- Receives all feature and fix changes
- Used for testing before release
- Hosts pre-releases
- All work must happen in dedicated branches
- Branch from
development - Naming is flexible but should be descriptive
Examples:
feature/header-redesignfix/mobile-menudocs/improve-installation
- All pull requests must target
development - No direct commits to
mainordevelopment
- Feature branches →
development: squash merge development→main: rebase
This ensures:
- clean history in
main - meaningful commit grouping in
development
Used for testing and validation.
npm run release:pre- Created from
development - Marked as pre-release
- Used for validation before stable release
npm run release- Created from
main - Tagged as official release
- Represents stable production state
Typical flow:
- Create feature branch from
development - Open PR → merge (squash) into
development - Test changes on
development - Create pre-release if needed
- Rebase
development→main - Run stable release on
main