Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: os.mjs — show build variant in telemetry, hide CL when unavailable

Build telemetry header now shows "Building (C)" or "Building (Common Lisp)".
CL variant selector only appears once the CL ISO exists on CDN.
Probes cl-native-notepat ISO on boot to determine availability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+15 -6
+15 -6
system/public/aesthetic.computer/disks/os.mjs
··· 37 37 let bootBtn = null; // "boot to: X" button 38 38 let variantIdx = 0; // index into VARIANTS (0=C, 1=Common Lisp) 39 39 let variantBtn = null; // "build: C" selector 40 + let clAvailable = false; // true once we confirm CL ISO exists on CDN 40 41 let wifiEnabled = true; 41 42 let wifiBtn = null; // "internet: ON/OFF" toggle 42 43 let scrollY = 0; ··· 252 253 fetchBuildStatus(needsPaint); 253 254 buildPollTimer = setInterval(() => fetchBuildStatus(needsPaint), 30000); 254 255 256 + // Probe CL variant availability (HEAD request) 257 + fetch(ISO_BASE.replace("native-notepat", "cl-native-notepat"), { method: "HEAD" }) 258 + .then(r => { clAvailable = r.ok; console.log("[os] CL variant:", clAvailable ? "available" : "not yet"); needsPaint(); }) 259 + .catch(() => { clAvailable = false; }); 260 + 255 261 if (handle) { 256 262 console.log("[os] Authorizing @" + handle + "..."); 257 263 api?.authorize?.().then((t) => { ··· 397 403 398 404 // --- ACTIVE BUILD --- 399 405 if (activeBuild) { 400 - sectionHeader("Building", dark ? [20, 28, 20] : [215, 235, 215], dark ? [14, 20, 14] : [228, 240, 228], 120); 406 + const rawStage = activeBuild.stage || "starting"; 407 + const isCLBuild = rawStage.startsWith("cl-"); 408 + const buildVariant = isCLBuild ? "Common Lisp" : "C"; 409 + sectionHeader("Building (" + buildVariant + ")", dark ? [20, 28, 20] : [215, 235, 215], dark ? [14, 20, 14] : [228, 240, 228], 120); 401 410 402 411 // Status line: stage + percentage 403 - const stageLabel = activeBuild.stage || "starting"; 412 + const stageLabel = isCLBuild ? rawStage.slice(3) : rawStage; 404 413 const pct = activeBuild.percent || 0; 405 414 ink(...C.current); 406 415 $.write(stageLabel + " " + pct + "%", { x: pad, y }); ··· 522 531 y += bootBtn.height + btnGap; 523 532 } 524 533 525 - // Build variant selector 526 - if (variantBtn) { 534 + // Build variant selector (only show when CL is available) 535 + if (variantBtn && clAvailable) { 527 536 variantBtn.reposition({ x: btnX(variantBtn), y }); 528 537 variantBtn.paint( 529 538 $, ··· 765 774 }); 766 775 } 767 776 768 - // Build variant selector 769 - if (variantBtn) { 777 + // Build variant selector (only when CL is available) 778 + if (variantBtn && clAvailable) { 770 779 variantBtn.btn.act(e, { 771 780 push: () => { 772 781 variantIdx = (variantIdx + 1) % VARIANTS.length;