Skip to Content
Contributing

Developing

Cyclemetry is open source. The code lives on GitHub , and issues or pull requests are welcome.

Prerequisites

Setup

Install dependencies from the repo root:

pnpm install

Running Locally

Start the desktop app in development mode:

pnpm dev

Adding a Bundled Font

Drop a .ttf or .otf file into resources/fonts/. The Tauri bundler picks up the whole directory, and the font picker in the app lists it automatically. No config changes required.

Releasing

  1. Set the new release version in src-tauri/Cargo.toml.
  2. Add the matching changelog page at website/content/changelog/vX-Y-Z.mdx, then add it to the release table in website/content/changelog/index.mdx and _meta.js.
  3. Run the release command from the repo root:
pnpm release

The release script checks that the website changelog entry exists before it tags anything. It syncs the version to package.json, app/package.json, and src-tauri/Cargo.lock, commits those release metadata and changelog files, creates a vX.Y.Z git tag, pushes main plus the tag, and starts the Release workflow for all platforms with publishing enabled.

Test a Release Build

Run the Release workflow with publishing disabled for the platform you want to test:

gh workflow run release.yml -f platform=macos -f publish_release=false gh workflow run release.yml -f platform=windows -f publish_release=false gh workflow run release.yml -f platform=linux -f publish_release=false

This builds the release artifacts in GitHub Actions and uploads them as workflow artifacts, but does not publish anything to GitHub Releases. Use -f platform=all only when you want to test every platform in one run.

The Release workflow is manual-only. In the GitHub UI, choose a platform and leave publish_release unchecked to test builds. The pnpm release command starts the all-platform publishing workflow for the vX.Y.Z release.

Inspect Built App Logs

When debugging the installed macOS app, stream the built app log from Terminal:

tail -f ~/Library/Logs/com.cyclemetry/cyclemetry.log

This is useful for inspecting startup problems, render failures, and other behavior that may not be visible in the app UI.