${escape(model.name)}
${escape(org.name)} · ${escape(model.paramsDisplay)}
const $ = id => document.getElementById(id);
const escape = value => String(value ?? '').replace(/[&<>"']/g, c => ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
const fmt = (n, digits = 1) => Number.isFinite(n) ? n.toFixed(digits) : '—';
const selected = new Set(MODELS.filter(m => m.recommended).map(m => m.id));
const isDetailPage = document.body.dataset.page === 'model';
let activeId = isDetailPage ? new URLSearchParams(location.search).get('id') : null;
const logo = org => !org.logo ? `` : ``;
const external = (url, label) => `${label} ↗`;
function render() {
const models = MODELS.filter(m => selected.has(m.id)).sort((a,b) => (indexScore(b) ?? -1) - (indexScore(a) ?? -1));
$('selection-count').textContent = `${models.length} / ${MODELS.length}`;
renderParameterChart(models);
$('bars').innerHTML = models.length ? models.map(m => {
const org = ORGS[m.org], score = indexScore(m), info = frontierInfo(m, MODELS);
return ``;
}).join('') : '
| Model | Parameters | Index | ${BENCHMARKS.map(b => `${escape(b.name)} | `).join('')}
|---|---|---|---|
| ${escape(m.paramsDisplay)} | ${fmt(indexScore(m))} | ${BENCHMARKS.map(b => `${b.key === 'base' ? `${m.base.overall} Elo` : `${fmt(benchmarkValue(m,b.key),2)}%`} | `).join('')}
No models selected. Use Models to choose a comparison.
'; $('empty-select')?.addEventListener('click', openPicker); document.querySelectorAll('[data-model]').forEach(button => button.addEventListener('click', () => { location.href = `model.html?id=${encodeURIComponent(button.dataset.model)}`; })); } function renderDetail() { const model = MODELS.find(m => m.id === activeId); $('model-detail').hidden = !model; if (!model) { $('model-detail').hidden = false; $('model-detail').innerHTML = '${escape(org.name)} · ${escape(model.paramsDisplay)}
| Benchmark | Raw result | Index weight | Contribution | Source |
|---|---|---|---|---|
| ${escape(b.name)}${escape(b.metric)} | ${b.key === 'base' ? `${model.base.overall} Elo${fmt(value,2)} normalized /100` : `${fmt(value,2)}%`} | ${fmt(b.weight*100,2)}% | ${fmt(Number.isFinite(value) ? value*b.weight : null,2)} | ${external(b.url,'Dataset')} |
| Overall index | 100% | ${fmt(score,2)} | 1–100 |
Official overall Elo ${model.base?.overall ?? '—'} · ${escape(model.base?.provenance || 'Run metadata not provided.')}
| Category | Normalized /100 | Category Elo |
|---|---|---|
| ${label} | ${fmt(eloToScore(model.base?.elo?.[key]),2)} | ${model.base?.elo?.[key] ?? '—'} |
Base Bench overall and category Elo use 100 / (1 + 10^((1000 − Elo) / 400)). These normalized ratings are not accuracy percentages. Commonsense = 50% normalized category Elo + 50% HellaSwag; quantitative = 90% normalized category Elo + 10% Arithmark 3.
No matching models.
'; $('model-options').querySelectorAll('input').forEach(input => input.addEventListener('change', () => { input.checked ? selected.add(input.value) : selected.delete(input.value); render(); })); } function positionPicker() { const anchor = $('select-models').getBoundingClientRect(); const picker = $('model-picker'); const width = Math.min(290, window.innerWidth - 16); picker.style.width = `${width}px`; picker.style.left = `${Math.max(8, Math.min(anchor.right - width, window.innerWidth - width - 8))}px`; const below = window.innerHeight - anchor.bottom - 16; const above = anchor.top - 16; const useBelow = below >= 320 || below >= above; const available = Math.max(140, useBelow ? below : above); picker.style.maxHeight = `${available}px`; picker.style.top = useBelow ? `${anchor.bottom + 6}px` : 'auto'; picker.style.bottom = useBelow ? 'auto' : `${window.innerHeight - anchor.top + 6}px`; } function openPicker() { renderPicker(); $('selection-status').hidden = true; positionPicker(); $('model-picker').showPopover(); $('model-search').focus(); } if (!isDetailPage) { $('parameter-select').addEventListener('click', () => { $('select-models').scrollIntoView({block:'center'}); openPicker(); }); $('select-models').setAttribute('aria-expanded','false'); $('select-models').setAttribute('aria-controls','model-picker'); $('select-models').addEventListener('click', () => { if ($('model-picker').matches(':popover-open')) $('model-picker').hidePopover(); else openPicker(); }); $('model-picker').addEventListener('toggle', event => $('select-models').setAttribute('aria-expanded',String(event.newState === 'open'))); window.addEventListener('resize',positionPicker); window.addEventListener('scroll',() => { if ($('model-picker').matches(':popover-open')) positionPicker(); },true); function selectionStatus(message) { $('selection-status').textContent = message; $('selection-status').hidden = false; } $('save-selection').addEventListener('click',() => { try { localStorage.setItem('bananamind-saved-selection',JSON.stringify([...selected])); selectionStatus('Selection saved in this browser.'); } catch { selectionStatus('This browser could not save the selection.'); } }); $('load-selection').addEventListener('click',() => { try { const raw = localStorage.getItem('bananamind-saved-selection'); if (raw === null) { selectionStatus('No saved selection yet.'); return; } const ids = JSON.parse(raw); if (!Array.isArray(ids) || !ids.every(id => typeof id === 'string')) throw new Error('Invalid selection'); selected.clear(); ids.filter(id => MODELS.some(m=>m.id===id)).forEach(id=>selected.add(id)); renderPicker(); render(); selectionStatus('Saved selection loaded.'); } catch { selectionStatus('The saved selection could not be loaded.'); } }); $('model-search').addEventListener('input',renderPicker); for (const [id,predicate] of [['recommended',m=>m.recommended],['all-models',()=>true],['clear-models',()=>false]]) { $(id).addEventListener('click',() => { selected.clear(); MODELS.filter(predicate).forEach(m=>selected.add(m.id)); renderPicker(); render(); }); } for (const mode of ['chart','table']) $(mode+'-toggle').addEventListener('click', () => { $('chart-view').hidden = mode !== 'chart'; $('table-view').hidden = mode !== 'table'; $('chart-toggle').setAttribute('aria-pressed',String(mode === 'chart')); $('table-toggle').setAttribute('aria-pressed',String(mode === 'table')); }); } function setTheme(theme) { document.documentElement.dataset.theme = theme; $('theme').innerHTML = theme === 'dark' ? '☼ Light mode' : '◐ Dark mode'; $('theme').setAttribute('aria-label', `Switch to ${theme === 'dark' ? 'light' : 'dark'} mode`); try { localStorage.setItem('bananamind-theme',theme); } catch {} } let savedTheme; try { savedTheme = localStorage.getItem('bananamind-theme'); } catch {} setTheme(savedTheme === 'light' ? 'light' : 'dark'); $('theme').addEventListener('click', () => setTheme(document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark')); if (isDetailPage) renderDetail(); else { render(); renderPicker(); }