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

  1. Treat this as an informational 'no update' result, not an error — log at debug/info level, do not alert.
  2. If surfacing to UI, show 'you are on the latest version' rather than an error toast.
  3. 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

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


AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12). Data as JSON: /api/errors/75cb6d2fc90c5c94. Report an issue: GitHub.