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 main → v0.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
- 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.
- 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.
- 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.
- 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.
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:
9c60779main; unreleased1d1799emain; unreleased10882cfVerified blockers
git describeon keelmain→v0.11.2-7-g9f2a5ac.pyproject.tomlstill reads0.11.2— a release has not even been prepared.gh release view v0.11.2 --json assetsreturns wheels, sdists andconfig.yamlonly. No.dmg, no.zip, no-setup.exe, noSHA256SUMS-*.release.yml'sdesktopinput defaults tobuild(workflow artifacts, smoke-tested, not attached). Only a manual dispatch ofpublish-unsignedattaches them.gh api repos/CodeGateSoftware/keel/environments→{"total_count":0}. Thesigningenvironment holding the Apple/Azure secrets does not exist, so both platforms would ship unsigned.The site is already built for this
InstallPage.astro:44-55derivesmacAsset/winAssetby matching release asset names against["darwin","macos",".dmg",".pkg"]and["windows","win32","win64",".exe",".msi",".zip"], andhasPlatformBundlegates 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
keel-<version>-<arch>.dmg,keel-<version>-windows-<arch>.zip,keel-<version>-windows-<arch>-setup.exe— all match, but re-verify rather than assume.docs/desktop-install.mdtoengine-docs.manifest.json(sectionguides) with en/ar/fr descriptions. Not before — it walks the reader through downloading a.dmgthat does not exist yet, and mirroring it now would point visitors at a missing file. The already-mirroreddocs/operator-runbook.mdgained a cross-reference to it in1d1799e; until then that link resolves off-site to GitHub, which is the normal behaviour of the link rewriter and is acceptable.keel updateon a bundle tells you to re-download the installer).Upstream defect to report separately
docs/desktop-install.mdand the release-notes template both promise a singularSHA256SUMS.txt.release.ymlactually 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.