diff --git a/cmd/syncthing/gui.go b/cmd/syncthing/gui.go index 834bad096..6f6dfbe05 100644 --- a/cmd/syncthing/gui.go +++ b/cmd/syncthing/gui.go @@ -618,7 +618,7 @@ func restGetUpgrade(w http.ResponseWriter, r *http.Request) { http.Error(w, upgrade.ErrUpgradeUnsupported.Error(), 500) return } - rel, err := upgrade.LatestRelease(strings.Contains(Version, "-beta")) + rel, err := upgrade.LatestRelease(Version) if err != nil { http.Error(w, err.Error(), 500) return @@ -626,7 +626,8 @@ func restGetUpgrade(w http.ResponseWriter, r *http.Request) { res := make(map[string]interface{}) res["running"] = Version res["latest"] = rel.Tag - res["newer"] = upgrade.CompareVersions(rel.Tag, Version) == 1 + res["newer"] = upgrade.CompareVersions(rel.Tag, Version) == upgrade.Newer + res["majorNewer"] = upgrade.CompareVersions(rel.Tag, Version) == upgrade.MajorNewer w.Header().Set("Content-Type", "application/json; charset=utf-8") json.NewEncoder(w).Encode(res) @@ -660,14 +661,14 @@ func restGetLang(w http.ResponseWriter, r *http.Request) { } func restPostUpgrade(w http.ResponseWriter, r *http.Request) { - rel, err := upgrade.LatestRelease(strings.Contains(Version, "-beta")) + rel, err := upgrade.LatestRelease(Version) if err != nil { l.Warnln("getting latest release:", err) http.Error(w, err.Error(), 500) return } - if upgrade.CompareVersions(rel.Tag, Version) == 1 { + if upgrade.CompareVersions(rel.Tag, Version) > upgrade.Equal { err = upgrade.To(rel) if err != nil { l.Warnln("upgrading:", err) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 4ca717ec1..9495f6f7f 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -324,7 +324,7 @@ func main() { } if doUpgrade || doUpgradeCheck { - rel, err := upgrade.LatestRelease(IsBeta) + rel, err := upgrade.LatestRelease(Version) if err != nil { l.Fatalln("Upgrade:", err) // exits 1 } @@ -1057,7 +1057,7 @@ func autoUpgrade() { case <-timer.C: } - rel, err := upgrade.LatestRelease(IsBeta) + rel, err := upgrade.LatestRelease(Version) if err == upgrade.ErrUpgradeUnsupported { events.Default.Unsubscribe(sub) return diff --git a/gui/assets/lang/lang-en.json b/gui/assets/lang/lang-en.json index d3e76379b..3a317feec 100644 --- a/gui/assets/lang/lang-en.json +++ b/gui/assets/lang/lang-en.json @@ -1,4 +1,5 @@ { + "A new major version may not be compatible with previous versions.": "A new major version may not be compatible with previous versions.", "API Key": "API Key", "About": "About", "Add": "Add", @@ -72,6 +73,7 @@ "Latest Release": "Latest Release", "Local Discovery": "Local Discovery", "Local State": "Local State", + "Major Upgrade": "Major Upgrade", "Maximum Age": "Maximum Age", "Metadata Only": "Metadata Only", "Move to top of queue": "Move to top of queue", @@ -92,11 +94,13 @@ "Override Changes": "Override Changes", "Path to the folder on the local computer. Will be created if it does not exist. The tilde character (~) can be used as a shortcut for": "Path to the folder on the local computer. Will be created if it does not exist. The tilde character (~) can be used as a shortcut for", "Path where versions should be stored (leave empty for the default .stversions folder in the folder).": "Path where versions should be stored (leave empty for the default .stversions folder in the folder).", + "Please consult the release notes before performing a major upgrade.": "Please consult the release notes before performing a major upgrade.", "Please wait": "Please wait", "Preview": "Preview", "Preview Usage Report": "Preview Usage Report", "Quick guide to supported patterns": "Quick guide to supported patterns", "RAM Utilization": "RAM Utilization", + "Release Notes": "Release Notes", "Rescan": "Rescan", "Rescan All": "Rescan All", "Rescan Interval": "Rescan Interval", @@ -155,10 +159,12 @@ "The number of versions must be a number and cannot be blank.": "The number of versions must be a number and cannot be blank.", "The rescan interval must be a non-negative number of seconds.": "The rescan interval must be a non-negative number of seconds.", "The rescan interval must be at least 5 seconds.": "The rescan interval must be at least 5 seconds.", + "This is a major version upgrade.": "This is a major version upgrade.", "Unknown": "Unknown", "Unshared": "Unshared", "Unused": "Unused", "Up to Date": "Up to Date", + "Upgrade": "Upgrade", "Upgrade To {%version%}": "Upgrade To {{version}}", "Upgrading": "Upgrading", "Upload Rate": "Upload Rate", diff --git a/gui/index.html b/gui/index.html index 5ef90379f..82494b20d 100644 --- a/gui/index.html +++ b/gui/index.html @@ -38,6 +38,12 @@ Upgrade To {%version%} +
+ This is a major version upgrade. + A new major version may not be compatible with previous versions. + Please consult the release notes before performing a major upgrade. +
++ Release Notes +
+