Repository navigation
Conversation
A new build-windows job runs on a Windows runner after the Mac build has made the draft release. It builds the NSIS setup.exe with the update signature, uploads it into the same draft, and lets tauri-action merge the windows-x86_64 entry into latest.json. The setup.exe is also uploaded as Kriyon-setup.exe so the website can link to a fixed name. The update feed check now requires the Windows entry as well as both Mac entries, and it runs at the end of the Windows job, once the feed is complete. Publishing waits for both builds. Windows builds are not code-signed yet, so SmartScreen warns on install. The signing service is still to be chosen. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Each channel's feed is now a file per platform on a fixed release:
feed-<channel>/darwin.json or windows.json, chosen by the updater's
{{target}} substitution. A release built for one platform can then move
only that platform's feed, so an urgent Mac-only or Windows-only fix never
waits for the other build.
A feed that is newer but has no entry for this platform now reads as no
update. The updater would otherwise fail the check with "target not
found" and show the person an error.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Mac and Windows builds now run side by side into one draft made by a new draft job. Each checks its own feed file (darwin.json, windows.json) and uploads it last, so its presence means that platform passed every check. A build that fails removes its files from the draft (scripts/drop-platform.sh), and betas and nightlies publish for whichever platforms finished. A run by hand can build one platform, and Publish can publish a stable draft for one platform only, so an urgent fix ships without the other. publish-release.sh moves each built platform's file on the channel's fixed feed release, now including feed-stable, only forward. Builds up to 0.15.0 keep updating: the Mac latest.json is still uploaded, stable stays GitHub's latest release only when it has a Mac build, and beta and nightly copies go on their feed releases. A stable Windows build puts its installer on feed-stable as Kriyon-setup.exe. The Homebrew tap moves only for a Mac build. ADR 0056 records the decision; docs/RELEASING.md explains the flows. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Each publish run now fills in any channel's missing darwin.json or windows.json. A missing file is a 404, which the updater reports as a failed check, for example when someone on a new beta switches to stable before the first new stable ships. The Mac's file is made from that channel's latest.json, so the first run puts 0.15.0 on feed-stable; the Windows file gets the same version with no entries, which the app reads as no update until a Windows build replaces it. From the fourth stable release after 0.15.0, Publish also warns in its run summary that latest.json can probably be dropped. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The hero and install sections get a "Download for Windows" button with a BETA tag. It links to feed-beta/Kriyon-setup.exe: publishing a Windows build now puts its installer on each feed release it moves, not only on feed-stable, so the beta installer has a fixed link too. Stable also lands on feed-beta, so the link is the newest of beta and stable. The platform facts, rating plate, contribute card and structured data now say Windows is in beta instead of "help wanted". Co-Authored-By: Claude Opus 5.5 <[email protected]>
- publish-release.sh checks the chosen platforms' feed files before it drops anything, so a wrong choice or a failed check no longer throws away the other platform's good build. - It then drops every platform without a feed file, not only the one not chosen, so files from a build that timed out before it could clean up never ship. - move_feed no longer runs inside $(...), where set -e is off: a failed upload or lookup now stops the run instead of reporting success or moving a feed backwards. - drop-platform.sh treats only "release not found" as nothing to remove; any other gh error fails the step. - The platform list and the Windows installer's name rule now live in publish-lib.mjs (publish.mjs platforms, windows-installer), and the scripts ask for them instead of repeating them. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…cancel Both build jobs now set the version the prepare job worked out (release.mjs set-version) instead of working it out again, so the rule lives in one place. A cancelled build also removes its files from the draft, and both jobs find the Windows installer with the shared rule. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Also update a website test comment that still called Kriyon Mac-only. Co-Authored-By: Claude Opus 5.5 <[email protected]>
… table PLATFORMS and the rule for which release files a platform's build uploads now come from the same table, so adding a platform to one without the other is no longer possible: a new platform's half-made files would otherwise never be dropped from a draft. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Build jobs set their version with release.mjs set-version now, so beta and nightly only print it. ADR 0045 and 0046 say so. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Member
Author
Review and fix — pass 1Reviewed the whole pull request, fixed 11 issues in 2 passes. Local checks green. Notes
Fixed this pass
Pull request checks
Checked by 3 finders (correctness, workflows, tests, contract, public text, step 5 re-check of the fixes) · architecture review · scorer: 28 scored, 11 kept. Not ready to merge — 1 thing(s) still open. 1 pull request check(s) failing. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Windows in the Release workflow
setup.exewith its update signature, into the same draft release as the Mac build.One update feed file per platform (ADR 0056)
feed-<channel>/{{target}}.json, which isdarwin.jsonorwindows.json, from a fixed feed release per channel. Stable gets a newfeed-stablerelease.update_rt.rs).-f platforms=mac|windows.-f platforms=mac|windows, which first removes the other platform's files from the draft.releases/download/feed-stable/Kriyon-setup.exe.latest.json):latest.json, and only Mac builds become "latest", soreleases/latest/download/latest.jsonkeeps working.feed-betaandfeed-nightly.docs/RELEASING.md, ADR 0055 and the new ADR 0056 are updated.Why
So Windows ships from the same pipeline, and an urgent Mac-only or Windows-only fix can ship without the other platform. This is the same approach as electron-builder's per-platform files and the per-platform update endpoints of VS Code, Zed, Yaak and GitButler.
How I tested it
scripts/publish.test.mjs.pnpm check, actionlint, zizmor and shellcheck are clean.{{target}}substitution, theTargetNotFoundpath, the comparator running first) and tauri-action v1.0.0, against the real 0.15.0latest.json.dev/main, so the first beta is the real test. It covers making the draft, the per-platform cleanup, publishing one platform, and creatingfeed-stablethe first time.Stacked on #48. After #48 is squash-merged, rebase onto
devand retarget.Checklist
dev. (It targetsfeat/windowsuntil feat(windows): run Kriyon on Windows #48 merges.)pnpm checkpasses.🤖 Generated with Claude Code