siyuan-note/siyuan · info
version is up to date
Error message
version is up to date
What it means
Returned by getUpdatePkg() when isVersionUpToDate(release.Version) is true, meaning semver.Compare("v"+releaseVersion, "v"+currentVersion) <= 0. Despite being returned as an error, this is not a failure: it signals that the newest available release is not newer than the running build, so there is no package to download. Callers (getNewVerInstallPkgPath, checkDownloadInstallPkg) treat any error as 'nothing to do' and return early.
Source
Thrown at kernel/model/updater.go:113
success = true
break
}
}
if success {
util.PushUpdateMsg("update-pkg-ready", Conf.Language(62), 15*1000)
} else {
util.PushUpdateMsg("update-pkg-downloading", Conf.Language(104), 7000)
}
}
func getUpdatePkg() (downloadPkgURLs []string, checksum string, err error) {
release, err := getUpdateRelease(false)
if err != nil {
return
}
if isVersionUpToDate(release.Version) {
err = fmt.Errorf("version is up to date")
return
}
pkgName := currentInstallPackageName(release.Version)
if "" == pkgName {
err = fmt.Errorf("%w for the current platform", errUpdatePackageUnavailable)
return
}
pkg := release.Packages[pkgName]
if nil == pkg || 0 == len(pkg.URLs) {
err = fmt.Errorf("%w: [%s]", errUpdatePackageUnavailable, pkgName)
return
}
if "" == pkg.Checksum {
err = fmt.Errorf("%w: [%s] checksum is unavailable", errUpdatePackageUnavailable, pkgName)
return
}
downloadPkgURLs = append(downloadPkgURLs, pkg.URLs...)View on GitHub (pinned to 251596fc0d)
Solutions
- Treat this as an informational 'no update' result, not an error — log at debug/info level, do not alert.
- If surfacing to UI, show 'you are on the latest version' rather than an error toast.
- If you are on a beta/alpha build, switch the channel to match (Settings - About - Update channel) so the comparator sees the right release stream.
Example fix
// before
_, _, err := getUpdatePkg()
if err != nil {
log.Error(err) // noisy: logs 'version is up to date' as an error
}
// after
_, _, err := getUpdatePkg()
if err != nil && !errors.Is(err, errVersionUpToDate) {
log.Error(err)
} Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check before calling getUpdatePkg to avoid the 'up to date' error path.
release, err := getUpdateRelease(false)
if err == nil && isVersionUpToDate(release.Version) {
util.PushUpdateMsg("update-notify", Conf.Language(10), 3000) // already latest
return
} Try / catch
// Distinguish 'up to date' from real errors when you must call getUpdatePkg.
_, _, err := getUpdatePkg()
if err != nil {
if strings.Contains(err.Error(), "version is up to date") {
// informational; not a failure
return nil
}
return err
} Prevention
- Do not surface this as an error in UI — it means the user is current.
- Use isVersionUpToDate directly when you only need the comparison.
- Log at info/debug, never at error level.
When it happens
Trigger: CheckUpdate or the background checkDownloadInstallPkg runs after the user already upgraded manually. A cached release list still points at the current version. The user is on a beta/alpha build newer than the latest stable release.
Common situations: Running a pre-release build while on the stable channel (the stable release is older). Just-installed version where the next background check finds nothing newer. Fork/custom builds where util.Ver is set ahead of upstream releases.
Related errors
- stable release version is invalid
- attribute view [%s] changed while loading search info
- attribute view spec is too new
- marketplace package update is not allowed
- marketplace package update not found
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/75cb6d2fc90c5c94.
Report an issue: GitHub.