Velopack: installer and auto-updates #21

Merged
cheapnud merged 1 commit from f/velopack into master 2026-08-20 20:48:48 +00:00
Owner

Releases now ship a Setup.exe installer with delta auto-updates: the app checks the forge releases at startup, downloads any newer version in the background, and offers a restart-to-apply button next to the version in the nav drawer. vpk packages and publishes the release (Setup.exe, its own portable zip, full/delta packages and the update manifest), replacing the hand-rolled zip step. Also drops the precompressed .br/.gz static asset twins from the publish output.

Releases now ship a Setup.exe installer with delta auto-updates: the app checks the forge releases at startup, downloads any newer version in the background, and offers a restart-to-apply button next to the version in the nav drawer. vpk packages and publishes the release (Setup.exe, its own portable zip, full/delta packages and the update manifest), replacing the hand-rolled zip step. Also drops the precompressed .br/.gz static asset twins from the publish output.
velopack: installer with delta auto-updates from forge releases; drop precompressed static asset twins
All checks were successful
Claude PR Review / AI Code Review (pull_request) Successful in 13s
Build & Test / Build and Test (pull_request) Successful in 27s
e742eec8c4

🤖 Claude AI Code Review

  1. Summary
    Adds Velopack-based installer and background auto-updates with a restart-to-apply button, replacing the hand-rolled zip release step.

  2. Code Quality
    Clean, well-commented integration with sensible best-effort error handling and no-op fallback for portable/dev runs.

  3. Issues

🟢 UpdateService.cs — PendingVersion is read on the UI thread while _pendingUpdate is set on a background thread with no synchronization/volatile. Low risk given the event ordering, but the field publication isn't guaranteed visible. Consider assigning before invoking StateChanged (already done) and marking fields volatile if you want to be safe.

🟢 release.yml — vpk download gitea failure is only logged, not gated, but a genuine transient failure (vs. "no previous release") would silently produce a full-only package with no delta. Acceptable for a PoC but worth noting.

  1. Verdict: APPROVE

Solid PoC. The hardcoded LAN URLs are consistent with the pre-existing workflow, so no new secret exposure introduced.


📊 Tokens: 5844 input + 396 output | 💰 Cost: ~$0.0391
Generated by Claude Opus 4.8 via Gitea Actions

## 🤖 Claude AI Code Review 1. **Summary** Adds Velopack-based installer and background auto-updates with a restart-to-apply button, replacing the hand-rolled zip release step. 2. **Code Quality** ⭐⭐⭐⭐☆ Clean, well-commented integration with sensible best-effort error handling and no-op fallback for portable/dev runs. 3. **Issues** 🟢 UpdateService.cs — `PendingVersion` is read on the UI thread while `_pendingUpdate` is set on a background thread with no synchronization/`volatile`. Low risk given the event ordering, but the field publication isn't guaranteed visible. Consider assigning before invoking `StateChanged` (already done) and marking fields `volatile` if you want to be safe. 🟢 release.yml — `vpk download gitea` failure is only logged, not gated, but a genuine transient failure (vs. "no previous release") would silently produce a full-only package with no delta. Acceptable for a PoC but worth noting. 4. **Verdict**: **APPROVE** Solid PoC. The hardcoded LAN URLs are consistent with the pre-existing workflow, so no new secret exposure introduced. --- 📊 **Tokens**: 5844 input + 396 output | 💰 **Cost**: ~$0.0391 *Generated by Claude Opus 4.8 via Gitea Actions*
cheapnud merged commit 8787e8e0b5 into master 2026-08-20 20:48:48 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
cheapnud/CheapShotcutRandomizer!21
No description provided.