@javierfrancoleal/dsh-supervisor 1.0.27 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard.html +36 -8
- package/package.json +1 -1
package/dashboard.html
CHANGED
|
@@ -111,6 +111,21 @@ td,th{border-bottom:1px solid var(--line);padding:9px 6px;text-align:left}
|
|
|
111
111
|
.orow .sub{font-size:13px;opacity:.7}
|
|
112
112
|
.orow.center{background:rgba(255,255,255,.30);font-size:23px;font-weight:800;border:1px solid rgba(255,255,255,.45)}
|
|
113
113
|
.orow.center .sub{opacity:.9}
|
|
114
|
+
#langStep{position:fixed;inset:0;background:linear-gradient(160deg,#4D6BFE,#7c5cff 60%,#a78bfa);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:95;transition:opacity .45s,visibility .45s}
|
|
115
|
+
#langStep.done{opacity:0;visibility:hidden}
|
|
116
|
+
.langstep-inner{text-align:center}
|
|
117
|
+
.langstep-hint{color:rgba(255,255,255,.9);font-size:14px;margin:18px 0 4px}
|
|
118
|
+
.langstep-inner .langreel{width:min(340px,86vw)}
|
|
119
|
+
.langstep-inner svg path.draw{stroke-dasharray:100;animation:drawStroke 1.2s cubic-bezier(.4,0,.2,1) forwards}
|
|
120
|
+
@media (prefers-reduced-motion: reduce){.langstep-inner svg path.draw{animation:none}}
|
|
121
|
+
#loginView{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border:none;box-shadow:none;text-align:center}
|
|
122
|
+
#loginView h2,#loginView .loginbrand h2{color:#fff}
|
|
123
|
+
#loginView .loginbrand p,#loginView .hint,#loginView .note{color:rgba(255,255,255,.82)}
|
|
124
|
+
#loginView input,#loginView select{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);color:#fff}
|
|
125
|
+
#loginView input::placeholder{color:rgba(255,255,255,.7)}
|
|
126
|
+
#loginView .loginerr{background:rgba(239,68,68,.25);color:#fff;border:1px solid rgba(255,255,255,.3)}
|
|
127
|
+
#loginView .eye{color:#fff}
|
|
128
|
+
#loginView .btn.gray{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.3)}
|
|
114
129
|
.langreel{width:min(340px,86vw);height:58px;margin:10px auto;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.30);border-radius:10px;backdrop-filter:blur(8px);overflow:hidden;cursor:pointer;position:relative;box-shadow:0 10px 30px rgba(15,23,42,.15)}
|
|
115
130
|
body.dark .langreel{background:rgba(20,31,49,.55)}
|
|
116
131
|
.ticks{display:flex;flex-direction:column;will-change:transform}
|
|
@@ -161,7 +176,14 @@ body.wall pre{max-height:40vh}
|
|
|
161
176
|
</style>
|
|
162
177
|
</head>
|
|
163
178
|
<body>
|
|
164
|
-
<div id="
|
|
179
|
+
<div id="langStep" class="hidden" style="display:none">
|
|
180
|
+
<div class="langstep-inner">
|
|
181
|
+
<svg width="110" height="110" viewBox="0 0 64 64" aria-hidden="true"><path class="draw" pathLength="100" d="M10 32 C10 22 16 14 32 14 C48 14 54 22 54 32 C54 42 48 50 32 50 C20 50 12.5 45.2 10.5 38.5 C14 42.5 20 41 25.4 34.8 A6.6 6.6 0 0 1 38.6 34.8 C38.6 31.4 36.6 28.2 32 22.5 C27.4 28.2 25.4 31.4 25.4 34.8" fill="none" stroke="#fff" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
182
|
+
<p id="langStepHint" class="langstep-hint">Choose your language</p>
|
|
183
|
+
<div class="langreel" id="langStepReel"><div class="ticks" id="langStepTicks"></div></div>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
<div id="splash"><div class="splash-inner">
|
|
165
187
|
<svg width="96" height="96" viewBox="0 0 64 64" aria-hidden="true"><defs><linearGradient id="splg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#ffffff"/><stop offset="1" stop-color="#e0e7ff"/></linearGradient></defs><path pathLength="100" d="M10 32 C10 22 16 14 32 14 C48 14 54 22 54 32 C54 42 48 50 32 50 C20 50 12.5 45.2 10.5 38.5 C14 42.5 20 41 25.4 34.8 A6.6 6.6 0 0 1 38.6 34.8 C38.6 31.4 36.6 28.2 32 22.5 C27.4 28.2 25.4 31.4 25.4 34.8" fill="none" stroke="url(#splg)" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
166
188
|
<b>Le Veilleux</b><span id="splashTag">The AI works. The human watches, decides, reviews.</span>
|
|
167
189
|
</div></div>
|
|
@@ -521,37 +543,43 @@ function buildLangMenu(){
|
|
|
521
543
|
const r=document.createElement("div");
|
|
522
544
|
r.className="orow"+(l==="en"?" center":"");
|
|
523
545
|
r.innerHTML='<span>'+LANGNAMES[l]+'</span><span class="sub">'+l.toUpperCase()+'</span>';
|
|
524
|
-
r.onclick=()=>{cur=l;applyLang();$("langOverlay").style.display="none";markReel();};
|
|
546
|
+
r.onclick=()=>{cur=l;applyLang();$("langOverlay").style.display="none";markReel();$("langStep").classList.add("done");};
|
|
525
547
|
rows.appendChild(r);
|
|
526
548
|
}
|
|
527
549
|
}
|
|
528
550
|
function markReel(){
|
|
529
|
-
document.querySelectorAll("#langTicks .tick").forEach(t=>t.classList.toggle("active",t.dataset.l===cur));
|
|
551
|
+
document.querySelectorAll("#langTicks .tick,#langStepTicks .tick").forEach(t=>t.classList.toggle("active",t.dataset.l===cur));
|
|
530
552
|
}
|
|
531
|
-
function buildReel(){
|
|
553
|
+
function buildReel(ticksId){
|
|
532
554
|
for(let pass=0;pass<2;pass++){
|
|
533
555
|
for(const l of Object.keys(LANG)){
|
|
534
556
|
const d=document.createElement("div");
|
|
535
557
|
d.className="tick";d.dataset.l=l;d.textContent=LANGNAMES[l];
|
|
536
|
-
$(
|
|
558
|
+
$(ticksId).appendChild(d);
|
|
537
559
|
}
|
|
538
560
|
}
|
|
539
561
|
const N=Object.keys(LANG).length,H=58,CYCLE=20000;
|
|
540
562
|
const t0=performance.now();
|
|
541
563
|
(function frame(now){
|
|
542
564
|
const t=(now-t0)%CYCLE;
|
|
543
|
-
$(
|
|
565
|
+
$(ticksId).style.transform="translateY(-"+((t/CYCLE)*N*H)+"px)";
|
|
544
566
|
requestAnimationFrame(frame);
|
|
545
567
|
})(t0);
|
|
546
568
|
}
|
|
547
569
|
buildLangMenu();
|
|
548
|
-
buildReel();
|
|
570
|
+
buildReel("langTicks");
|
|
571
|
+
buildReel("langStepTicks");
|
|
549
572
|
markReel();
|
|
550
573
|
$("langReel").onclick=()=>{$("langOverlay").style.display="flex";const en=document.querySelector("#langRows .center");if(en)en.scrollIntoView({block:"center"});};
|
|
574
|
+
$("langStepReel").onclick=()=>{$("langOverlay").style.display="flex";const en=document.querySelector("#langRows .center");if(en)en.scrollIntoView({block:"center"});};
|
|
551
575
|
$("closeOverlay").onclick=()=>{$("langOverlay").style.display="none";};
|
|
552
576
|
// The Apple flow: after the splash, the language menu opens once (until chosen).
|
|
553
577
|
setTimeout(()=>{
|
|
554
|
-
try{
|
|
578
|
+
try{
|
|
579
|
+
if(!localStorage.getItem("dsh-lang")){
|
|
580
|
+
$("langStep").style.display="flex";
|
|
581
|
+
}
|
|
582
|
+
}catch(e){}
|
|
555
583
|
},1600);
|
|
556
584
|
function pill(l){for(const host of ["langs","footLangs"]){const b=document.createElement("button");b.className="pill";b.dataset.l=l;b.textContent=LANG[l];b.onclick=()=>{cur=l;applyLang();};$(host).appendChild(b);}}
|
|
557
585
|
for(const l of Object.keys(LANG))pill(l);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@javierfrancoleal/dsh-supervisor",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
4
4
|
"description": "The Veilleux central control plane of the J.Franco agentic workflow suite: user accounts, the live conversation flow (listen → per-person summary → confirm → orders), telemetry, and the universal sector dashboard with 10 languages. Created by J.Franco.",
|
|
5
5
|
"author": "J.Franco",
|
|
6
6
|
"license": "MIT",
|