Welcome to Aurvana

No file chosen

Launch History

`; } function openPage(blobUrl,name){ const win = window.open('', '_blank'); if(!win){ alert("Popup blocked"); return; } win.document.write(buildPage(blobUrl)); win.document.close(); saveHistory(name); } function saveHistory(entry){ let list = JSON.parse(localStorage.getItem('history') || '[]'); list.push({u:entry,t:new Date().toISOString()}); localStorage.setItem('history', JSON.stringify(list)); } function renderHistory(){ historyList.innerHTML=''; let list = JSON.parse(localStorage.getItem('history') || '[]'); list.reverse().forEach(item=>{ let div = document.createElement('div'); div.textContent = item.u + " ("+new Date(item.t).toLocaleString()+")"; div.style.cursor='pointer'; div.onclick=()=>window.open(item.u,'_blank'); historyList.appendChild(div); }); } fileInput.onchange = ()=>{ fileName.textContent = fileInput.files[0]?.name || "No file chosen"; }; launchUrl.onclick = ()=>{ let url = urlInput.value.trim(); if(!url) return alert("Enter URL"); if(!url.startsWith('http')) url = 'https://' + url; const blob = new Blob([buildPage(url)],{type:'text/html'}); const blobUrl = URL.createObjectURL(blob); openPage(blobUrl,url); setTimeout(()=>URL.revokeObjectURL(blobUrl),30000); }; launchFile.onclick = ()=>{ const file = fileInput.files[0]; if(!file) return alert("Select file"); const blobUrl = URL.createObjectURL(file); openPage(blobUrl,file.name); setTimeout(()=>URL.revokeObjectURL(blobUrl),60000); }; saveBtn.onclick = ()=>{ const url = urlInput.value.trim(); if(!url) return; let list = JSON.parse(localStorage.getItem('saved') || '[]'); if(!list.includes(url)) list.push(url); localStorage.setItem('saved', JSON.stringify(list)); status.textContent="Saved!"; }; toggleSaved.onclick = ()=>{ savedPanel.style.display = savedPanel.style.display === 'block' ? 'none' : 'block'; savedPanel.innerHTML=''; let list = JSON.parse(localStorage.getItem('saved') || '[]'); list.forEach((url,i)=>{ let row = document.createElement('div'); let span = document.createElement('span'); span.textContent = url; let launch = document.createElement('button'); launch.textContent='Launch'; launch.onclick=()=>window.open(url,'_blank'); let del = document.createElement('button'); del.textContent='Delete'; del.onclick=()=>{ list.splice(i,1); localStorage.setItem('saved',JSON.stringify(list)); toggleSaved.click(); }; row.append(span,launch,del); savedPanel.appendChild(row); }); }; historyBtn.onclick = ()=>{ historyPanel.style.display = historyPanel.style.display === 'block' ? 'none':'block'; renderHistory(); }; urlInput.addEventListener('keydown',e=>{ if(e.key==='Enter') launchUrl.click(); }); })();