mirror of
https://github.com/multipleof4/devsune.git
synced 2026-01-14 08:27:55 +00:00
This build was committed by a bot.
This commit is contained in:
@@ -16,64 +16,36 @@
|
|||||||
#scriptEditor,#htmlEditor{outline:none}
|
#scriptEditor,#htmlEditor{outline:none}
|
||||||
</style>
|
</style>
|
||||||
<script src="https://unpkg.com/htmx.org@1.9.12"></script>
|
<script src="https://unpkg.com/htmx.org@1.9.12"></script>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Sune</title>
|
||||||
|
<link rel="icon" type="image/avif" href="https://sune.planetrenox.com/✺.avif">
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/tiny-ripple@0.2.0"></script>
|
||||||
|
<style>:root{--safe-bottom:env(safe-area-inset-bottom)}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-thumb{background:#e5e7eb;border-radius:999px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}</style>
|
||||||
<script>(function(){
|
<script>(function(){
|
||||||
function h(v){try{return JSON.parse(v)}catch{return null}}
|
function r(f){if(document.readyState!=='loading')f();else document.addEventListener('DOMContentLoaded',f)}
|
||||||
function isOR(url){try{var u=new URL(url,location.href);return /(^|\.)openrouter\.ai$/i.test(u.hostname)&&/\/api\/v1\/chat\/completions$/.test(u.pathname)}catch{return false}}
|
function overlay(){
|
||||||
function hasStream(body){if(body==null)return false;try{if(typeof body==='string')return /"stream"\s*:\s*true/i.test(body);if(body instanceof Blob)return false;return false}catch{return false}}
|
var o=document.getElementById('sw-overlay'); if(o) return o
|
||||||
function ensureHeaders(hdrs){if(hdrs instanceof Headers){return hdrs}var out=new Headers();if(Array.isArray(hdrs)){hdrs.forEach(function(p){out.append(p[0],p[1])});return out}if(hdrs&&typeof hdrs==='object'){Object.keys(hdrs).forEach(function(k){out.append(k,hdrs[k])});return out}return out}
|
o=document.createElement('div'); o.id='sw-overlay'
|
||||||
function uid(){return 'swr-'+Math.random().toString(36).slice(2,10)}
|
Object.assign(o.style,{position:'fixed',top:'0',left:'0',right:'0',padding:'20px 24px',zIndex:'2147483647',background:'linear-gradient(90deg,#ff9800,#ffc107)',color:'#fff',textAlign:'center',font:'700 22px/1.2 system-ui,-apple-system,Segoe UI,Roboto,sans-serif',letterSpacing:'0.5px',boxShadow:'0 12px 28px rgba(0,0,0,.35)'})
|
||||||
var ofetch=window.fetch
|
var s=document.createElement('span'); s.id='sw-overlay-text'; s.style.display='inline-block'; s.style.padding='4px 10px'; s.style.borderRadius='8px'; s.style.background='rgba(0,0,0,.25)'
|
||||||
window.fetch=function(input,init){
|
var x=document.createElement('button'); x.textContent='×'; Object.assign(x.style,{position:'absolute',top:'8px',right:'12px',width:'36px',height:'36px',border:'0',borderRadius:'10px',background:'rgba(255,255,255,.15)',color:'#fff',fontSize:'24px',cursor:'pointer'})
|
||||||
try{
|
x.onclick=function(){o.remove()}
|
||||||
var url=typeof input==='string'?input:(input&&input.url)||''
|
o.appendChild(s); o.appendChild(x); document.body.appendChild(o); return o
|
||||||
var m=((init&&init.method)||(input&&input.method)||'GET').toUpperCase()
|
|
||||||
if(m==='POST'&&isOR(url)){
|
|
||||||
var body=(init&&init.body)||null
|
|
||||||
if(hasStream(body)){
|
|
||||||
var id=uid()
|
|
||||||
var hdrs=ensureHeaders(init&&init.headers)
|
|
||||||
hdrs.set('x-swr-id',id)
|
|
||||||
init=Object.assign({},init,{headers:hdrs})
|
|
||||||
sessionStorage.setItem('swr:current',id)
|
|
||||||
sessionStorage.setItem('swr:seq:'+id,'0')
|
|
||||||
}
|
}
|
||||||
|
function setStatus(kind,msg){
|
||||||
|
var o=overlay(), t=o.querySelector('#sw-overlay-text')
|
||||||
|
if(kind==='ok'){o.style.background='linear-gradient(90deg,#00c853,#00e5ff)'; t.textContent=msg||'SERVICE WORKER: ACTIVE'}
|
||||||
|
else if(kind==='fail'){o.style.background='linear-gradient(90deg,#c62828,#ad1457)'; t.textContent=msg||'SERVICE WORKER: NOT RUNNING'}
|
||||||
|
else {o.style.background='linear-gradient(90deg,#ff9800,#ffc107)'; t.textContent=msg||'SERVICE WORKER: WAITING'}
|
||||||
}
|
}
|
||||||
}catch{}
|
r(function(){
|
||||||
return ofetch.apply(this,arguments)
|
setStatus('wait','SERVICE WORKER: WAITING')
|
||||||
}
|
if(!('serviceWorker' in navigator)){setStatus('fail','NO SERVICE WORKER SUPPORT'); alert('NO SERVICE WORKER SUPPORT'); return}
|
||||||
function applyDelta(id,seq,delta){
|
var done=false
|
||||||
try{
|
navigator.serviceWorker.addEventListener('message',function(){done=true; setStatus('ok','SERVICE WORKER: ACTIVE')})
|
||||||
var list=document.querySelectorAll('.msg-bubble'); if(!list.length)return
|
navigator.serviceWorker.ready.then(function(reg){if(reg&®.active) reg.active.postMessage({type:'PING',ts:Date.now()})})
|
||||||
var el=list[list.length-1]
|
setTimeout(function(){if(!done){setStatus('fail','SERVICE WORKER: NOT RUNNING'); alert('SERVICE WORKER NOT RUNNING')}},3000)
|
||||||
var cur=el.__swr_text||''
|
})
|
||||||
el.__swr_text=cur+String(delta||'')
|
|
||||||
if(window.markdownit){var md=window.markdownit({html:false,linkify:true,typographer:true,breaks:true});el.innerHTML=md.render(el.__swr_text)}
|
|
||||||
else{el.textContent=el.__swr_text}
|
|
||||||
sessionStorage.setItem('swr:seq:'+id,String(seq))
|
|
||||||
}catch{}
|
|
||||||
}
|
|
||||||
function onMsg(e){
|
|
||||||
var m=e&&e.data||{}
|
|
||||||
if(!m||!m.type)return
|
|
||||||
if(m.type==='SW_DELTA'){var id=m.id,seq=m.seq,delta=m.delta;if(id&&delta!=null)applyDelta(id,seq,delta)}
|
|
||||||
else if(m.type==='SW_DONE'){var id=m.id;if(id){sessionStorage.removeItem('swr:current')}}
|
|
||||||
}
|
|
||||||
if(navigator.serviceWorker){
|
|
||||||
navigator.serviceWorker.addEventListener('message',onMsg)
|
|
||||||
function replay(){
|
|
||||||
try{
|
|
||||||
var id=sessionStorage.getItem('swr:current')
|
|
||||||
if(!id)return
|
|
||||||
var seq=sessionStorage.getItem('swr:seq:'+id)||'0'
|
|
||||||
var ctrl=navigator.serviceWorker.controller
|
|
||||||
if(ctrl) ctrl.postMessage({type:'SW_REPLAY',id,fromSeq:+seq})
|
|
||||||
}catch{}
|
|
||||||
}
|
|
||||||
if(document.visibilityState==='visible'){
|
|
||||||
navigator.serviceWorker.ready.then(function(){setTimeout(replay,0)})
|
|
||||||
}
|
|
||||||
document.addEventListener('visibilitychange',function(){if(document.visibilityState==='visible') replay()},{passive:true})
|
|
||||||
}
|
|
||||||
})();</script>
|
})();</script>
|
||||||
<link rel="manifest" href="/devsune/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/devsune/registerSW.js"></script></head>
|
<link rel="manifest" href="/devsune/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/devsune/registerSW.js"></script></head>
|
||||||
<body class="bg-white text-gray-900 selection:bg-black/10" hx-on="click: if(!document.getElementById('historyMenu').contains(event.target)&&!event.target.closest('[data-thread-menu]')) hideHistoryMenu(); if(!document.getElementById('suneMenu').contains(event.target)&&!event.target.closest('[data-sune-menu]')) hideSuneMenu(); if(!document.getElementById('userMenu').contains(event.target)&&!document.getElementById('userMenuBtn').contains(event.target)) document.getElementById('userMenu').classList.add('hidden')">
|
<body class="bg-white text-gray-900 selection:bg-black/10" hx-on="click: if(!document.getElementById('historyMenu').contains(event.target)&&!event.target.closest('[data-thread-menu]')) hideHistoryMenu(); if(!document.getElementById('suneMenu').contains(event.target)&&!event.target.closest('[data-sune-menu]')) hideSuneMenu(); if(!document.getElementById('userMenu').contains(event.target)&&!document.getElementById('userMenuBtn').contains(event.target)) document.getElementById('userMenu').classList.add('hidden')">
|
||||||
|
|||||||
Reference in New Issue
Block a user