diff --git a/docs/wvs/index.html b/docs/wvs/index.html index 02769fb..643958e 100644 --- a/docs/wvs/index.html +++ b/docs/wvs/index.html @@ -33,7 +33,8 @@ fetch('wvs_map_data.json').then(r => { if (!r.ok) throw new Error(`data: ${r.sta const groups=new Map(); for(const p of data.models) groups.set(p.family,[...(groups.get(p.family)||[]),p]); const hidden=new Set(new URLSearchParams(location.search).get('hide')?.split(',').filter(Boolean)); for (const [family,points] of groups) { const group=el('g',{'data-family':family}); for(const p of points) { const star=el('path',{d:`M ${x(p.x)} ${y(p.y)-8} L ${x(p.x)+2.4} ${y(p.y)-2.4} L ${x(p.x)+8} ${y(p.y)-2.4} L ${x(p.x)+3.6} ${y(p.y)+1.6} L ${x(p.x)+5.2} ${y(p.y)+7} L ${x(p.x)} ${y(p.y)+4} L ${x(p.x)-5.2} ${y(p.y)+7} L ${x(p.x)-3.6} ${y(p.y)+1.6} L ${x(p.x)-8} ${y(p.y)-2.4} L ${x(p.x)-2.4} ${y(p.y)-2.4} Z`,fill:p.color,class:'star'}); star.append(el('title',{},p.name)); group.append(star); } svg.append(group); const latest=points.find(p=>p.label)?.label ?? points[0].name, button=document.createElement('button'); button.textContent=`${family}: ${latest}`; button.style.setProperty('--color',points[0].color); - for (const p of points.filter(p=>p.label)) { group.append(el('line',{x1:x(p.x),y1:y(p.y),x2:x(p.x)+9,y2:y(p.y)-9,stroke:p.color,'stroke-width':1})); group.append(el('text',{x:x(p.x)+11,y:y(p.y)-11,fill:p.color,'font-size':10,'font-weight':700},p.label)); } + const labelOffsets={grok:{dx:-72,dy:-30},muse:{dx:12,dy:-11},mistral:{dx:-96,dy:-26},llama:{dx:-96,dy:12}}; + for (const p of points.filter(p=>p.label)) { const {dx,dy}=labelOffsets[family]??{dx:11,dy:-11}; group.append(el('line',{x1:x(p.x),y1:y(p.y),x2:x(p.x)+dx*.82,y2:y(p.y)+dy*.82,stroke:p.color,'stroke-width':1})); group.append(el('text',{x:x(p.x)+dx,y:y(p.y)+dy,fill:p.color,'font-size':10,'font-weight':700},p.label)); } let visible = !hidden.has(family); const setVisible=on=>{visible=on;group.setAttribute('display',on?'inline':'none');button.classList.toggle('off',!on);button.setAttribute('aria-pressed',String(on));}; setVisible(visible); button.onclick=()=>setVisible(!visible); document.querySelector('#controls').append(button); } for(const [text,px,py,anchor] of [[data.axis.x[0],margin,690,'start'],[data.axis.x[1],1000-margin,690,'end'],[data.axis.y[0],500,700,'middle'],[data.axis.y[1],500,28,'middle']]) svg.append(el('text',{x:px,y:py,'text-anchor':anchor,fill:'#57534e','font-weight':700},text)); diff --git a/slop/research/wvs/20260916_openrouter/wvs_page_local.png b/slop/research/wvs/20260916_openrouter/wvs_page_local.png index c19fd1b..30a7b85 100644 Binary files a/slop/research/wvs/20260916_openrouter/wvs_page_local.png and b/slop/research/wvs/20260916_openrouter/wvs_page_local.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_page_qwen_hidden.png b/slop/research/wvs/20260916_openrouter/wvs_page_qwen_hidden.png index dc6c46f..d5a99cf 100644 Binary files a/slop/research/wvs/20260916_openrouter/wvs_page_qwen_hidden.png and b/slop/research/wvs/20260916_openrouter/wvs_page_qwen_hidden.png differ