Fix: Skip draft releases in update checker

Bug: Pulse was showing update notifications for draft releases because
the update checker didn't filter them out.

The GitHub API returns draft releases in the releases endpoint, and
Pulse was treating them as available updates even though they're not
published yet.

Fix:
- Added Draft field to ReleaseInfo struct
- Added draft filtering in both RC and stable channel logic
- Draft releases are now skipped with debug logging

This prevents users from seeing "Update available" notifications
when maintainers create draft releases during the release workflow.
This commit is contained in:
rcourtman 2025-11-12 12:31:58 +00:00
parent a5b51de3f1
commit 72642a2e52

View file

@ -38,6 +38,7 @@ type ReleaseInfo struct {
Name string `json:"name"`
Body string `json:"body"`
Prerelease bool `json:"prerelease"`
Draft bool `json:"draft"`
PublishedAt time.Time `json:"published_at"`
Assets []struct {
Name string `json:"name"`
@ -595,6 +596,12 @@ func (m *Manager) getLatestReleaseForChannel(ctx context.Context, channel string
var newestStable *ReleaseInfo
for i := range releases {
// Skip draft releases
if releases[i].Draft {
log.Debug().Str("tag", releases[i].TagName).Msg("Skipping draft release")
continue
}
releaseVer, err := ParseVersion(releases[i].TagName)
if err != nil {
log.Debug().Str("tag", releases[i].TagName).Err(err).Msg("Failed to parse release version")
@ -665,6 +672,12 @@ func (m *Manager) getLatestReleaseForChannel(ctx context.Context, channel string
} else {
// For stable channel: find latest non-prerelease
for i := range releases {
// Skip draft releases
if releases[i].Draft {
log.Debug().Str("tag", releases[i].TagName).Msg("Skipping draft release")
continue
}
if releases[i].Prerelease {
continue
}