From 72642a2e52670b9750f3f5fbcc4492e098d3d43e Mon Sep 17 00:00:00 2001 From: rcourtman Date: Wed, 12 Nov 2025 12:31:58 +0000 Subject: [PATCH] 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. --- internal/updates/manager.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/updates/manager.go b/internal/updates/manager.go index 50d1f98..967f88f 100644 --- a/internal/updates/manager.go +++ b/internal/updates/manager.go @@ -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 }