app
Adom Project Manager
Public Made by Adomby adom
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 Manag
← 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
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();