Repository navigation
feat(linux): add standard AppImage update metadata - #1072
EtienneLescot merged 1 commit into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (5)
Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 6 remain after this review. 📝 WalkthroughWalkthroughBuild hooks now update AppImage update metadata and generate versioned ChangesAppImage updates
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant electron-builder
participant artifactBuildCompleted
participant AppImage
participant zsyncmake
participant afterAllArtifactBuild
participant Linux workflow
electron-builder->>artifactBuildCompleted: AppImage build event
artifactBuildCompleted->>AppImage: Rewrite .upd_info and blockmap
artifactBuildCompleted->>zsyncmake: Generate versioned .zsync sidecar
electron-builder->>afterAllArtifactBuild: Artifact paths
afterAllArtifactBuild-->>electron-builder: .zsync paths
Linux workflow->>Linux workflow: Validate and upload sidecars
Merge Risk: ⚪ Minimal · up to This change adds standard AppImage update metadata and zsync sidecars for Linux releases. No concrete merge-blocking risk was found. When electron-builder is upgraded, recheck the internal helper the hook relies on. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 2 files. (3 skipped: 3 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
EtienneLescot
left a comment
There was a problem hiding this comment.
Reviewed line by line (build.yml + scripts): zsync from apt, no secrets, no third-party action, execFileSync without a shell; electron-updater metadata keeps the final hashes. Will be exercised by a dispatched build before the next RC. Thanks @satwiksharma01!
Summary
AppImages currently have no standard update information or
.zsyncasset for external AppImage tools. Fill the runtime's reserved.upd_infosection and generate a matching.zsyncafter packaging, then upload both files in the Linux release job.The completion hook removes the previous embedded blockmap before changing the runtime, rebuilds it, and replaces
event.updateInfobefore electron-builder schedules the update feed and publication. This preserves electron-updater's differential updates and prevents stale hashes inlatest-linux.yml. It works with the existing legacy runtime and the static runtime proposed in #1070; this PR does not depend on that runtime change.Stable builds discover upstream releases through
gh-releases-zsync|...|latest. RC builds generate a sidecar with its explicit tagged URL but leave external discovery empty: AppImageUpdate'slatest-allcan select a helper-only prerelease without an AppImage asset. Their existing electron-updater path stays available. CI verifies the stable/RC metadata policy and the sidecar's existence. The packaging documentation explains the localzsyncrequirement and the builder helper compatibility check.Related issue
Refs #734
Type of change
Release impact
Desktop impact
Screenshots / video
Packaging change; no UI changes.
Testing
The hook uses the internal
appendBlockmaphelper to retain the builder's existing format. Its return shape and event ordering must be rechecked when upgrading builder; the source and docs call this out.Checks use the repository's pinned Node 22.22.1 and npm 10.9.4. This is an AI-assisted contribution.
Summary by CodeRabbit