← Commit history

1.0.24 (docs only): README coverage for heatsinkVias (1.0.23) and the silkscreen rules (1.0.22), and a CHANGELOG

John Lauer ·2f0c76f9b7 ·1mo ago ·parent 99d2acb
8 files changed +62−7
CHANGELOG.mdadded+10
@@ -0,0 +1,10 @@+# Changelog++## 1.0.23 (2026-09-19)+- `heatsinkVias {pad, drill_mm, pitch_mm, ring_mm, tented}` in the create JSON expands to plated `thru_hole` via pads inside the exposed thermal pad, numbered like that pad, on a centred grid that keeps a full annular ring inside it. Only `pad` is required; the defaults are 0.3 mm drill, 0.8 mm pitch, 0.15 mm ring, tented. adom-lbr carries the vias to Altium and Fusion unchanged.+- `create` prints a `HEATSINK VIAS MISSING` hint when the largest SMD pad is a big exposed pad with no plated holes under it, and a via count when they are present.++## 1.0.22 (2026-09-17)+- Silkscreen never lands on copper; pin-1 mark only on polarized parts (Colby Knox). Two-pad parts get two lines outside the copper band instead of a body rectangle through the pads; other parts keep the body outline with every piece within 0.15 mm of a pad cut away. `polarized` in the create JSON controls the pin-1 mark (default: false for two-pad parts, true otherwise).++Earlier history is in the wiki repo commit log.
Cargo.lock+1−1
@@ -4,7 +4,7 @@ version = 4  [[package]] name = "adom-footprint"-version = "1.0.23"+version = "1.0.24" dependencies = [  "anyhow",  "clap",
Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "adom-footprint"-version = "1.0.23"+version = "1.0.24" edition = "2021" description = "Create, preview, lint, and deliver KiCad footprints (.kicad_mod) with interactive FpView viewer" 
README.md+45
@@ -52,6 +52,51 @@ Open the served app through the Adom proxy URL (`https://<slug>.adom.cloud/proxy/8783/`), never `localhost:8783` — the webview renders outside the container. +## Heatsink vias in the create JSON (from 1.0.23)++A thermal pad without vias into the plane is a part that overheats, and vias that have to be+redrawn per EDA tool do not get drawn. So they are written once, into the footprint:++```json+{+  "footprintName": "QFN-16-EP",+  "pads": [ ... ],+  "heatsinkVias": { "pad": "17", "drill_mm": 0.3, "pitch_mm": 0.8, "ring_mm": 0.15, "tented": true }+}+```++| Field | Default | Meaning |+|---|---|---|+| `pad` | required | number of the exposed SMD pad the vias go under |+| `drill_mm` (alias `drill`) | 0.3 | drill diameter |+| `pitch_mm` (alias `pitch`) | 0.8 | grid pitch |+| `ring_mm` (alias `ring`) | 0.15 | annular ring; via pad diameter is `drill_mm + 2 * ring_mm` |+| `tented` | true | true puts the via pads on `*.Cu` only; false adds `*.Mask` |++`heatsink_vias` is accepted as an alias of `heatsinkVias`. `create` expands the block into+plated circular `thru_hole` pads that carry the exposed pad's own number, on a grid centred on+that pad, with as many columns and rows as fit while keeping the full ring inside the pad (at+least one via). If `pad` does not name an SMD pad, nothing is added. Same-number plated holes+are how KiCad, Altium (through adom-lbr 2.46.0+) and Fusion/EAGLE all express "same net,+drilled", so the vias reach every tool from this one footprint.++**The hint.** Every `create` checks the largest SMD pad. When it is an exposed pad (at least+1 mm² and at least three times the median pad area) with no `thru_hole` pads of its number,+`create` prints `_hint: HEATSINK VIAS MISSING` naming the pad, its area and the+`"heatsinkVias": {"pad": "<n>"}` line to add. When vias are present it prints their count+and how many came from `heatsinkVias`.++## Silkscreen rules (from 1.0.22)++For rectangular parts the generated silkscreen never lands on copper, and the pin-1 mark is+drawn only on polarized parts. Silk is a 0.12 mm stroke kept 0.15 mm clear of every pad.+- Two-pad parts get two lines parallel to the pads, outside the copper, spanning the body.+  A polarized two-pad part adds a bar just outside pad 1 and extends both lines to it.+- Other parts keep the body outline, with every piece that comes within the clearance of a+  pad cut away (pieces shorter than 0.2 mm are dropped), plus a pin-1 bar when polarized.+- `"polarized": true|false` in the create JSON sets it (LED, diode, tantalum: true). The+  default is false for two-pad parts and true for parts with more than two pad numbers.+ ## CLI reference  | Command | Description |
VERSION+1−1
@@ -1 +1 @@-1.0.23+1.0.24
bin/adom-footprint
⋯ 1 unchanged line ⋯
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-footprint",-  "version": "1.0.23",+  "version": "1.0.24",   "type": "app",   "description": "KiCad footprint creator with layer HUD viewer and delivery to KiCad/Fusion 360",   "dependencies": {
page.json+3−3
@@ -1,6 +1,6 @@ {   "slug": "adom-footprint",-  "version": "1.0.23",+  "version": "1.0.24",   "type": "app",   "description": "KiCad footprint creator with layer HUD viewer and delivery to KiCad/Fusion 360",   "dependencies": {@@ -48,7 +48,7 @@     "send footprint to fusion",     "kicad footprint for this chip"   ],-  "discovery_pitch": "Create, view and edit KiCad PCB footprints in a live layer viewer — auto-placed RefDes/Value, auto-generated heatsink vias, heatsink-aware solder paste, and one-click delivery to KiCad/Fusion/Altium/OrCAD.",+  "discovery_pitch": "Create, view and edit KiCad PCB footprints in a live layer viewer \u2014 auto-placed RefDes/Value, auto-generated heatsink vias, heatsink-aware solder paste, and one-click delivery to KiCad/Fusion/Altium/OrCAD.",   "sample_prompts": [     {       "label": "Make a footprint",@@ -67,4 +67,4 @@       "prompt": "Auto-place the RefDes and Value clear of the pads and save it"     }   ]-}\ No newline at end of file+}