OBS state snapshot: scene additions, dock geometry, landing tweaks

Captures the current OBS scene/window state after wiring Music Daemon,
Project Loading, and Game scenes through the UI. Untitled.json now
includes the new scenes and their browser sources.

Landing index.html: reverted to the simpler pre-doomguard version
(static signal bars, plain footer rig, no telemetry rotation, no
watermark animation), keeping the SIGNAL grid centering and the small
#rig opacity transition.

OBS rewrites these files on shutdown — expect future commits to show
similar dock-geometry diff noise.
This commit is contained in:
Jakub Zych
2026-04-26 02:40:24 +02:00
parent 3792d61fdb
commit 7a5b1df7b6
3 changed files with 564 additions and 98 deletions

View File

@@ -75,12 +75,10 @@ body {
}
.mark {
width: 360px; height: 360px;
/* Static glow only — animated drop-shadow is CPU-expensive in CEF.
The static breathing feel comes from the rec-blink LED + cd-pulse
elsewhere; the mark just has a steady halo. */
filter: drop-shadow(0 0 22px rgba(58, 209, 255, 0.35));
animation: mark-breathe 6s ease-in-out infinite;
}
@keyframes mark-breathe {
0%, 100% { filter: drop-shadow(0 0 18px rgba(58, 209, 255, 0.30)); }
50% { filter: drop-shadow(0 0 30px rgba(58, 209, 255, 0.50)); }
}
.bars {
display: flex;
@@ -134,67 +132,6 @@ body {
.foot .warn { color: var(--warn); }
#rig { transition: opacity 0.4s ease; }
/* ───────── Doomguard watermark ─────────
Sits at z-index: -1 — below all flow content (HUD, standby, etc.)
and below the static canvas, so the white noise paints on top of it.
Mostly buried under noise (~4% opacity, blurred); periodic "tune-in"
spikes raise opacity + sharpen blur briefly, like a CRT catching signal. */
.watermark {
position: absolute;
top: 50%;
left: 50%;
width: 38vw;
height: auto;
transform: translate(-50%, -50%);
pointer-events: none;
user-select: none;
z-index: -1;
opacity: 0;
filter: blur(2px) brightness(0.9);
animation: logo-tune-in 27s linear infinite;
}
/* Logo is invisible by default. Three irregular "almost-catches-signal"
events per loop, each preceded by stutter (rapid opacity flips) and
tiny vertical jitter — like a CRT trying to sync. Max opacity ~13%,
always blurred — never crisp, always reads as buried in the noise. */
@keyframes logo-tune-in {
/* — Long quiet — */
0%, 22% { opacity: 0; filter: blur(2px) brightness(0.9); transform: translate(-50%, -50%); }
/* Event 1: stutter in, brief soft hold (~9% peak), stutter out */
22.3% { opacity: 0.06; filter: blur(1.4px) brightness(1.0); transform: translate(-50%, -50.3%); }
22.6% { opacity: 0; filter: blur(2px) brightness(0.9); transform: translate(-50%, -49.8%); }
23% { opacity: 0.09; filter: blur(0.8px) brightness(1.1); transform: translate(-50%, -50%); }
24.6% { opacity: 0.09; filter: blur(0.8px) brightness(1.1); transform: translate(-50%, -50%); }
25% { opacity: 0; filter: blur(2px) brightness(0.9); }
25.3% { opacity: 0.04; }
25.6% { opacity: 0; }
/* — Long quiet — */
44% { opacity: 0; transform: translate(-50%, -50%); }
/* Event 2: split-second flutter, signal almost catches but loses it (~5% peak) */
44.2% { opacity: 0.05; filter: blur(1.4px) brightness(1.0); transform: translate(-50.3%, -50%); }
44.5% { opacity: 0; transform: translate(-50%, -50%); }
/* — Quiet — */
68% { opacity: 0; transform: translate(-50%, -50%); filter: blur(2px) brightness(0.9); }
/* Event 3: stuttered emergence to longer hold (~13% peak), stuttered exit */
68.3% { opacity: 0.05; filter: blur(2px) brightness(0.95); transform: translate(-49.7%, -50%); }
68.6% { opacity: 0; }
69% { opacity: 0.08; filter: blur(1px) brightness(1.05); transform: translate(-50%, -50.2%); }
70.5% { opacity: 0.13; filter: blur(0.4px) brightness(1.15); transform: translate(-50%, -50%); }
72% { opacity: 0.10; filter: blur(0.6px) brightness(1.1); }
73% { opacity: 0; filter: blur(2px) brightness(0.9); }
73.3% { opacity: 0.05; }
73.6% { opacity: 0; }
/* — Quiet to end — */
100% { opacity: 0; transform: translate(-50%, -50%); }
}
/* ───────── Overlays ───────── */
#static {
position: absolute; inset: 0;
@@ -248,11 +185,6 @@ body {
</head>
<body>
<img class="watermark"
src="file:///home/jin/cloud.jakubzych.com/_img/logos/dgw.png"
alt=""
aria-hidden="true">
<header class="hud">
<div class="group">
<span><span class="led"></span>TRANSMISSION</span>
@@ -343,7 +275,8 @@ body {
ctx.putImageData(img, 0, 0);
};
drawNoise();
setInterval(drawNoise, 1000 / 12);
// 8 fps — visually almost identical to 12 fps but ~33% less paint work.
setInterval(drawNoise, 1000 / 8);
// ───────── Telemetry: rotating real-data subtitle ─────────
// All lines derive from telemetry.js (window.__TEL), generated by telemetry.sh.