[object Object]

← back to Fix Live Board

board: default to light (black-on-white) day theme; add creds-in-URL fetch guard (fixes empty board when opened with user:pass@host)

7bb00cf364a71e09b3267d19f7972ccc2e292bc0 · 2026-09-02 14:53:13 -0700 · Steve

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC

Files touched

Diff

commit 7bb00cf364a71e09b3267d19f7972ccc2e292bc0
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Sep 2 14:53:13 2026 -0700

    board: default to light (black-on-white) day theme; add creds-in-URL fetch guard (fixes empty board when opened with user:pass@host)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01KkjHuJKiariXaTtFujZxWC
---
 public/board.html | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/public/board.html b/public/board.html
index d9ebee2..ad7da21 100644
--- a/public/board.html
+++ b/public/board.html
@@ -99,6 +99,10 @@ button.tg{cursor:pointer}button.tg.on{border-color:var(--accent);color:var(--acc
 <div class="scrim" id="scrim"></div>
 <aside class="drawer" id="drawer" aria-hidden="true"></aside>
 <script>
+// creds-in-URL fetch guard: relative fetch() breaks when the page is opened with user:pass@host
+// (poisoned baseURI). Resolve relative URLs against a credential-free base instead.
+(function(){var _f=window.fetch,BASE=location.origin+location.pathname;
+ window.fetch=function(u,o){try{if(typeof u==='string'&&!/^[a-z]+:\/\//i.test(u))u=new URL(u,BASE).href;}catch(e){}return _f.call(this,u,o);};})();
 let META={fields:[],fixers:[],name:'Fix Live Board'}, DATA=[], SEL=null;
 const KEY='flb_'+location.port;
 const $=id=>document.getElementById(id);
@@ -182,7 +186,7 @@ function renderFixers(){$('fixers').innerHTML=(META.fixers||[]).map(f=>'<button
   document.querySelectorAll('.fx:not(.gated)').forEach(b=>b.addEventListener('click',async e=>{e.stopPropagation();b.disabled=true;b.textContent='running…';try{const r=await fetch('api/fix?id='+encodeURIComponent(b.dataset.id),{method:'POST'});const j=await r.json();b.textContent=(j.ok?'✓ ':'✗ ')+b.dataset.id;}catch(x){b.textContent='error';}setTimeout(poll,1200);setTimeout(renderFixers,4000);}));}
 // init persisted state
 (function(){
-  applyTheme(get('theme', (window.matchMedia&&matchMedia('(prefers-color-scheme: dark)').matches)?'dark':'light'));
+  applyTheme(get('theme','light')); // default = day (black text on white); toggle to Night persists
   const c=get('cols','3');$('dens').value=c;setCols(c);
   $('sort').value=get('sort','broken');$('group').value=get('group','none');
   setView(get('view','grid'));

← edfc58b board UX upgrade: day/night toggle, click-to-drill detail dr  ·  back to Fix Live Board  ·  board: movable/dockable nav — drag grip (float/move up-down- e6f437b →