master
History Download
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)

  • 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.