feat(update): add nightly Velopack update channel (#80)
Addon CI / addon (arm64, macos-14, mac) (push) Waiting to run
Addon CI / addon (x64, ubuntu-22.04, linux) (push) Waiting to run
Addon CI / addon (x64, windows-latest, win) (push) Waiting to run
Ship CI / CI (push) Waiting to run

Adds `nightly` as a selectable auto-update channel (Windows + macOS).

Client:
- update-manager.ts: add 'nightly' to UpdateChannel (veloChannel already
  yields win-x64-nightly / osx-arm64-nightly, so no logic change)
- main.ts: allow 'nightly' in the runtime IPC channel guard
- preload.ts: add 'nightly' to the preload-local UpdateChannel union
- screen.js / settings.html: add the Nightly option + helper text

CI (nightly.yml):
- derive <pkg>-nightly.<UTC date> version in the setup job
- setup-dotnet (pinned from .build-config.json) so the vpk CLI has net8,
  matching build.yml
- vpk pack win-x64-nightly / osx-arm64-nightly (mac signed + notarized,
  mirroring build.yml's signed/unsigned fallback)
- publish a rolling `nightly` GitHub Release (prerelease=false, latest=false)
  that the in-app updater reads for the nightly channel
- concurrency guard so an overlapping dispatch can't race the rolling release

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Byron Gamatos
2026-07-07 00:10:03 +02:00
committed by GitHub
co-authored by Claude Opus 4.8
parent 34e1aa099d
commit dd7ad9b786
6 changed files with 240 additions and 7 deletions
+1 -1
View File
@@ -1108,7 +1108,7 @@ async function startup(): Promise<void> {
// IPC is untyped at runtime — validate the channel string before forwarding
// so a renderer bug or compromised page can't pass arbitrary values into
// the Velopack SDK.
const VALID_CHANNELS: readonly string[] = ['stable', 'rc', 'beta', 'alpha'];
const VALID_CHANNELS: readonly string[] = ['stable', 'rc', 'beta', 'alpha', 'nightly'];
if (typeof channel !== 'string' || !VALID_CHANNELS.includes(channel)) {
return updateManager.getStatus();
}