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