Skip to content

Desktop installers: publish the download path when a release actually carries bundles #87

Description

@eaitbrahim

Tracking — blocked on an upstream release, not on us

keel merged three pieces of desktop-install work after v0.11.2, none of which has reached a user:

Upstream Commit State on 2026-08-25
Inno Setup Windows installer, gated signing + notarisation (#438) 9c60779 Code on main; unreleased
Per-release update path for packaged installs (#439) 1d1799e Code on main; unreleased
curl|bash installer (#479) 10882cf Works today → #86

Verified blockers

  • No new tag. git describe on keel mainv0.11.2-7-g9f2a5ac. pyproject.toml still reads 0.11.2 — a release has not even been prepared.
  • No desktop artifacts on any release. gh release view v0.11.2 --json assets returns wheels, sdists and config.yaml only. No .dmg, no .zip, no -setup.exe, no SHA256SUMS-*.
  • Publishing them is opt-in per release. release.yml's desktop input defaults to build (workflow artifacts, smoke-tested, not attached). Only a manual dispatch of publish-unsigned attaches them.
  • Signing is implemented but inert. gh api repos/CodeGateSoftware/keel/environments{"total_count":0}. The signing environment holding the Apple/Azure secrets does not exist, so both platforms would ship unsigned.

The site is already built for this

InstallPage.astro:44-55 derives macAsset/winAsset by matching release asset names against ["darwin","macos",".dmg",".pkg"] and ["windows","win32","win64",".exe",".msi",".zip"], and hasPlatformBundle gates the unsigned-build note. The note itself is written and translated in all three locales (install.ts, unsigned) and is simply dark today. When a release carries bundles, the download buttons retarget and the note lights up with no code change.

Do when a release actually publishes desktop bundles

  1. Confirm the asset names match the existing patterns. Upstream builds keel-<version>-<arch>.dmg, keel-<version>-windows-<arch>.zip, keel-<version>-windows-<arch>-setup.exe — all match, but re-verify rather than assume.
  2. Add docs/desktop-install.md to engine-docs.manifest.json (section guides) with en/ar/fr descriptions. Not before — it walks the reader through downloading a .dmg that does not exist yet, and mirroring it now would point visitors at a missing file. The already-mirrored docs/operator-runbook.md gained a cross-reference to it in 1d1799e; until then that link resolves off-site to GitHub, which is the normal behaviour of the link rewriter and is acceptable.
  3. Check the unsigned-note copy still matches reality — if signing has been purchased by then, most of that section becomes wrong rather than merely dark.
  4. Document the packaged-install update refusal (keel update on a bundle tells you to re-download the installer).

Upstream defect to report separately

docs/desktop-install.md and the release-notes template both promise a singular SHA256SUMS.txt. release.yml actually emits one file per leg: SHA256SUMS-macOS-arm64.txt, SHA256SUMS-macOS-x86_64.txt, SHA256SUMS-Windows-x86_64.txt. Whatever the site says about checksums must describe the per-platform files.

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions