fix stray window.DRB text leaking on every page (was outside script tag); stars scurry TO cursor on background click (converge while held/moving, then relax); nebula dust drifts toward cursor during scurry
This commit is contained in:
36
app.py
36
app.py
@@ -366,7 +366,7 @@ li{text-align:left;margin:.2rem 0}
|
|||||||
<main id="main">{{body}}</main>
|
<main id="main">{{body}}</main>
|
||||||
<footer>DARK0RBITS · built for agents & humans · <a href="{{bmac}}" target=_blank rel=noopener>☕ fuel the lab</a></footer>
|
<footer>DARK0RBITS · built for agents & humans · <a href="{{bmac}}" target=_blank rel=noopener>☕ fuel the lab</a></footer>
|
||||||
<a id=dev href="#" onclick="location.href='mailto:'+atob('bWFrZW1vbmV5czhAcHJvdG9uLm1l')+'?subject=Dark0rbits%20support';return false">✦ REACH THE DEV</a>
|
<a id=dev href="#" onclick="location.href='mailto:'+atob('bWFrZW1vbmV5czhAcHJvdG9uLm1l')+'?subject=Dark0rbits%20support';return false">✦ REACH THE DEV</a>
|
||||||
{{ CFG_JS }}
|
<script>{{ CFG_JS }}</script>
|
||||||
<div id=gearbtn onclick="spToggle()" title="settings — space, speed, density, hue" style="position:fixed;left:14px;bottom:14px;z-index:70;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(7,10,19,.85);color:var(--acc);font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center" aria-label="settings">⚙</div>
|
<div id=gearbtn onclick="spToggle()" title="settings — space, speed, density, hue" style="position:fixed;left:14px;bottom:14px;z-index:70;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(7,10,19,.85);color:var(--acc);font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center" aria-label="settings">⚙</div>
|
||||||
<div id=spanel class="card" style="display:none;position:fixed;left:14px;bottom:62px;z-index:71;width:270px;max-height:76vh;overflow-y:auto;text-align:left" aria-label="site settings">
|
<div id=spanel class="card" style="display:none;position:fixed;left:14px;bottom:62px;z-index:71;width:270px;max-height:76vh;overflow-y:auto;text-align:left" aria-label="site settings">
|
||||||
<b style=color:var(--acc)>TUNABLES</b> <span style="color:var(--dim);font-size:.75rem">(saved to your account — agents: POST /api/settings)</span>
|
<b style=color:var(--acc)>TUNABLES</b> <span style="color:var(--dim);font-size:.75rem">(saved to your account — agents: POST /api/settings)</span>
|
||||||
@@ -405,7 +405,7 @@ window.addEventListener('load',lbDone);
|
|||||||
(function(){
|
(function(){
|
||||||
var DRB=window.DRB||{};
|
var DRB=window.DRB||{};
|
||||||
function drbN(v){v=parseFloat(v);return isNaN(v)?1:v}
|
function drbN(v){v=parseFloat(v);return isNaN(v)?1:v}
|
||||||
var c=document.getElementById('space'),x=c.getContext('2d'),W,H,stars=[],dust=[],warpF=1,warpT=0;
|
var c=document.getElementById('space'),x=c.getContext('2d'),W,H,stars=[],dust=[];
|
||||||
function rs(){W=c.width=innerWidth;H=c.height=innerHeight;
|
function rs(){W=c.width=innerWidth;H=c.height=innerHeight;
|
||||||
stars=[];var n=Math.min(340,Math.floor(W*H/7000*drbN(DRB.density||1)));
|
stars=[];var n=Math.min(340,Math.floor(W*H/7000*drbN(DRB.density||1)));
|
||||||
for(var i=0;i<n;i++)stars.push({x:Math.random()*W,y:Math.random()*H,z:Math.random()+.3,tw:Math.random()*6.28});
|
for(var i=0;i<n;i++)stars.push({x:Math.random()*W,y:Math.random()*H,z:Math.random()+.3,tw:Math.random()*6.28});
|
||||||
@@ -418,16 +418,26 @@ function frame(){
|
|||||||
x.clearRect(0,0,W,H);
|
x.clearRect(0,0,W,H);
|
||||||
if(DRB.bg==='0'){x.clearRect(0,0,W,H);requestAnimationFrame(frame);return;}
|
if(DRB.bg==='0'){x.clearRect(0,0,W,H);requestAnimationFrame(frame);return;}
|
||||||
var spd=drbN(DRB.speed===undefined?1:DRB.speed),twk=drbN(DRB.twinkle===undefined?1:DRB.twinkle);
|
var spd=drbN(DRB.speed===undefined?1:DRB.speed),twk=drbN(DRB.twinkle===undefined?1:DRB.twinkle);
|
||||||
if(warpT>0){warpT-=.04;warpF=1+warpT*10}else warpF=1;
|
if(scurry){
|
||||||
for(var i=0;i<dust.length;i++){var d=dust[i];d.x+=d.vx*spd*warpF;d.y+=d.vy*spd*warpF;
|
scurry.t-=.012;
|
||||||
|
if(scurry.t<=0)scurry=null;
|
||||||
|
else{
|
||||||
|
for(i=0;i<stars.length;i++){var st=stars[i];
|
||||||
|
var sx=st.x+mx*st.z*40, sy=st.y+my*st.z*40;
|
||||||
|
var dx=scurry.x-sx, dy=scurry.y-sy, dist=Math.sqrt(dx*dx+dy*dy)+.001;
|
||||||
|
var pull=(1.4+st.z)*scurry.t*3.2;
|
||||||
|
st.x+=dx/dist*pull; st.y+=dy/dist*pull;}}
|
||||||
|
}
|
||||||
|
for(var i=0;i<dust.length;i++){var d=dust[i];d.x+=d.vx*spd;d.y+=d.vy*spd;
|
||||||
|
if(scurry){var ddx=scurry.x-d.x,ddy=scurry.y-d.y,dd=Math.sqrt(ddx*ddx+ddy*ddy)+.001;if(dd<600){d.x+=ddx/dd*scurry.t*2;d.y+=ddy/dd*scurry.t*2}}}
|
||||||
if(d.x<-100)d.x=W+80;if(d.x>W+100)d.x=-80;if(d.y<-100)d.y=H+80;if(d.y>H+100)d.y=-80;
|
if(d.x<-100)d.x=W+80;if(d.x>W+100)d.x=-80;if(d.y<-100)d.y=H+80;if(d.y>H+100)d.y=-80;
|
||||||
var g=x.createRadialGradient(d.x,d.y,0,d.x,d.y,d.r);
|
var g=x.createRadialGradient(d.x,d.y,0,d.x,d.y,d.r);
|
||||||
g.addColorStop(0,'hsla('+d.h+',70%,60%,'+d.a+')');g.addColorStop(1,'transparent');
|
g.addColorStop(0,'hsla('+d.h+',70%,60%,'+d.a+')');g.addColorStop(1,'transparent');
|
||||||
x.fillStyle=g;x.beginPath();x.arc(d.x,d.y,d.r,0,6.29);x.fill();}
|
x.fillStyle=g;x.beginPath();x.arc(d.x,d.y,d.r,0,6.29);x.fill();}
|
||||||
mx+=(tx-mx)*.03;my+=(ty-my)*.03;
|
mx+=(tx-mx)*.03;my+=(ty-my)*.03;
|
||||||
for(i=0;i<stars.length;i++){var s=stars[i];s.tw+=.011*twk;
|
for(i=0;i<stars.length;i++){var s=stars[i];s.tw+=.011*twk;
|
||||||
var px=s.x+mx*s.z*40*warpF, py=s.y+my*s.z*40*warpF;
|
var px=s.x+mx*s.z*40, py=s.y+my*s.z*40;
|
||||||
var a=(.28+.4*Math.abs(Math.sin(s.tw)))*(warpT>0?1.6:1);
|
var a=.28+.4*Math.abs(Math.sin(s.tw));
|
||||||
x.fillStyle='rgba(220,228,255,'+(a*s.z)+')';
|
x.fillStyle='rgba(220,228,255,'+(a*s.z)+')';
|
||||||
x.beginPath();x.arc(px,py,s.z*1.25,0,6.29);x.fill();}
|
x.beginPath();x.arc(px,py,s.z*1.25,0,6.29);x.fill();}
|
||||||
requestAnimationFrame(frame);}
|
requestAnimationFrame(frame);}
|
||||||
@@ -468,12 +478,16 @@ fetch('/api/settings',{method:'POST',headers:{'Content-Type':'application/x-www-
|
|||||||
var _st=document.createElement('style');_st.textContent='.noscan .gridlines{display:none!important}';document.head.appendChild(_st);
|
var _st=document.createElement('style');_st.textContent='.noscan .gridlines{display:none!important}';document.head.appendChild(_st);
|
||||||
new MutationObserver(function(){document.body.classList.toggle('noscan',window.DRB&&window.DRB.scan==='0')}).observe(document.documentElement,{attributes:true,childList:true,subtree:true});
|
new MutationObserver(function(){document.body.classList.toggle('noscan',window.DRB&&window.DRB.scan==='0')}).observe(document.documentElement,{attributes:true,childList:true,subtree:true});
|
||||||
setTimeout(function(){spApply()},0);
|
setTimeout(function(){spApply()},0);
|
||||||
// ---------- hyperdrive warp on click ----------
|
// ---------- stars scurry to cursor on background click ----------
|
||||||
document.addEventListener('click',function(e){
|
var scurry=null; // {x,y,t}
|
||||||
|
document.addEventListener('pointerdown',function(e){
|
||||||
if(window.DRB&&window.DRB.warp==='0')return;
|
if(window.DRB&&window.DRB.warp==='0')return;
|
||||||
if(e.target.closest('a,button,input,select,textarea,label,.card,#spanel,#palwin,#gearbtn'))return;
|
if(e.target.closest('a,button,input,select,textarea,label,.card,#spanel,#palwin,#gearbtn,#pinp'))return;
|
||||||
warpT=.35;
|
scurry={x:e.clientX,y:e.clientY,t:1};
|
||||||
});
|
},{passive:true});
|
||||||
|
document.addEventListener('pointermove',function(e){
|
||||||
|
if(scurry&&scurry.t>0){scurry.x=e.clientX;scurry.y=e.clientY}
|
||||||
|
},{passive:true});
|
||||||
// ---------- command palette (⌘K / Ctrl+K) ----------
|
// ---------- command palette (⌘K / Ctrl+K) ----------
|
||||||
var PAL=[
|
var PAL=[
|
||||||
['/ip','IP intel — geo, ASN, VPN flags'],
|
['/ip','IP intel — geo, ASN, VPN flags'],
|
||||||
|
|||||||
Reference in New Issue
Block a user