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.
master
Colby Knox
2.47.5: generate refuses a supplied zero-pad footprint instead of inventing copper (#32, John's patch); GH 5230534
26c7ed5
8d ago
Changelog
2.47.5 (2026-10-12)
generaterefuses a supplied footprint that has no pads (ERROR: [ZERO_PAD_FOOTPRINT], exit 2, nothing written) instead of inventing copper. A mechanical-only footprint for an off-board part (a flying-lead sensor whose leads land on a separate connector) used to come out with two touching placeholder SMD pads and only a lint warning. A zero-pad package variant is refused the same way, and the Manager returns a structured error. Generating with no--fpstill makes the documented placeholder. (John)
2.47.4 (2026-10-08)
- Lint (
pad-clearance, sovalidatetoo): overlapping pads wired to the same pin are one net, not a short. KiCad's USB-C receptacles stack paired pads on purpose (A1 over B12, both GND; A4 over B9, both VBUS), and EAGLE names the paired pinsGND@1,GND@2; those footprints failed validation as four shorts. Overlapping pads on different pins still fail, and a pair counts as one net only if every device that uses the package wires it that way. (Ray)
2.47.3 (2026-10-07)
- A round KiCad SMD pad (
circle) is round in Fusion:roundness="100". It used to be written with no roundness, so EAGLE drew it square; a 0.5 mm probe test point came out as a square pad. - An SMD pad with no paste layer gets
cream="no", and one with no mask layer getsstop="no", so a test point or a fiducial is not printed with solder paste in Fusion.
2.47.2 (2026-10-07)
- Skill: how pin lengths convert to EAGLE (the 2.47.1 fix), under "EAGLE / Fusion path".
2.47.1 (2026-10-07)
- A KiCad pin whose length is not one of EAGLE's four (0, 2.54, 5.08, 7.62 mm) keeps its true length. It used to be rounded to the nearest EAGLE length, so a 1.27 mm pin became 2.54 mm and ran back over the body: on the AMPLH5030S-150MT inductor the two leads drew a line under the humps. Such a pin is now a
pointpin at KiCad's connection point with a lead drawn on the symbol layer at its exact length, so the Fusion symbol matches the KiCad one and the connection points do not move. Pins of an exact EAGLE length are unchanged.
2.46.3 (2026-09-23)
- Pad clearance measures a round pad against a rectangular one as copper: off a corner it is the circle-to-corner distance, not the gap between bounding boxes. KiCad's stock staggered
TO-92(square pad 1 at (0,0), round pad 2 at (1.27,-1.27), 1.3 mm) has 0.227 mm of real clearance but overlapping boxes, so every TO-92 part failedpads 1 and 2 OVERLAPand dropped out of the component factory. Real overlaps still fail. - A rectangular thru pad is no longer drawn as a square on its LONG side. KiCad's
TO-92_Inlinepad 1 (1.05 x 1.5 mm at 1.27 mm pitch) became a 1.5 mm square whose copper reached into pad 2, a real short the clearance lint rightly rejected. An elongated rect is now drawnlongon its short side along its length (with a warning that the square pin-1 corner is lost), a squarish one square on its short side, the same rule roundrect already used. Of KiCad's 11TO-92*footprints, 8 failed the lint on 2.46.2 and none do on 2.46.3.
2.46.1 (2026-09-20)
- Drilled pads in the native PcbLib are written as plated Multi-Layer pads: the pad record carries layer 74 plus the two bytes Altium sets when it plates a pad (114 = 15, 116 = 3, diffed against a library Altium saved after
altium_plate_vias). Before this the heatsink vias loaded on the Top Layer with a hole.altium_plate_vias {libraryPath}(altium-bridge 0.2.20) repairs an older library in place.
2.46.0 (2026-09-19)
- Heatsink vias ride inside the footprint on every lane. Plated
thru_holepads numbered like the exposed pad (adom-footprint createheatsinkViaswrites them) are kept without any flag:import-kicadreads the drill, the Altium PcbLib gets pads with holes,generatewrites EAGLE<pad drill=...>with the same name so Fusion joins them to the exposed pad's net. - New heatsink HINT from
import-kicad: names the vias found on the exposed pad, or says that the largest SMD pad has none and how to add them (0.3 mm drill, 0.8 mm pitch, 0.15 mm ring, tented).
2.45.1 (2026-09-19)
- The SchLib header's
ComponentDescription(Properties > General > Description and the SCH Library panel list) is filled from the symbol's Description property. It is a different field from the Description parameter.
2.45.0 (2026-09-19)
- Orderable identity on every lane.
import-kicadkeeps the KiCad symbol's MPN / Manufacturer / Datasheet / Description / Mouser / DigiKey / LCSC / "Adom Wiki" properties as Altium parameters, addsSupplier N/Supplier Part Number Npairs (Mouser, Digi-Key, LCSC) andManufacturer Part Number, and fills the hub'smanufacturer. generate --part-metadata page.jsonwrites the EAGLE attributes MPN, MANUFACTURER, DATASHEET, ADOM_WIKI (fromcomponent.wiki_url, elsehttps://wiki.adom.inc/<owner>/<slug>), MOUSER_PN, DIGIKEY_PN, LCSC_PN. Distributor numbers are read fromdistributor_links.<dist>as a string or an object withpn/part_number/part/sku.- New sourcing HINT from
import-kicad: names every identity property the symbol is missing and points atadom-parts-search search <MPN>.
2.44.0 (2026-09-19)
generatecarries each KiCad polyline's stroke width into the Fusion.lbr: a stroke at or under 0.2 mm becomes a 0.0254 mm hairline wire, wider strokes keep their width. Before this every symbol wire was a flat 0.1524 mm and the chip outline read as a fat stroke in Fusion.- Altium SchLib line widths at or under 8 mil become Smallest (hairline); 10 mil stays Small.
2.43.0 (2026-09-19)
- Altium symbols look like the KiCad and Fusion ones.
import-kicadkeeps the symbol's text labels (adom-symbol's bold group captions, with justification) and the SchLib writer draws them; the chip-thumbnailer outline is fitted into the lane between the pin-name columns; the designator is centred above the body and the part number is the Comment centred below it. - Multi-part libraries:
assemble-altium --no-dedupekeeps one footprint per part even when land patterns match, so each part carries its own STEP body and its symbol links its own footprint name.
Earlier history is in the wiki repo commit log.
# Changelog
## 2.47.5 (2026-10-12)
- `generate` refuses a supplied footprint that has no pads (`ERROR: [ZERO_PAD_FOOTPRINT]`, exit 2, nothing written) instead of inventing copper. A mechanical-only footprint for an off-board part (a flying-lead sensor whose leads land on a separate connector) used to come out with two touching placeholder SMD pads and only a lint warning. A zero-pad package variant is refused the same way, and the Manager returns a structured error. Generating with no `--fp` still makes the documented placeholder. (John)
## 2.47.4 (2026-10-08)
- Lint (`pad-clearance`, so `validate` too): overlapping pads wired to the same pin are one net, not a short. KiCad's USB-C receptacles stack paired pads on purpose (A1 over B12, both GND; A4 over B9, both VBUS), and EAGLE names the paired pins `GND@1`, `GND@2`; those footprints failed validation as four shorts. Overlapping pads on different pins still fail, and a pair counts as one net only if every device that uses the package wires it that way. (Ray)
## 2.47.3 (2026-10-07)
- A round KiCad SMD pad (`circle`) is round in Fusion: `roundness="100"`. It used to be written with no roundness, so EAGLE drew it square; a 0.5 mm probe test point came out as a square pad.
- An SMD pad with no paste layer gets `cream="no"`, and one with no mask layer gets `stop="no"`, so a test point or a fiducial is not printed with solder paste in Fusion.
## 2.47.2 (2026-10-07)
- Skill: how pin lengths convert to EAGLE (the 2.47.1 fix), under "EAGLE / Fusion path".
## 2.47.1 (2026-10-07)
- A KiCad pin whose length is not one of EAGLE's four (0, 2.54, 5.08, 7.62 mm) keeps its true length. It used to be rounded to the nearest EAGLE length, so a 1.27 mm pin became 2.54 mm and ran back over the body: on the AMPLH5030S-150MT inductor the two leads drew a line under the humps. Such a pin is now a `point` pin at KiCad's connection point with a lead drawn on the symbol layer at its exact length, so the Fusion symbol matches the KiCad one and the connection points do not move. Pins of an exact EAGLE length are unchanged.
## 2.46.3 (2026-09-23)
- Pad clearance measures a round pad against a rectangular one as copper: off a corner it is the circle-to-corner distance, not the gap between bounding boxes. KiCad's stock staggered `TO-92` (square pad 1 at (0,0), round pad 2 at (1.27,-1.27), 1.3 mm) has 0.227 mm of real clearance but overlapping boxes, so every TO-92 part failed `pads 1 and 2 OVERLAP` and dropped out of the component factory. Real overlaps still fail.
- A rectangular thru pad is no longer drawn as a square on its LONG side. KiCad's `TO-92_Inline` pad 1 (1.05 x 1.5 mm at 1.27 mm pitch) became a 1.5 mm square whose copper reached into pad 2, a real short the clearance lint rightly rejected. An elongated rect is now drawn `long` on its short side along its length (with a warning that the square pin-1 corner is lost), a squarish one square on its short side, the same rule roundrect already used. Of KiCad's 11 `TO-92*` footprints, 8 failed the lint on 2.46.2 and none do on 2.46.3.
## 2.46.1 (2026-09-20)
- Drilled pads in the native PcbLib are written as plated Multi-Layer pads: the pad record carries layer 74 plus the two bytes Altium sets when it plates a pad (114 = 15, 116 = 3, diffed against a library Altium saved after `altium_plate_vias`). Before this the heatsink vias loaded on the Top Layer with a hole. `altium_plate_vias {libraryPath}` (altium-bridge 0.2.20) repairs an older library in place.
## 2.46.0 (2026-09-19)
- Heatsink vias ride inside the footprint on every lane. Plated `thru_hole` pads numbered like the exposed pad (adom-footprint create `heatsinkVias` writes them) are kept without any flag: `import-kicad` reads the drill, the Altium PcbLib gets pads with holes, `generate` writes EAGLE `<pad drill=...>` with the same name so Fusion joins them to the exposed pad's net.
- New heatsink HINT from `import-kicad`: names the vias found on the exposed pad, or says that the largest SMD pad has none and how to add them (0.3 mm drill, 0.8 mm pitch, 0.15 mm ring, tented).
## 2.45.1 (2026-09-19)
- The SchLib header's `ComponentDescription` (Properties > General > Description and the SCH Library panel list) is filled from the symbol's Description property. It is a different field from the Description parameter.
## 2.45.0 (2026-09-19)
- Orderable identity on every lane. `import-kicad` keeps the KiCad symbol's MPN / Manufacturer / Datasheet / Description / Mouser / DigiKey / LCSC / "Adom Wiki" properties as Altium parameters, adds `Supplier N` / `Supplier Part Number N` pairs (Mouser, Digi-Key, LCSC) and `Manufacturer Part Number`, and fills the hub's `manufacturer`.
- `generate --part-metadata page.json` writes the EAGLE attributes MPN, MANUFACTURER, DATASHEET, ADOM_WIKI (from `component.wiki_url`, else `https://wiki.adom.inc/<owner>/<slug>`), MOUSER_PN, DIGIKEY_PN, LCSC_PN. Distributor numbers are read from `distributor_links.<dist>` as a string or an object with `pn` / `part_number` / `part` / `sku`.
- New sourcing HINT from `import-kicad`: names every identity property the symbol is missing and points at `adom-parts-search search <MPN>`.
## 2.44.0 (2026-09-19)
- `generate` carries each KiCad polyline's stroke width into the Fusion `.lbr`: a stroke at or under 0.2 mm becomes a 0.0254 mm hairline wire, wider strokes keep their width. Before this every symbol wire was a flat 0.1524 mm and the chip outline read as a fat stroke in Fusion.
- Altium SchLib line widths at or under 8 mil become Smallest (hairline); 10 mil stays Small.
## 2.43.0 (2026-09-19)
- Altium symbols look like the KiCad and Fusion ones. `import-kicad` keeps the symbol's text labels (adom-symbol's bold group captions, with justification) and the SchLib writer draws them; the chip-thumbnailer outline is fitted into the lane between the pin-name columns; the designator is centred above the body and the part number is the Comment centred below it.
- Multi-part libraries: `assemble-altium --no-dedupe` keeps one footprint per part even when land patterns match, so each part carries its own STEP body and its symbol links its own footprint name.
Earlier history is in the wiki repo commit log.