diff --git a/public/index.html b/public/index.html
index 93c1d11..3aeb4ed 100644
--- a/public/index.html
+++ b/public/index.html
@@ -107,7 +107,7 @@ async function cpuAdvise(){const el=document.getElementById('cpuadvise');const n
async function kill(pid,name){if(!confirm('结束进程 '+name+' (PID '+pid+') ?'))return;const r=await fetch('/api/kill',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({pid})});const j=await r.json();alert(j.ok?'已发送结束信号':('失败: '+j.error));load(true)}
const PERF_DESC={powersave:'省电模式:限制睿频、能效优先,适合7×24待机/下载机,功耗噪音最低',balanced:'平衡模式:按负载自动升降频,日常使用推荐,性能功耗兼顾',performance:'高性能模式:火力全开,适合转码/编译/虚拟机等重负载,功耗温度最高'};
let perfCur='';
-async function cpuPerf(){const el=document.getElementById('cpuperf');try{const r=await fetch('/api/cpu/perf');const j=await r.json();const m=j.mode||j.saved||'balanced';const key=m+'|'+(j.governor||'')+'|'+(j.epp||'');if(perfCur===key&&el.innerHTML)return;perfCur=key;el.style.display='';el.innerHTML=`
⚡ 系统性能:${m==='powersave'?'省电模式':m==='performance'?'高性能模式':'平衡模式'} (governor=${esc(j.governor||'-')} epp=${esc(j.epp||'-')},不重启电脑)
${['powersave','balanced','performance'].map(k=>``).join('')}
${PERF_DESC[m]||''}
`}catch(e){}}
+async function cpuPerf(){const el=document.getElementById('cpuperf');try{const r=await fetch('/api/cpu/perf');const j=await r.json();const m=j.mode||j.saved||'balanced';const key=m+'|'+(j.governor||'')+'|'+(j.epp||'');if(perfCur===key&&el.innerHTML){el.style.display='';return;}perfCur=key;el.style.display='';el.innerHTML=`⚡ 系统性能:${m==='powersave'?'省电模式':m==='performance'?'高性能模式':'平衡模式'} (governor=${esc(j.governor||'-')} epp=${esc(j.epp||'-')},不重启电脑)
${['powersave','balanced','performance'].map(k=>``).join('')}
${PERF_DESC[m]||''}
`}catch(e){}}
async function setPerf(mode){const msg=document.getElementById('perfMsg');if(msg)msg.textContent='⏳ 正在切换…';try{const r=await fetch('/api/cpu/perf',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({mode})});const j=await r.json();if(!j.ok){if(msg)msg.textContent='❌ 切换失败:'+(j.error||'未知错误');else alert('切换失败: '+(j.error||'未知'));return}cpuPerf()}catch(e){if(msg)msg.textContent='❌ 切换失败:网络错误'}}
function cmpVal(p,key){
if(key==='name')return String(p.name||'');