app
Adom Footprint
Public Made by Adomby adom
KiCad footprint creator with layer HUD viewer and delivery to KiCad/Fusion 360
← Commit history
Publish 1.0.5
7 files changed
+40−30
bin/adom-footprint⋯ 1 unchanged line ⋯
install.sh+2−12@@ -1,14 +1,4 @@ #!/bin/bash-# install.sh for adom-footprint (app).-# Runs from the extracted module directory (~/project/adom_modules/adom-footprint/). set -euo pipefail--DIR="$(cd "$(dirname "$0")" && pwd)"-cd "$DIR"--# App install: link the binary onto PATH.-BIN_DIR="${HOME}/.local/bin"-mkdir -p "$BIN_DIR"-install -m 0755 "$DIR/bin/adom-footprint" "$BIN_DIR/adom-footprint"-echo "Installed adom-footprint -> $BIN_DIR/adom-footprint"-+DIR="$(cd "$(dirname "$0")" && pwd)"; BIN="${HOME}/.local/bin"; mkdir -p "$BIN"+install -m 0755 "$DIR/bin/adom-footprint" "$BIN/adom-footprint"; echo "Installed adom-footprint"
package.json+21−6@@ -1,11 +1,26 @@ { "slug": "adom-footprint",- "version": "1.0.4",+ "version": "1.0.5", "type": "app",- "description": "A live PCB-footprint viewer with a floating Layers HUD and the InstaPCB 300um solder-paste dispensing dots no other tool shows.",+ "description": "A live PCB-footprint viewer with a floating Layers HUD and the opt-in InstaPCB 300um solder-paste dispensing dots no other tool shows.", "dependencies": {},- "tags": ["eda","kicad","footprint","pcb","instapcb"],- "hero": { "type": "image", "path": "screenshots/hero.png" },- "scripts": { "install": "./install.sh", "uninstall": "./uninstall.sh" },+ "tags": [+ "eda",+ "kicad",+ "footprint",+ "pcb",+ "instapcb"+ ],+ "hero": {+ "type": "billboard",+ "headline": "Footprints with a layers HUD.",+ "subhead": "Copper, courtyard and fab on by default \u2014 flip on the InstaPCB 300\u00b5m paste-dot preview no other tool shows.",+ "screenshot": "screenshots/shot.png",+ "accent": "#00b8b1"+ },+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh"+ }, "needs_sudo": false-}+}
page.json+4−5@@ -1,8 +1,8 @@ { "slug": "adom-footprint",- "version": "1.0.4",+ "version": "1.0.5", "type": "app",- "description": "A live PCB-footprint viewer with a floating Layers HUD and the InstaPCB 300um solder-paste dispensing dots no other tool shows.",+ "description": "A live PCB-footprint viewer with a floating Layers HUD and the opt-in InstaPCB 300um solder-paste dispensing dots no other tool shows.", "dependencies": {}, "tags": [ "eda",@@ -15,7 +15,7 @@ "type": "billboard", "headline": "Footprints with a layers HUD.", "subhead": "Copper, courtyard and fab on by default — flip on the InstaPCB 300µm paste-dot preview no other tool shows.",- "screenshot": "docs/shot.png",+ "screenshot": "screenshots/shot.png", "accent": "#00b8b1" }, "scripts": {@@ -27,6 +27,5 @@ "author": { "name": "John Lauer", "email": "[email protected]"- },- "title": "Adom Footprint"+ } }
screenshots/shot.pngadded⋯ 1 unchanged line ⋯
src/app.html+12−2@@ -225,14 +225,24 @@ } } let layerState=loadLayerState();+ // A layer is "present" only if the render actually contains its geometry —+ // so the HUD lists exactly the layers this footprint has, no empty rows.+ function layerPresent(def){+ const sv=svgEl(); if(!sv) return false;+ if(def.kind==='group') return sv.querySelectorAll(def.sel).length>0;+ let found=false;+ sv.querySelectorAll('path,rect,circle,polygon,line').forEach(el=>{ if(colorMatch(el,def.color)) found=true; });+ return found;+ } function setupLayers(s){ const hud=document.getElementById('layersHud'), btn=document.getElementById('layersBtn'); if(!s.footprintName){ hud.style.display='none'; btn.style.display='none'; return; } btn.style.display='inline-flex';- // default visible unless user turned off; paste-dots default ON to showcase const body=document.getElementById('layersBody'); body.innerHTML=''; LAYER_DEFS.forEach(def=>{- const on = layerState[def.key]!==false;+ // Standard layers default visible (unless turned off); the InstaPCB paste-dots+ // overlay is an opt-in preview → default OFF so it never obscures the copper.+ const on = def.special ? (layerState[def.key]===true) : (layerState[def.key]!==false); const meta = def.key==='paste-dots' ? ((s.pasteDots||0)+' @ 300µm') : def.key==='paste-ap' ? ((s.pasteApertures||0)+' openings') : ''; const row=document.createElement('div');
uninstall.sh+1−5@@ -1,7 +1,3 @@ #!/bin/bash-# uninstall.sh for adom-footprint (app). set -euo pipefail--rm -f "${HOME}/.local/bin/adom-footprint"-echo "Uninstalled adom-footprint"-+rm -f "${HOME}/.local/bin/adom-footprint"; echo "Uninstalled adom-footprint"