Milestone v1 (v2.0.0): Mokosh — Session Capture #1

Merged
strategy155 merged 297 commits from gsd/phase-04-harden-clean-up-optional into main 2026-05-31 15:34:17 +00:00
Showing only changes of commit 923aaca3a8 - Show all commits

View File

@@ -105,8 +105,28 @@ fi
# --- compose the smoke tab data URL --- # --- compose the smoke tab data URL ---
read -r -d '' SMOKE_HTML <<'EOF' || true read -r -d '' SMOKE_HTML <<'EOF' || true
<title>Mokosh Smoke Test</title> <title>Mokosh Smoke Test</title>
<style>body{font-family:sans-serif;background:#222;color:#eee;padding:40px;line-height:1.5}code{background:#444;padding:2px 6px;border-radius:3px}ol li{margin:6px 0}.flash{animation:flash 1s infinite;background:#0a4;padding:4px 8px;display:inline-block}@keyframes flash{0%,100%{opacity:1}50%{opacity:.4}}</style> <style>
body{font-family:sans-serif;background:#222;color:#eee;padding:40px;line-height:1.5}
code{background:#444;padding:2px 6px;border-radius:3px}
ol li{margin:6px 0}
.flash{animation:flash 1s infinite;background:#0a4;padding:4px 8px;display:inline-block}
@keyframes flash{0%,100%{opacity:1}50%{opacity:.4}}
/* Diagnostic timer overlay — high-contrast monospace pinned top-right so it appears in every
recorded frame. T+ counts seconds since page load (matches the moment Mokosh starts recording);
wall is HH:MM:SS local time for cross-referencing with SW console logs. The visible value
in the last frame of the saved video minus the value at save-click time = the operator-visible
"stale gap" the D-13 architecture leaks. */
#mokosh-timer{position:fixed;top:12px;right:12px;background:#000;color:#0f0;padding:10px 16px;
border:2px solid #0f0;border-radius:6px;font-family:'Courier New',monospace;font-size:28px;
font-weight:bold;line-height:1.15;text-align:right;z-index:9999;box-shadow:0 2px 8px rgba(0,0,0,.6)}
#mokosh-timer .lbl{font-size:11px;color:#0a0;letter-spacing:.05em}
#mokosh-timer .val{font-variant-numeric:tabular-nums}
</style>
<body> <body>
<div id="mokosh-timer">
<div><span class="lbl">T+</span> <span class="val" id="t-elapsed">0.0s</span></div>
<div><span class="lbl">wall</span> <span class="val" id="t-wall">--:--:--</span></div>
</div>
<h1>🧵 Mokosh Smoke Test</h1> <h1>🧵 Mokosh Smoke Test</h1>
<p>This tab is the share-screen target. The picker auto-accepts because the title matches <code>--auto-select-desktop-capture-source</code>.</p> <p>This tab is the share-screen target. The picker auto-accepts because the title matches <code>--auto-select-desktop-capture-source</code>.</p>
<h2>Steps:</h2> <h2>Steps:</h2>
@@ -114,10 +134,26 @@ read -r -d '' SMOKE_HTML <<'EOF' || true
<li><strong class="flash">First time only:</strong> Go to <code>chrome://extensions</code> → toggle <strong>Developer mode</strong> ON → <strong>Load unpacked</strong> → select <code>/home/parf/projects/work/repremium/dist</code>.<br>(Set <code>KEEP_PROFILE=1</code> when re-running this script to skip the reload.)</li> <li><strong class="flash">First time only:</strong> Go to <code>chrome://extensions</code> → toggle <strong>Developer mode</strong> ON → <strong>Load unpacked</strong> → select <code>/home/parf/projects/work/repremium/dist</code>.<br>(Set <code>KEEP_PROFILE=1</code> when re-running this script to skip the reload.)</li>
<li>Click the <strong>AI Call Recorder</strong> toolbar icon (or puzzle-piece menu).</li> <li>Click the <strong>AI Call Recorder</strong> toolbar icon (or puzzle-piece menu).</li>
<li>The picker auto-accepts <em>this tab</em>. Confirm Chrome's "Sharing your screen" indicator appears.</li> <li>The picker auto-accepts <em>this tab</em>. Confirm Chrome's "Sharing your screen" indicator appears.</li>
<li>Wait <strong>≥ 35 seconds</strong>. Move the mouse around or scroll this page so vp9 has frame deltas.</li> <li>Wait <strong>≥ 35 seconds</strong>. <em>Note the timer value in the corner</em>. Move the mouse around or scroll this page so vp9 has frame deltas.</li>
<li>Click the toolbar icon again → click <strong>Сохранить отчёт об ошибке</strong>.</li> <li>Click the toolbar icon again → click <strong>Сохранить отчёт об ошибке</strong>. <em>Note T+ and wall at the moment you click — compare to the LAST visible timer values in the saved video. Gap = operator-visible "stale" window.</em></li>
</ol> </ol>
<p>The script in your terminal will detect the download and finish the ffprobe gate automatically.</p> <p>The script in your terminal will detect the download and finish the ffprobe gate automatically.</p>
<script>
(function(){
var t0 = performance.now();
var el = document.getElementById('t-elapsed');
var wallEl = document.getElementById('t-wall');
function pad(n){return String(n).padStart(2,'0');}
function tick(){
var dt = (performance.now() - t0) / 1000;
el.textContent = dt.toFixed(1) + 's';
var now = new Date();
wallEl.textContent = pad(now.getHours()) + ':' + pad(now.getMinutes()) + ':' + pad(now.getSeconds());
}
tick();
setInterval(tick, 100);
})();
</script>
</body> </body>
EOF EOF
# WR-04 fix: python3 is required (asserted in pre-flight). NO fallback — # WR-04 fix: python3 is required (asserted in pre-flight). NO fallback —