fix: neoforge not existing for 26.1 breaking vers picker (#5674)

* fix: neoforge for 26.1 -> other vers being picked not existing causing version picker to break

* fix: lint
This commit is contained in:
Calum H.
2026-03-26 17:53:27 +00:00
committed by GitHub
parent 3c3cde1908
commit f1648298c4

View File

@@ -254,6 +254,14 @@ async function fetchLoaderManifest(loader: string) {
let apiLoader = loader
if (apiLoader === 'neoforge') apiLoader = 'neo'
debug(
'fetchLoaderManifest:',
loader,
'apiLoader:',
apiLoader,
'cached:',
!!loaderVersionsCache.value[apiLoader],
)
if (loaderVersionsCache.value[apiLoader]) return
try {
@@ -262,7 +270,9 @@ async function fetchLoaderManifest(loader: string) {
gameVersions: { id: string; loaders: LoaderVersionEntry[] }[]
}
loaderVersionsCache.value[apiLoader] = data.gameVersions
} catch {
debug('fetchLoaderManifest: loaded', apiLoader, 'gameVersions:', data.gameVersions.length)
} catch (e) {
debug('fetchLoaderManifest: FAILED', apiLoader, e)
loaderVersionsCache.value[apiLoader] = []
}
}
@@ -319,13 +329,32 @@ function getLoaderVersionsForGameVersion(
if (apiLoader === 'neoforge') apiLoader = 'neo'
const manifest = loaderVersionsCache.value[apiLoader]
debug('getLoaderVersionsForGameVersion:', {
loader,
apiLoader,
gameVersion,
hasManifest: !!manifest,
manifestLength: manifest?.length,
})
if (!manifest) return []
// Some loaders (e.g. Fabric) list all versions under a placeholder entry
const placeholder = manifest.find((x) => x.id === '${modrinth.gameVersion}')
if (placeholder) return placeholder.loaders
if (placeholder) {
debug(
'getLoaderVersionsForGameVersion: using placeholder, loaders:',
placeholder.loaders.length,
)
return placeholder.loaders
}
const entry = manifest.find((x) => x.id === gameVersion)
debug(
'getLoaderVersionsForGameVersion: entry for',
gameVersion,
':',
entry ? entry.loaders.length + ' loaders' : 'NOT FOUND',
)
return entry?.loaders ?? []
}
@@ -348,9 +377,12 @@ watch(
)
// Watch loader + game version to resolve loader versions
let loaderVersionWatchId = 0
watch(
[() => selectedLoader.value, () => selectedGameVersion.value],
async ([loader, gameVersion]) => {
const watchId = ++loaderVersionWatchId
debug('watch [loader, gameVersion] fired:', { loader, gameVersion, watchId })
loaderVersionsData.value = []
selectedLoaderVersion.value = null
@@ -360,8 +392,8 @@ watch(
if (loader === 'paper') {
await fetchPaperVersions(gameVersion)
if (watchId !== loaderVersionWatchId) return
loaderVersionsLoading.value = false
// Auto-select latest build
const builds = paperVersions.value[gameVersion]
if (builds?.length) {
selectedLoaderVersion.value = `${builds[0]}`
@@ -371,8 +403,8 @@ watch(
if (loader === 'purpur') {
await fetchPurpurVersions(gameVersion)
if (watchId !== loaderVersionWatchId) return
loaderVersionsLoading.value = false
// Auto-select latest build
const builds = purpurVersions.value[gameVersion]
if (builds?.length) {
selectedLoaderVersion.value = builds[0]
@@ -381,7 +413,18 @@ watch(
}
await fetchLoaderManifest(loader)
if (watchId !== loaderVersionWatchId) {
debug('watch [loader, gameVersion]: stale execution, skipping', {
watchId,
current: loaderVersionWatchId,
})
return
}
loaderVersionsData.value = getLoaderVersionsForGameVersion(loader, gameVersion)
debug(
'watch [loader, gameVersion]: loaderVersionsData set, count:',
loaderVersionsData.value.length,
)
loaderVersionsLoading.value = false
// Auto-select based on loaderVersionType
@@ -395,6 +438,16 @@ watch(
)
function autoSelectLoaderVersion() {
debug(
'autoSelectLoaderVersion: type:',
loaderVersionType.value,
'dataCount:',
loaderVersionsData.value.length,
'stableCount:',
loaderVersionsData.value.filter((v) => v.stable).length,
'first:',
loaderVersionsData.value[0]?.id,
)
if (loaderVersionType.value === 'stable') {
const stable = loaderVersionsData.value.find((v) => v.stable)
selectedLoaderVersion.value = stable?.id ?? loaderVersionsData.value[0]?.id ?? null
@@ -403,7 +456,7 @@ function autoSelectLoaderVersion() {
} else if (loaderVersionType.value === 'other' && !selectedLoaderVersion.value) {
selectedLoaderVersion.value = loaderVersionsData.value[0]?.id ?? null
}
debug('autoSelectLoaderVersion:', selectedLoaderVersion.value, 'type:', loaderVersionType.value)
debug('autoSelectLoaderVersion: result:', selectedLoaderVersion.value)
}
const loaderVersionOptions = computed<ComboboxOption<string>[]>(() => {