# Release Management COSEDA uses two Homebrew tracks: - `coseda`: stable releases from version tags. - `coseda-nightly`: beta builds from the development branch. ## Branches Use feature branches for ordinary work. Merge tested changes into `develop` when they are ready for beta testing. Merge `develop` into `main` only when the current state is ready to become the next stable release. Recommended flow: ```bash git switch main git pull git switch -c feature/my-change ``` After review and testing, merge the feature branch into `develop`. Nightly Homebrew builds are published from scheduled or manual GitLab pipelines on `develop`. When a stable release is ready: ```bash git switch main git merge --ff-only develop git tag 0.9.8 git push origin main 0.9.8 ``` The tag pipeline updates the stable `coseda` Homebrew formula. Do not tag a commit unless it should become the user-facing stable version. ## Homebrew The stable formula is updated by the existing tag pipeline. The nightly formula is updated by the `bump-homebrew-nightly-tap` CI job. It creates or updates `Formula/coseda-nightly.rb` in the Homebrew tap using the exact Git commit archive from the `develop` pipeline. Set up a GitLab scheduled pipeline on the `develop` branch to publish nightly builds automatically. A manual web pipeline on `develop` can also run the nightly job. The stable and nightly formulas intentionally conflict because both install the `coseda` command and app bundle. Users should switch tracks with: ```bash brew uninstall coseda brew install coseda-nightly ``` or: ```bash brew uninstall coseda-nightly brew install coseda ```