← Commit history

v0.13.2: guard each boot region independently and set a boot marker LAST (window.__pmBoot with per-region failures) — pills were scheduled before mount(), so a mount throw would have produced exactly the half-booted 'pills but no panel' state that misdiagnoses as a module fault

John Lauer ·c757f36e23 ·1mo ago ·parent e8ea6c4
5 files changed +34−15
Cargo.lock+1−1
@@ -4,7 +4,7 @@ version = 4  [[package]] name = "adom-project-manager"-version = "0.13.1"+version = "0.13.2" dependencies = [  "altium-codec",  "anyhow",
Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "adom-project-manager"-version = "0.13.1"+version = "0.13.2" edition = "2021" description = "Adom Project Manager — the central hub for navigating wiki boards, molecules, and libraries into Hydrogen: browse your wiki boards/projects, view symbol + footprint + 3D and the footprint layer stackup, add components to your KiCad/Altium libraries, and deliver self-contained KiCad projects. Built on adom-lbr." 
bin/adom-project-manager
⋯ 1 unchanged line ⋯
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-project-manager",-  "version": "0.13.1",+  "version": "0.13.2",   "type": "app",   "description": "Adom Project Manager — the central hub for navigating wiki boards, molecules and libraries into Hydrogen: browse your wiki boards/projects (Personal / Organization / Public), view symbol + footprint + 3D and the per-EDA footprint layer stackup, explore the board and schematic in INTERACTIVE cross-probing viewers (click a net, hover a part for stock and price), add components to your KiCad/Altium libraries, and deliver self-contained KiCad projects. Built on adom-lbr. (Formerly Adom Project Manager / adom-project-manager.)",   "dependencies": {
src/manage.html+31−12
@@ -703,9 +703,15 @@ const SAY_PHRASES=[   "show me the layer stackup in project manager",   "highlight this net in project manager's board view" ];+// Each region is guarded on its own. A throw in ANY one of them used to take the+// rest of the boot with it, which is how a page ends up HALF-BOOTED — some regions+// painted, others silently missing, and no error visible on the surface that+// served it. The boot marker at the end is the only reliable proof the script+// finished; never infer boot health from whether one region happens to be there. function nbInit(){-  ledsRefresh(); setInterval(ledsRefresh,15000);-  if(window.AdomNewbiePanel){+  const fails=[];+  try{+    if(!window.AdomNewbiePanel) throw new Error('AdomNewbiePanel missing — /newbie-panel.js did not load');     AdomNewbiePanel.mount({       mount:'#newbie',       app:'project manager',@@ -716,16 +722,29 @@ function nbInit(){             onPlay:function(){ toast('The guided demo is not recorded yet.','info'); }},       phrases:SAY_PHRASES     });-  }-  const cog=document.getElementById('cog-btn');-  if(cog) cog.onclick=()=>toast('Settings are coming to this dashboard.','info');-  // The target chip states the box honestly rather than guessing when the-  // container cannot learn its name.-  fetch('api/env').then(r=>r.json()).then(e=>{-    const box=document.getElementById('hdr-box'), led=document.getElementById('hdr-led');-    if(box&&e&&e.machine_name) box.textContent=e.machine_name;-    if(led&&e&&e.os==='linux'&&e.home==='/root') led.classList.add('warn');-  }).catch(()=>{});+    window.__pmPanelMounted=true;+  }catch(e){ fails.push('panel: '+e.message); console.error('[project-manager] panel mount failed',e); }++  try{+    const cog=document.getElementById('cog-btn');+    if(cog) cog.onclick=()=>toast('Settings are coming to this dashboard.','info');+    // The target chip states the box honestly rather than guessing when the+    // container cannot learn its name.+    fetch('api/env').then(r=>r.json()).then(e=>{+      const box=document.getElementById('hdr-box'), led=document.getElementById('hdr-led');+      if(box&&e&&e.machine_name) box.textContent=e.machine_name;+      if(led&&e&&e.os==='linux'&&e.home==='/root') led.classList.add('warn');+    }).catch(()=>{});+  }catch(e){ fails.push('header: '+e.message); console.error('[project-manager] header wiring failed',e); }++  try{ ledsRefresh(); window.__pmLedTimer=setInterval(ledsRefresh,15000); }+  catch(e){ fails.push('leds: '+e.message); console.error('[project-manager] status leds failed',e); }++  // Set LAST, and record what failed, so a diagnosis never has to be inferred+  // from which regions happen to be painted.+  window.__pmBoot={complete:true,failed:fails,version:'0.13.2',+                   panelMounted:!!window.__pmPanelMounted,ledTimer:!!window.__pmLedTimer};+  if(fails.length) toast('Part of this dashboard failed to start: '+fails.join('; '),'error'); } if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',nbInit); else nbInit();