app
Adom Library
Public Made by Adomby adom
adom-lbr — the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical adom-lbr JSON — symbol + footprint + 3D + pin↔pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.
← Commit history
2.16.0: stale-process LED
4 files changed
+24−6
Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "adom-lbr"-version = "2.15.5"+version = "2.16.0" edition = "2021" description = "adom-lbr generator / EDA translator: the canonical adom-lbr JSON is the hub, with native converters to Altium (.SchLib/.PcbLib/.IntLib), EAGLE/Fusion (.lbr), and KiCad. Altium output is written natively — no Altium needed at conversion time."
VERSION+1−1@@ -1 +1 @@-2.15.5+2.16.0
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-lbr",- "version": "2.15.5",+ "version": "2.16.0", "type": "app", "description": "adom-lbr \u2014 the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad \u21c4 Altium \u21c4 EAGLE/Fusion) through one canonical adom-lbr JSON \u2014 symbol + footprint + 3D + pin\u2194pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.", "dependencies": {},
src/dock.rs+21−3@@ -388,9 +388,27 @@ pub fn assets_dir() -> Option<PathBuf> { /// list size (None = not loaded yet); `owner` its resolved identity. fn build_status(library_count: Option<usize>, owner: &str) -> Value { let mut leds: Vec<Value> = vec![];- leds.push(led_short("Binary", "ok",- format!("adom-lbr {VERSION} at {}", std::env::current_exe().map(|p| p.display().to_string()).unwrap_or_default()),- &format!("v{VERSION}"), None));+ // STALE PROCESS. The dock installs a new package but never restarts a dashboard that is+ // already running, so a long-lived serve keeps answering from an executable that was+ // replaced on disk hours ago. Measured on a real machine: two instances on 2.14.1 and+ // 2.13.0 while five versions shipped past the user, each one dutifully reporting itself+ // as healthy. Linux appends " (deleted)" to /proc/self/exe once the file behind a+ // running process is unlinked, so the app can KNOW it is stale rather than infer it.+ // Every dashboard already emitted this in its detail text and nobody read it, so it is+ // an amber LED with the fix in it now.+ let exe = std::env::current_exe().map(|p| p.display().to_string()).unwrap_or_default();+ let stale = exe.ends_with("(deleted)");+ if stale {+ let path = exe.trim_end_matches(" (deleted)").to_string();+ leds.push(led_short("Binary", "warn",+ format!("running adom-lbr {VERSION} from an executable that has since been replaced on disk ({path}); \+ the installed version is newer and this process cannot pick it up"),+ &format!("v{VERSION} stale"),+ Some("restart the dashboard to run the installed version: the dock's Hard Refresh Open, or kill this serve and launch it again")));+ } else {+ leds.push(led_short("Binary", "ok", format!("adom-lbr {VERSION} at {exe}"),+ &format!("v{VERSION}"), None));+ } let wiki_ok = Command::new("curl") .args(["-s", "-o", "/dev/null", "-w", "%{http_code}", "--max-time", "3", "https://wiki.adom.inc/health"])