From 87cab281aceee9a1c1e7340f0756f70607d2e952 Mon Sep 17 00:00:00 2001 From: Evan Burkey Date: Thu, 24 Jul 2025 08:47:36 -0700 Subject: [PATCH] fix updating --- FyneApp.toml | 2 +- go.mod | 1 + go.sum | 2 ++ main.go | 7 ++++--- pkg/utils/utils.go | 10 +++++++--- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/FyneApp.toml b/FyneApp.toml index 21ec976..6f843d7 100644 --- a/FyneApp.toml +++ b/FyneApp.toml @@ -2,5 +2,5 @@ Icon = "Icon.png" Name = "EpochSilicon" ID = "com.burkey.epochsilicon" - Version = "1.0.0" + Version = "1.0.1" Build = 15 diff --git a/go.mod b/go.mod index ee85232..65a2891 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ toolchain go1.24.5 require ( fyne.io/fyne/v2 v2.6.1 git.burkey.co/eburk/epochcli v0.0.0-20250724135717-365171fddc6b + github.com/Masterminds/semver/v3 v3.4.0 github.com/rs/zerolog v1.34.0 github.com/zalando/go-keyring v0.2.6 gopkg.in/natefinch/lumberjack.v2 v2.2.1 diff --git a/go.sum b/go.sum index 69553c9..7343c6f 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ git.burkey.co/eburk/epochcli v0.0.0-20250724135717-365171fddc6b h1:fPDSiwJI3PzaU git.burkey.co/eburk/epochcli v0.0.0-20250724135717-365171fddc6b/go.mod h1:DgybCn9/LpJwvkrsyea9N2nWy/wuDgo6jkpOWYkTH3c= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0= diff --git a/main.go b/main.go index bbb6376..16e4407 100644 --- a/main.go +++ b/main.go @@ -7,16 +7,17 @@ import ( "epochsilicon/pkg/utils" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" + "github.com/Masterminds/semver/v3" "strings" ) -const appVersion = "1.0.1" +var appVersion = semver.MustParse("1.0.1") func main() { log.SetupLogging() PEApp := app.NewWithID("com.burkey.epochsilicon") - PEWindow := PEApp.NewWindow("EpochSilicon v" + appVersion) + PEWindow := PEApp.NewWindow("EpochSilicon v" + appVersion.String()) PEWindow.Resize(fyne.NewSize(650, 500)) PEWindow.SetFixedSize(true) @@ -43,7 +44,7 @@ func main() { } // Show enhanced update dialog - ui.ShowUpdateDialog(updateInfo, appVersion, PEWindow) + ui.ShowUpdateDialog(updateInfo, appVersion.String(), PEWindow) }() content := ui.CreateUI(PEWindow) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 93e4d59..f939e70 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -5,6 +5,7 @@ import ( "epochsilicon/pkg/log" "errors" "fmt" + "github.com/Masterminds/semver/v3" "io" "net/http" "os" @@ -161,7 +162,7 @@ type Asset struct { } // CheckForUpdateWithAssets returns update information including download assets -func CheckForUpdateWithAssets(currentVersion string) (*UpdateInfo, bool, error) { +func CheckForUpdateWithAssets(currentVersion *semver.Version) (*UpdateInfo, bool, error) { resp, err := http.Get("https://git.burkey.co/api/v1/repos/eburk/epochsilicon/releases/latest") if err != nil { return nil, false, err @@ -191,8 +192,11 @@ func CheckForUpdateWithAssets(currentVersion string) (*UpdateInfo, bool, error) return nil, false, fmt.Errorf("failed to parse JSON response: %v. Response: %s", err, bodyStr[:min(200, len(bodyStr))]) } - latest := strings.TrimPrefix(updateInfo.TagName, "v") - updateAvailable := latest != currentVersion + latest, err := semver.NewVersion(updateInfo.TagName) + if err != nil { + return nil, false, fmt.Errorf("failed to parse semver: %v", err) + } + updateAvailable := latest.GreaterThan(currentVersion) return &updateInfo, updateAvailable, nil }