OpenNotes desktop for macOS is distributed as a DMG through GitHub Releases. Builds are produced by the release.yml GitHub Actions workflow.
-
Go to the latest release.
-
Download the DMG that matches your Mac:
- Apple Silicon (M1/M2/M3/M4):
OpenNotes_<version>_aarch64.dmg - Intel:
OpenNotes_<version>_x64.dmg, when attached for that release
Not sure which? Apple menu → About This Mac. "Chip" means Apple Silicon; "Processor" usually means Intel.
- Apple Silicon (M1/M2/M3/M4):
-
Open the DMG and drag
OpenNotes.appinto Applications.
OpenNotes is not yet code-signed with an Apple Developer ID certificate or notarized by Apple. On first launch, macOS may say the app is from an unidentified developer or cannot be checked for malicious software.
Use the per-app path:
- Right-click or Control-click
OpenNotes.appin Applications. - Click Open.
- Click Open again in the dialog.
Or try to open it once, let macOS block it, then go to System Settings → Privacy & Security and click Open Anyway next to the OpenNotes message.
You only need to do this once per installed build. Do not disable Gatekeeper globally (spctl --master-disable etc.).
Signed and notarized builds require Apple Developer Program membership, a Developer ID Application certificate, and the APPLE_* repository secrets listed in the comment block at the top of .github/workflows/release.yml. Once those exist, enable signing in the workflow.
-
Bump the version in both places. They must match:
package.json→"version"src-tauri/tauri.conf.json→"version"
The DMG filename and app bundle version come from these values, so a mismatch produces confusing artifacts.
-
Update
CHANGELOG.md. -
Commit the bump:
git commit -am "chore: bump version to 0.2.0" -
Tag and push:
git tag v0.2.0 git push origin main --tags
Pushing a
v*tag triggers the release workflow. You can also run it manually from Actions → Release → Run workflow with a tag such asv0.2.0. -
The workflow builds DMGs and publishes a GitHub Release named
OpenNotes v0.2.0with assets attached. -
Watch the run under Actions → Release. Cold Rust caches can make this slow.
Releases are normal GitHub releases by default, including 0.x releases. Mark a release as prerelease only when it is explicitly a preview, beta, or otherwise not meant to be treated as the current download.
- Local gates are green:
pnpm run typecheck,pnpm run lint,pnpm exec vitest run,pnpm run build. - Desktop changes pass
cargo check --manifest-path src-tauri/Cargo.toml. - Version is bumped in both
package.jsonandsrc-tauri/tauri.conf.json. -
CHANGELOG.mdhas an entry for the release. - Tag is pushed:
git tag vX.Y.Z && git push origin vX.Y.Z. - Release workflow completes successfully.
- Release page shows the expected DMG assets and checksums.
- At least one DMG is downloaded back and checksum-verified.
- A real Mac install/open check passes using the first-open warning flow above, unless the build is signed and notarized.
- README download copy and asset names still match the release.
Keep release notes short and user-facing. Mention:
- What changed.
- Which DMGs are available.
- Signing/notarization status.
- Any migration, compatibility, or known limitation users need before installing.
Use docs/release-writing.md for the project style.