From 409f30581c4e16dad53c34f6037eaecea5e24424 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Wed, 3 Sep 2025 01:32:17 -0700 Subject: [PATCH] Update index.html via Sune --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index cf027f1..5786fa8 100644 --- a/index.html +++ b/index.html @@ -162,7 +162,8 @@ const SUNE=window.SUNE=new Proxy({get list(){return sunes},get id(){return su.ge if(!sunes.length){const def=SUNE.create({name:'Default'});SUNE.setActive(def.id)} const state={messages:[],busy:false,controller:null,currentThreadId:null,abortRequested:false,attachments:[],stream:{rid:null,bubble:null,meta:null,text:'',done:false}} const getModelShort=m=>{const mm=m||SUNE.model||'';return mm.includes('/')?mm.split('/').pop():mm} -const renderSuneHTML=async()=>{const m=el.suneHtml,render=c=>{m.innerHTML='',m.classList.toggle('hidden',!c.trim());if(!c.trim())return;m.insertAdjacentHTML('afterbegin',c),m.querySelectorAll('script').forEach(s=>{const n=document.createElement('script');[...s.attributes].forEach(a=>n.setAttribute(a.name,a.value)),n.textContent=s.textContent,s.parentNode.replaceChild(n,s)})};const d=document.createElement('div');d.innerHTML=[SUNE.html,SUNE.extension_html].map(x=>(x||'').trim()).join('\n');const t=[...d.querySelectorAll('sune[src]')];if(!t.length)return render(d.innerHTML);render('');await Promise.all(t.map(async t=>{try{const e=await fetch(t.src);if(!e.ok)throw new Error(`Status ${e.status}`);const a=await e.json(),n=Array.isArray(a)?a[0]:a;t.outerHTML=n?`${n.html||''}\n${n.extension_html||''}`:''}catch(e){console.error(`Failed to load sune: ${t.src}`,e),t.remove()}}));render(d.innerHTML)} +const processSuneIncludes=async(h,d=0)=>{if(d>5)return``;let p=h||'';for(const[t,u]of[...(h||'').matchAll(//gi)]){const i=await fetch(u).then(r=>r.ok?r.json():Promise.reject()).then(d=>(Array.isArray(d)?d[0]:d)||{}).then(s=>[s.html||'',s.extension_html||''].join('\n')).catch(()=>``);const n=await processSuneIncludes(i,d+1);p=p.replace(t,n)}return p} +const renderSuneHTML=async()=>{const i=[SUNE.html,SUNE.extension_html].map(x=>(x||'').trim()).join('\n');const c=await processSuneIncludes(i);const m=el.suneHtml;m.innerHTML='';m.classList.toggle('hidden',!c);if(!c)return;m.insertAdjacentHTML('afterbegin',c);m.querySelectorAll('script').forEach(s=>{const n=document.createElement('script');[...s.attributes].forEach(a=>n.setAttribute(a.name,a.value));n.text=s.text;s.replaceWith(n)})} const reflectActiveSune=async()=>{const a=SUNE.active;el.suneBtnTop.title=`Settings — ${a.name}`;el.suneBtnTop.innerHTML=a.avatar?``:'✺';icons();await renderSuneHTML()} const suneRow=a=>`
` const renderSidebar=()=>{const list=[...SUNE.list].sort((a,b)=>(b.pinned-a.pinned));el.suneList.innerHTML=list.map(suneRow).join('');icons()}