@samitouri / QOSami-HFS / commits / 152af0e2

fix: admin/home: "get another version" was not working on stable versions

Massimo Melina committed Apr 7, 2026 at 23:35 UTC 152af0e235e1b5df504823f0638b594b56e3bd24
2 files changed +10 -11
src/adminApis.ts
+1 -3
@@ -87,9 +87,7 @@ export const adminApis = {
87 return { options: await getUpdates() }
88 },
89 async get_other_versions() {
90 - let left = 50
91 - const res = await getVersions(r => !r.prerelease && !left--)
92 - return { options: res.filter(x => !x.prerelease) }
90 + return { options: await getVersions(r => !r.prerelease) }
91 },
92 async wait_project_info() { // used by admin/home/check-for-updates
93 await getProjectInfo()
src/update.ts
+9 -8
@@ -72,15 +72,15 @@ function prepareRelease(r: Release) {
72 })
73 }
74
75 -export async function getVersions(interrupt?: (r: Release) => boolean) {
76 - if (!updateToBeta.get() && !RUNNING_BETA) return []
75 +export async function getVersions(filter?: (r: Release) => boolean, max=30) {
76 const ret: Release[] = []
77 for await (const x of apiGithubPaginated(`repos/${HFS_REPO}/releases`)) {
78 if (x.name.endsWith('-ignore')) continue
79 const rel = prepareRelease(x)
80 if (rel.versionScalar === curV) continue
82 - if (interrupt?.(rel)) break // avoid fetching too much data
83 - ret.push(rel)
81 + if (!filter || filter(rel))
82 + ret.push(rel)
83 + if (ret.length >= max) break
84 }
85 return _.sortBy(ret, x => -x.versionScalar)
86 }
@@ -89,11 +89,12 @@ export async function getUpdates(strict=false) {
89 console.log("Checking for updates")
90 void getProjectInfo() // also check for alerts and print them asap in the console
91 const stable: Release = prepareRelease(await getRepoInfo(HFS_REPO + '/releases/latest'))
92 - const res = await getVersions(r => r.versionScalar < stable.versionScalar) // we don't consider betas before stable
93 - const ret = res.filter(x => x.prerelease && (strict ? x.isNewer : (x.versionScalar !== curV)) )
92 + const includeBetas = updateToBeta.get() || RUNNING_BETA
93 + // we don't consider betas before stable
94 + const betas = !includeBetas ? [] : await getVersions(x => x.prerelease && x.versionScalar > stable.versionScalar && (!strict || x.isNewer))
95 if (stable.isNewer || RUNNING_BETA && !strict)
95 - ret.push(stable)
96 - return ret
96 + betas.push(stable)
97 + return betas
98 }
99
100 const LOCAL_UPDATE = 'hfs-update.zip' // update from file takes precedence over net