Skip to content

Publish desktop releases for Windows x64/arm64 with checksums#197

Merged
ScottMorris merged 6 commits intomainfrom
feat/desktop-windows-release-ci
Feb 12, 2026
Merged

Publish desktop releases for Windows x64/arm64 with checksums#197
ScottMorris merged 6 commits intomainfrom
feat/desktop-windows-release-ci

Conversation

@ScottMorris
Copy link
Copy Markdown
Owner

@ScottMorris ScottMorris commented Feb 12, 2026

Summary

  • add Windows desktop release jobs on windows-latest for:
    • x86_64-pc-windows-msvc
    • aarch64-pc-windows-msvc
  • keep existing Linux release jobs intact
  • generate and attach Windows checksum assets to GitHub releases using PowerShell Get-FileHash
  • enable GitHub auto-generated release notes and add category config in .github/release.yml
  • keep release_draft wiring, but default desktop releases to published (release_draft: false)

Documentation

  • update docs/RELEASING.md for Windows targets, published-by-default behaviour, and checksum verification
  • add README guidance for unsigned Windows installs (SmartScreen flow + checksum verification)

Validation

  • pnpm lint (currently a placeholder script in this repo)
  • YAML validation for:
    • .github/workflows/publish-desktop.yml
    • .github/release.yml

Notes

  • macOS release packaging is still out of scope in this PR
  • Windows code signing remains unconfigured by design for now

## Summary
- split desktop publishing into dedicated Linux and Windows jobs
- add  matrix builds for  and
- keep existing Linux release flow unchanged, including the portable AppImage flag

## Why
- Windows release artefacts must be produced on Windows runners for reliable MSI/NSIS packaging
- a separate Windows job avoids Linux container constraints and keeps platform responsibilities clear
- targeting both x64 and arm64 aligns with native Windows-on-Arm support goals

## Behaviour Changes
-  now attaches Windows artefacts to the same GitHub release as Linux artefacts
- manual release runs default to draft mode ()
- tag-triggered releases also stay draft unless explicitly promoted later

## Release Metadata Improvements
- release creation now enables GitHub-generated release notes for first-pass changelog quality

## Notes
- kept existing tag validation and release re-use logic to minimise migration risk
## Summary
- set `workflow_dispatch` input `release_draft` default to `false`
- set tag-triggered release default to non-draft while preserving manual draft override wiring

## Why
- release policy is full publish by default
- still retain manual control to force a draft when needed

## Behaviour
- push tags matching `desktop-v*` now create or update published releases by default
- manual runs can still set `release_draft: true` for historical/manual review flows
## Summary
- update desktop release documentation to include Windows x64 and arm64 CI targets
- document default published-release behaviour with optional manual draft override
- add unsigned Windows installer guidance and PowerShell checksum verification steps
- update CI limitation notes to reflect current platform coverage

## Why
- release docs must match the behaviour implemented in the desktop publish workflow
- unsigned Windows installers require explicit user guidance and integrity verification instructions
- clear release expectations reduce triage overhead during each tag cut

## Notes
- checksum examples use PowerShell to match the Windows runner/tooling path used in CI
- documentation keeps macOS and code-signing status explicit for future milestones
## Summary
- add a dedicated Windows installation section to the project README
- document SmartScreen flow for unsigned installers
- include SHA256 verification guidance using release checksum assets

## Why
- Windows users need a clear install path when code signing is not enabled
- checksum verification provides a simple integrity check for downloaded artefacts
- keeping this in README improves discoverability compared with release docs alone

## Notes
- command examples use PowerShell to match Windows defaults and CI checksum tooling
## Summary
- quote the `RELEASE_DRAFT` GitHub expression in workflow env configuration

## Why
- unquoted ternary expressions with `:` break strict YAML parsers
- quoting keeps GitHub Actions expression evaluation intact while restoring YAML validity

## Impact
- no release-policy change
- workflow remains publish-by-default with manual `release_draft` override preserved
## Summary
- add `.github/release.yml` to shape GitHub auto-generated release-note sections
- document the category config location in the desktop release guide

## Why
- generated release notes are now enabled in CI, so category structure should be intentional
- this gives immediate release-note quality improvements without introducing a full release-management system

## Behaviour
- release notes are grouped into Features, Fixes, Documentation, CI and Build, and Other Changes
- maintainers can tune categories later by updating `.github/release.yml`

## Scope
- no versioning automation or semantic release flow added in this change
- remains compatible with the existing tag-driven desktop release process
@ScottMorris ScottMorris changed the title feat(ci): publish desktop releases for Windows x64/arm64 with checksums Add Windows desktop release publishing with checksums Feb 12, 2026
@ScottMorris ScottMorris added desktop Desktop impact deployment Deployment related, eg. GitHub Actions documentation Improvements or additions to documentation build Build System labels Feb 12, 2026
@ScottMorris ScottMorris changed the title Add Windows desktop release publishing with checksums Publish desktop releases for Windows x64/arm64 with checksums Feb 12, 2026
@ScottMorris ScottMorris merged commit 586ce54 into main Feb 12, 2026
@ScottMorris ScottMorris deleted the feat/desktop-windows-release-ci branch February 12, 2026 07:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Build System deployment Deployment related, eg. GitHub Actions desktop Desktop impact documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant