git clone git@github.com:dualentry/dualentry-cli.git
cd dualentry-cli
uv sync --dev
uv run pre-commit installuv run dualentry --help
uv run dualentry invoices listuv run ruff check .
uv run ruff format --check .uv run pytest
uv run pytest --cov=dualentry_cli --cov-report=term-missing- Create a branch from
main - Make your changes
- Ensure linting and tests pass
- Open a PR against
main
Releases are triggered by publishing a GitHub Release. CI builds binaries and updates the Homebrew tap automatically.
- Update
CHANGELOG.mdwith the new version and changes - Commit and push to
main - Go to GitHub → Releases → Draft a new release
- Click Choose a tag → type the new version (e.g.,
v0.2.0) → Create new tag - Set the title:
DualEntry CLI v0.2.0 — <summary> - Paste the changelog entry as the release body
- Click Publish release
CI will:
- Build binaries for macOS (arm64, x86_64) and Linux (x86_64)
- Stamp the version from the tag into the binary
- Upload binaries to the GitHub Release
- Update the Homebrew tap formula with new SHA256 hashes
Users upgrade via brew upgrade dualentry or re-running the install script.
We use Semantic Versioning:
- Patch (
0.1.1) — bug fixes - Minor (
0.2.0) — new features, backward compatible - Major (
1.0.0) — breaking changes