Elyra
Elyra The coding agent e The native code editor Elyra Grove Native local development environment Askr The real server for Laravel & PHP Elyra Framework Rust + Svelte 5 framework for desktop apps Elyra Conductor Local project conductor Elyra SQL Server MySQL-compatible SQL server in Rust Elyra Félagi Agents as teammates on one board Elyra SQL Client Native desktop SQL workbench Elyra SQL Anywhere Replication-ready SQL engine Elyra Sjá SEO & GEO workspace for macOS Elyra DataGrid Server-driven data grid for Laravel
Elyra integration
Elyra agent
Release notes
Changelog
Elyra
Releasing & auto-update

Releasing & auto-update

Conductor ships an in-app updater (the Tauri updater plugin) that checks GitHub Releases for new versions. Updates must be signed with the project's private key, or the app refuses to install them.

This is a summary. The authoritative, step-by-step guide lives in RELEASING.md at the repo root.

Signing keys (one-time)

A signing keypair is generated once:

pnpm tauri signer generate -w ~/.tauri/elyra-conductor.key
  • Private key: ~/.tauri/elyra-conductor.key — keep secret, never commit.
  • Public key: embedded in src-tauri/tauri.conf.json under plugins.updater.pubkey.

If the private key is lost, existing installs can no longer auto-update.

Cutting a release

  1. Update the changelog. In CHANGELOG.md, rename [Unreleased] to [<version>] — <YYYY-MM-DD>, add a fresh empty [Unreleased], and update the comparison links at the bottom. This section becomes the GitHub release notes.

  2. Bump the version in package.json, src-tauri/tauri.conf.json, and src-tauri/Cargo.toml (keep them in sync); commit the changelog + bump together.

  3. Build a signed bundle:

    ./scripts/release-build.sh
    # set TAURI_SIGNING_PRIVATE_KEY_PASSWORD=… first if your key has a password
    

    It runs pnpm tauri build and make-latest-json.mjs, producing (in src-tauri/target/release/bundle/) the .dmg installer, the .app.tar.gz updater payload, and its .sig.

  4. Manifest: latest.json is generated automatically (regenerate manually with node scripts/make-latest-json.mjs).

  5. Create the GitHub release for tag v<version> (use the new changelog section as the notes) and upload the four assets, renaming the tarball/sig to the stable, space-free name elyra-conductor.app.tar.gz:

    git tag -a v<version> -m "elyra-conductor v<version>" && git push origin v<version>
    

How the update check works

  • plugins.updater.endpoints points at the repo's releases/latest/download/latest.json, which always resolves to the latest non-prerelease manifest.
  • On startup (and via ⌘KCheck for updates…), the app fetches the manifest, compares versions, and offers a one-click install & restart for newer builds.
  • The downloaded .app.tar.gz is verified against the embedded public key before installing.

Notes

  • Current target is Apple Silicon (darwin-aarch64). To support Intel or a universal binary, build for that target and add the matching platforms entry in latest.json.
  • Releases are Developer ID code-signed and Apple-notarized (the release script submits the DMG via xcrun notarytool and staples the ticket), so a downloaded build opens without a Gatekeeper warning — no right-click → Open needed. Notarization is independent of the Tauri update signature: the former is Apple vouching for the binary, the latter is what the in-app updater verifies. See RELEASING.md for the signing setup.

Related