Repository navigation
fix(release): align publication with built artifacts - #90
Merged
Merged
Conversation
Collect only the exact platform files that the release contract publishes, using Electron Builder's x86_64 AppImage name and Sparkle as the sole macOS update feed. This prevents diagnostics and unused blockmaps from reaching the strict publisher. Preserve additional per-file updater metadata such as blockMapSize while parsing, merging, and serializing manifests. Exercise the corrected stable/nightly asset contract in focused tests so future release runs fail at platform collection instead of after every build completes.
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.
Summary
Repairs the v0.4.4 publication blocker exposed by release workflow run 33152767977 after all platform builds and the signed Sparkle feed had succeeded. The publish job was validating stale filenames and asset classes instead of the artifacts generated by the current Electron Builder and Sparkle pipeline.
Failure observed
The release publisher rejected the retained build output because it expected:
GedCode-0.4.4-x64.AppImage, while Electron Builder emitsGedCode-0.4.4-x86_64.AppImageand writes that name intolatest-linux.yml.latest-mac.ymland promotednightly-mac.yml, although production macOS updates now use the separately generated, Ed25519-signed Sparkle appcast.The build-artifact collector also admitted
builder-debug.ymland macOS ZIP blockmaps. The strict validator would have rejected those as unexpected immediately after the missing-file check was corrected. Finally, the real Linux manifest contains valid per-fileblockMapSizemetadata that the narrow manifest parser did not understand.Changes
x86_64AppImage filename.blockMapSizerather than rejecting or discarding it.Repository state change
Before this PR, current cross-platform builds completed successfully but stable release publication could never pass the repositories own strict validator. Broad artifact globs also allowed diagnostics and unused metadata into the merge directory.
After this PR, each platform uploads only its exact publishable contract, the publisher validates the filenames and manifest structure Electron Builder actually emits, and macOS release metadata is unambiguously owned by Sparkle.
Verification
bun fmtbun lint(passes; existing non-blocking warnings remain)bun run --filter=@t3tools/scripts typecheckbun run --filter=@t3tools/scripts test -- validate-release-assets.test.ts publish-github-release.test.ts promote-stable-update-manifests.test.ts merge-update-manifests.test.ts— 4 files, 23 tests passedbun run release:smokegit diff --checkRelease retry
Once merged and green on
main, rerun./release.sh stable patch. The resulting v0.4.4 tag must target the newly reviewed merge SHA; artifacts from the failed run are used only as validation fixtures and will not be published under the new tag.