Skip to content

chore: add release CI, OpenSpec validation, and signing - #7

Merged
jamubc merged 3 commits into
mainfrom
chore/release-ci
Jun 15, 2026
Merged

chore: add release CI, OpenSpec validation, and signing#7
jamubc merged 3 commits into
mainfrom
chore/release-ci

Conversation

@jamubc

@jamubc jamubc commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

The updater can verify and install releases, but nothing produced signed releases or enforced the org PR format. Without CI there is no repeatable way to ship, and the in-app updater has nothing to poll. This is the release machine.

What Changes

  • Add .github/workflows/release.yml: on a v* tag it builds on macOS arm64, signs with the minisign key, and publishes a draft release including latest.json for the updater.
  • Add .github/workflows/validate.yml: enforces the OpenSpec issue/PR format via the org reusable workflow.
  • Add .github/CODEOWNERS so PRs auto-request the developers team.
  • Add scripts/make-update-manifest.sh for building latest.json from a local signed build.
  • Configure the repo secrets TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD (set out of band; private key held outside the repo).

ADDED Requirements

Requirement: Signed Release Pipeline

Pushing a v* tag SHALL build, sign, and publish a draft GitHub release for Apple Silicon that includes the updater manifest, and the signing key MUST come from repo secrets and MUST NOT live in the repository.

Scenario: Tag produces a signed draft release

  • GIVEN the signing secrets are set on the repository
  • WHEN a maintainer pushes a vX.Y.Z tag
  • THEN CI builds and signs the app on macOS arm64
  • AND publishes a draft release containing the dmg, the updater archive, and latest.json

Verification

  1. Workflows
    1.1 .github/workflows/release.yml triggers on v* tags and uses tauri-apps/tauri-action with the signing env.
    1.2 .github/workflows/validate.yml calls the org OpenSpec validator on issue and PR open/edit.
  2. Secrets
    2.1 gh secret list shows TAURI_SIGNING_PRIVATE_KEY and TAURI_SIGNING_PRIVATE_KEY_PASSWORD.
  3. Local path
    3.1 scripts/make-update-manifest.sh is executable and references Lineage.app.tar.gz and the Jam-Sw/lineage endpoint.
  4. End to end (performed at release time)
    4.1 Pushing a tag yields a draft release with the dmg, the .app.tar.gz, its .sig, and latest.json.

jamubc added 3 commits June 15, 2026 12:38
Add openspec/specs/lineage/spec.md with the formal requirements and
scenarios, and expand the README with features, install, test, build,
and release-with-self-update sections mirroring InstantNotes.
Add the Tauri updater and process plugins, wired to the public release
endpoint and verified against the bundled minisign public key. The
dashboard window checks on launch and every 6 hours; Settings shows the
current version and lets the user install an update and relaunch. Checks
fail silently when offline or no release exists.
Add .github/workflows/release.yml (a tag-triggered signed build that
publishes a draft release with the updater manifest), validate.yml (the
org OpenSpec check), CODEOWNERS, and scripts/make-update-manifest.sh for
local releases. The minisign signing secrets are configured on the repo.
@jamubc
jamubc changed the base branch from feat/in-app-updater to main June 15, 2026 19:54
@jamubc
jamubc merged commit 510033c into main Jun 15, 2026
2 checks passed
@jamubc
jamubc deleted the chore/release-ci branch June 15, 2026 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant