diff --git a/docs/code-bridge/requests/REQ-2026-04-16-vanilla-versions-fix.md b/docs/code-bridge/archive/REQ-2026-04-16-vanilla-versions-fix.md similarity index 100% rename from docs/code-bridge/requests/REQ-2026-04-16-vanilla-versions-fix.md rename to docs/code-bridge/archive/REQ-2026-04-16-vanilla-versions-fix.md diff --git a/services/arbiter-3.0/src/views/admin/modpack-installer/_vanilla_form.ejs b/services/arbiter-3.0/src/views/admin/modpack-installer/_vanilla_form.ejs index 2323492..c6aef84 100644 --- a/services/arbiter-3.0/src/views/admin/modpack-installer/_vanilla_form.ejs +++ b/services/arbiter-3.0/src/views/admin/modpack-installer/_vanilla_form.ejs @@ -189,61 +189,7 @@ - + diff --git a/services/arbiter-3.0/src/views/admin/modpack-installer/index.ejs b/services/arbiter-3.0/src/views/admin/modpack-installer/index.ejs index febb9f4..69bf7d3 100644 --- a/services/arbiter-3.0/src/views/admin/modpack-installer/index.ejs +++ b/services/arbiter-3.0/src/views/admin/modpack-installer/index.ejs @@ -118,6 +118,76 @@ document.getElementById('pack-details').innerHTML = '
Loading...
'; fetch('/admin/modpack-installer/vanilla-form', { headers: { 'HX-Request': 'true' } }) .then(function(r) { return r.text(); }) - .then(function(html) { document.getElementById('pack-details').innerHTML = html; }); + .then(function(html) { + document.getElementById('pack-details').innerHTML = html; + + // Scripts injected via innerHTML don't execute — run init here instead + // 1. Load MC versions (Paper-supported only) + fetch('/admin/modpack-installer/mc-versions?paper=1', { headers: { 'HX-Request': 'true' } }) + .then(function(r) { return r.json(); }) + .then(function(versions) { + var sel = document.getElementById('vf-mcversion'); + if (!sel) return; + sel.innerHTML = ''; + versions.forEach(function(v, i) { + var opt = document.createElement('option'); + opt.value = v.version; + opt.dataset.mc = v.version; + opt.dataset.java = v.java_version; + opt.textContent = v.version + (i === 0 ? ' (latest)' : ''); + if (i === 0) opt.selected = true; + sel.appendChild(opt); + }); + if (versions.length > 0) { + var javaEl = document.getElementById('vf-java'); + if (javaEl) javaEl.value = versions[0].java_version; + } + }); + + // 2. Load node stats + fetch('/admin/modpack-installer/node-info', { headers: { 'HX-Request': 'true' } }) + .then(function(r) { return r.json(); }) + .then(function(d) { + window._vfNodes = d; + vfShowNode(document.getElementById('vf-node') ? document.getElementById('vf-node').value : 'NC1'); + }); + + // 3. Load initial port + vfRefreshPort(); + }); + } + + // Vanilla form helpers (must be in index.ejs scope since _vanilla_form.ejs scripts won't run) + function vfShowNode(node) { + var el = document.getElementById('vf-node-usage'); + if (!el) return; + var n = (window._vfNodes || {})[node]; + if (!n) { el.textContent = ''; return; } + el.innerHTML = 'RAM: ' + Math.round(n.ramUsedMb/1024) + 'GB / ' + Math.round(n.ramTotalMb/1024) + 'GB · Disk: ' + Math.round(n.diskUsedMb/1024) + 'GB / ' + Math.round(n.diskTotalMb/1024) + 'GB'; + } + + function vfRefreshPort() { + var nodeEl = document.getElementById('vf-node'); + if (!nodeEl) return; + var node = nodeEl.value; + vfShowNode(node); + fetch('/admin/modpack-installer/next-port?node=' + node, { headers: { 'HX-Request': 'true' } }) + .then(function(r) { return r.json(); }) + .then(function(d) { + var portEl = document.getElementById('vf-port'); + if (portEl) portEl.value = d.port; + }); + } + + function vfUpdateJava(sel) { + var opt = sel.options[sel.selectedIndex]; + if (opt && opt.dataset.java) { + document.getElementById('vf-java').value = opt.dataset.java; + } else { + var mc = (opt && opt.dataset.mc) || ''; + var major = parseInt(mc.split('.')[0]) || 0; + var minor = parseInt(mc.split('.')[1]) || 0; + document.getElementById('vf-java').value = major >= 26 ? 21 : minor <= 16 ? 8 : minor <= 20 ? 17 : 21; + } }