From 55838bee8a62c70ca8023edb8d3a409da10b6730 Mon Sep 17 00:00:00 2001 From: Jeffrey Alan Scudder Date: Thu, 26 Mar 2026 11:55:01 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20blank.mjs=20=E2=80=94=20add=20AC=20Nati?= =?UTF-8?q?ve=20OS=20button=20linking=20to=20the=20os=20piece?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stacks above the existing paper/manual links in the bottom-left corner with a green color scheme. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../public/aesthetic.computer/disks/blank.mjs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/system/public/aesthetic.computer/disks/blank.mjs b/system/public/aesthetic.computer/disks/blank.mjs index 78835dfc7..a29ec46c0 100644 --- a/system/public/aesthetic.computer/disks/blank.mjs +++ b/system/public/aesthetic.computer/disks/blank.mjs @@ -16,6 +16,7 @@ let thanks = false; let buyBtn = null; let manualBtn = null; let paperBtn = null; +let osBtn = null; let userHandle = null; // Handle cycling (when not logged in) @@ -136,6 +137,7 @@ async function fetchHandles(screen) { function setupButtons(ui, screen) { buyBtn = new ui.TextButton(getBuyText(), { center: "x", bottom: 20, screen }); + osBtn = new ui.TextButton("AC Native OS", { x: 6, bottom: 20, screen }); paperBtn = new ui.TextButton("PLORK'ing the Planet (PDF)", { x: 6, bottom: 20, screen }); manualBtn = new ui.TextButton("ThinkPad 11e Yoga Manual (PDF)", { x: 6, bottom: 20 + (paperBtn.height || 14) + 4, screen }); } @@ -820,6 +822,17 @@ function paint($) { manualBtn.reposition({ x: 6, bottom: manualY, screen }, "ThinkPad 11e Yoga Manual (PDF)"); manualBtn.paint($btn, manualScheme, manualHover); } + const osScheme = isDark + ? [[20, 25, 20], [80, 200, 120], [140, 240, 170]] + : [[225, 240, 225], [30, 120, 50], [15, 90, 30]]; + const osHover = isDark + ? [[28, 35, 28], [120, 240, 150], [180, 255, 200]] + : [[215, 235, 215], [20, 140, 60], [10, 110, 40]]; + if (osBtn) { + const osY = 20 + (paperBtn ? paperBtn.height + 4 : 0) + (manualBtn ? manualBtn.height + 4 : 0); + osBtn.reposition({ x: 6, bottom: osY, screen }, "AC Native OS"); + osBtn.paint($btn, osScheme, osHover); + } } function act({ event: e, screen, jump, sound, ui, api }) { @@ -837,6 +850,10 @@ function act({ event: e, screen, jump, sound, ui, api }) { push: () => jump(`out:${PAPER_URL}`), }); + osBtn?.btn?.act(e, { + push: () => jump("os"), + }); + buyBtn?.btn?.act(e, { down: () => { sound?.synth({ type: "sine", tone: 440, duration: 0.05, volume: 0.3 }); -- 2.51.2