From 510525e2d09679b2feea015a06720ab4d10ef4ec Mon Sep 17 00:00:00 2001 From: marc Date: Sat, 29 Aug 2026 17:39:31 +0200 Subject: [PATCH] fix(honeybar): eingeklappt trug der Strich fest verdrahtetes Bernstein MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Und einklappen ging nur einmal: mount() haengte seine Zuhoerer selbst an, also hatte sie doppelt, wer die HoneyBar ueber den Strich zurueckholte. Der Klick aufs Menue oeffnete und schloss es im selben Zug — der Punkt "honeybar einklappen" war damit unerreichbar. Das Verdrahten passiert jetzt einmal. Nachgestellt mit gruener Roehre: Strich gruen, aus- und wieder einklappen funktioniert beliebig oft. Co-Authored-By: Claude Opus 5 --- web/honeybar/honeybar.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/web/honeybar/honeybar.js b/web/honeybar/honeybar.js index 02cf006..0454847 100644 --- a/web/honeybar/honeybar.js +++ b/web/honeybar/honeybar.js @@ -321,6 +321,14 @@ }); } + // Einmal verdrahtet, nicht bei jedem Einblenden neu. + // + // Der Fehler dahinter: mount() hing seine Zuhörer selbst an. Wer die HoneyBar + // einklappte und über den Strich zurückholte, hatte sie doppelt — der Klick + // auf das Menü öffnete und schloss es im selben Zug, und der Punkt + // „honeybar einklappen" war nicht mehr erreichbar. + let verdrahtet = false; + function mount() { document.body.appendChild(host); @@ -339,10 +347,16 @@ render(); applySettings(settings); + verdrahten(); clock(); setInterval(clock, 20000); root.getElementById("home").href = homeUrl; + } + + function verdrahten() { + if (verdrahtet) return; + verdrahtet = true; const menu = root.getElementById("menu"); const btn = root.getElementById("menuBtn"); @@ -392,11 +406,15 @@ ].join(";"); nub.title = "HoneyBar einblenden"; const r = nub.attachShadow({ mode: "open" }); + // Der Strich trug seine Farben fest verdrahtet und blieb deshalb bernstein, + // auch wenn in HoneyOS Grün eingestellt war. Er gehört zur HoneyBar, also + // trägt er dieselbe Röhre. + const t = ROEHREN[(settings && settings.phosphor) || "amber"] || ROEHREN.amber; r.innerHTML = `