siyuan-note/siyuan · info
version is up to date
Error message
version is up to date
What it means
getUpdatePkg returns errors.New("version is up to date") when the latest release version fetched from the update server is not newer than the currently running version. It is a normal, expected outcome of an update check, not a fault; callers treat it as 'nothing to do'.
Solutions
- No action needed — the installation is current; suppress or log the message
- If you expected an update, verify the version comparison (isVersionUpToDate) and the release channel being queried
- For dev/local builds, disable automatic update checks to avoid repeated checks
Defensive patterns
Strategy: type-guard
Validate before calling
const upToDate = !semver.gt(latestVersion, currentVersion); if (upToDate) skipDownload()
Type guard
func isVersionUpToDateErr(err error) bool { return err != nil && err.Error() == "version is up to date" } Try / catch
if err := checkDownloadInstallPkg(true); err != nil && !isUpToDate(err) {
logging.LogErrorf("update check failed: %s", err)
} Prevention
- Treat this as a normal outcome, not a failure — log at info level
- Compare versions client-side with isVersionUpToDate before requesting a package
- Disable scheduled update checks on dev builds
When it happens
Trigger: checkDownloadInstallPkg or getNewVerInstallPkgPath runs a version check while the installed SiYuan version equals or exceeds the latest published release version.
Common situations: Scheduled auto-update checks on an up-to-date install; immediately after manually installing the newest version; comparing against a release channel whose latest publish is older than a local dev build.
Related errors
- errUpdatePackageUnavailable
- update package URL or checksum is empty
- verify checksum failed, download install package
- : [ ] checksum is unavailable
- 346
AI-assisted analysis of siyuan-note/siyuan@9f775e8a12 (2026-09-19).
Data as JSON: /api/errors/75cb6d2fc90c5c94.
Report an issue: GitHub.
Appendix: 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 9f775e8a12)