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

  1. No action needed — the installation is current; suppress or log the message
  2. If you expected an update, verify the version comparison (isVersionUpToDate) and the release channel being queried
  3. 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

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


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)