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(/`:'✺';icons();await renderSuneHTML()}
const suneRow=a=>`