refactor(update): treat prereleases as latest

Amolith created

Assisted-by: Claude Sonnet 4.5 via Crush

Change summary

internal/update/update.go      | 16 ++--------------
internal/update/update_test.go |  2 +-
2 files changed, 3 insertions(+), 15 deletions(-)

Detailed changes

internal/update/update.go 🔗

@@ -36,21 +36,9 @@ func (i Info) IsDevelopment() bool {
 
 // Available returns true if there's an update available.
 //
-// If both current and latest are stable versions, returns true if versions are
-// different.
-// If current is a pre-release and latest isn't, returns true.
-// If latest is a pre-release and current isn't, returns false.
+// Returns true if the current and latest versions are different, treating
+// pre-releases as valid latest versions.
 func (i Info) Available() bool {
-	cpr := strings.Contains(i.Current, "-")
-	lpr := strings.Contains(i.Latest, "-")
-	// current is pre release && latest isn't a prerelease
-	if cpr && !lpr {
-		return true
-	}
-	// latest is pre release && current isn't a prerelease
-	if lpr && !cpr {
-		return false
-	}
 	return i.Current != i.Latest
 }
 

internal/update/update_test.go 🔗

@@ -19,7 +19,7 @@ func TestCheckForUpdate_Beta(t *testing.T) {
 		info, err := Check(t.Context(), "v0.10.0", testClient{"v0.11.0-beta.1"})
 		require.NoError(t, err)
 		require.NotNil(t, info)
-		require.False(t, info.Available())
+		require.True(t, info.Available())
 	})
 
 	t.Run("current is also beta", func(t *testing.T) {