Thanks for your interest in contributing! Here's how to get started.
- Fork the repo (or branch directly if you're a named contributor)
- Clone and install dependencies:
npm install
- Start the dev server:
npm run dev
- Run tests:
npm test
- Branch off
staging(notmain) - Submit your PR back to
staging - Stable versions are merged from
staging→mainby the maintainer, following a version bump and release notes update
The release workflow (.github/workflows/release.yml) runs automatically on push to main or staging, and can be triggered manually via workflow_dispatch (restricted to main/staging — other branches are rejected).
It has 3 jobs:
- Validate — reads the version from
package.json, checks thatRELEASE_NOTES.mdhas content, and ensures the git tag doesn't already exist. - Build — runs in parallel on macOS (arm64) and Windows (x64). macOS builds are code-signed but not notarized (users must right-click → Open on first launch). Produces 2 artifacts: DMG for macOS and Setup installer for Windows.
- Release — creates a GitHub Release with all artifacts attached.
The version comes from package.json. Bump it with:
node scripts/bump-version.js [major|minor|patch]| Branch | Tag | Type |
|---|---|---|
main |
v1.0.0 |
Full release (marked as latest) |
staging |
v1.0.0-rc.<n> |
Release candidate (prerelease) |
| File | Platform |
|---|---|
Cooper-<version>-mac-arm64.dmg |
macOS (Apple Silicon) |
Cooper-<version>-win-x64-Setup.exe |
Windows installer |
- Bump the version:
node scripts/bump-version.js patch - Update
RELEASE_NOTES.mdwith a## <version>section - Merge to
stagingfor an RC, or tomainfor a full release - The workflow runs automatically and creates the GitHub Release
Open a PR to staging. The Build Check workflow will run tests, build the app, and check bundle sizes on macOS, Windows, and Linux.
Every PR to main or staging runs the Build Check workflow (.github/workflows/build-pr.yml). It runs tests, builds the app with electron-vite build, and checks the bundle size guardrail on macOS, Windows, and Linux. Doc-only changes (*.md, docs/**) are skipped.
See the Release section below for the full release CI pipeline.
| Workflow | File | Trigger |
|---|---|---|
| Build Check | build-pr.yml |
PRs to main/staging |
| Release | release.yml |
Push to main/staging, manual dispatch |
| Bump Version | bump-version-staging.yml |
Manual dispatch (staging only) |
Open a GitHub issue with a clear description and steps to reproduce. For security vulnerabilities, see SECURITY.md.
Join our Discord server to report bugs, request features, or get involved with the project. We'd love to have you!