Skip to content

Releases: diodeinc/pcb

Latest Main Build

23 Apr 02:22
76ea310

Choose a tag to compare

Latest Main Build Pre-release
Pre-release

Automated build from main branch (commit: 76ea310)

0.3.71 - 2026-04-20

20 Apr 18:12

Choose a tag to compare

Release Notes

Added

  • Extended house Schottky and TVS BOM ladders with additional higher-voltage entries.

Fixed

  • Avoid collisions in generated footprint library names.

Added

  • pcb fmt now supports --include=kicad-sym|all to format .kicad_sym files during directory walks.

Install pcb 0.3.71

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.71/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.71/pcb-installer.ps1 | iex"

Download pcb 0.3.71

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.70 - 2026-04-17

17 Apr 21:32

Choose a tag to compare

Release Notes

Fixed

  • Unresolvable inherited KiCad symbol datasheet paths are now dropped silently instead of emitting build warnings.

Install pcb 0.3.70

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.70/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.70/pcb-installer.ps1 | iex"

Download pcb 0.3.70

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.69 - 2026-04-17

17 Apr 21:03
62accc8

Choose a tag to compare

Release Notes

Fixed

  • Fixed io prelude handling for generics/Rectifier.zen and generics/Zener.zen.
  • Generated component .zen files now omit KiCad no_connect pins from io() and Component(..., pins=...).

Install pcb 0.3.69

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.69/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.69/pcb-installer.ps1 | iex"

Download pcb 0.3.69

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.68 - 2026-04-17

17 Apr 18:14
87e11d7

Choose a tag to compare

Release Notes

Migration Guide

Prefer template-first io(template) over io(type, default=...). default= for io() remains source-compatible for now, but it is deprecated and now emits a warning.

Before:

VDD = io(Power, default=Power("VDD", voltage="3.3V"))
GND = io(Ground, default=Ground("GND"))

After:

VDD = io(Power("VDD", voltage="3.3V"))
GND = io(Ground("GND"))

Example warning:

Warning: io() parameter `default` is deprecated; prefer template-first `io(template)` instead
    ╭─[ /Users/akhilles/src/diode/registry/reference/TCA9517Ax/TCA9517Ax.zen:46:6 ]
 46 │EN = io("EN", Net, optional=True, default=Net(VCC_A))
    │                             ╰──────────────────────── io() parameter `default` is deprecated; prefer template-first `io(template)` instead

Omit explicit connections for pin.no_connect pins. If a pin is marked no_connect, leave it out of pins and Component() will wire NotConnected() automatically.

Before:

NC = io("NC", Net)

Component(
    name="J1",
    ...,
    pins={"A": A, "B": B, "NC": NC},
)

After:

Component(
    name="J1",
    ...,
    pins={"A": A, "B": B},
)

Example warning:

Warning: Pin 'NC' on component '1-2199119-3' is marked no_connect but was explicitly connected to Net net 'NC'; omit it from `pins` and Component() will wire NotConnected() automatically
    ╭─[ /Users/akhilles/src/dioderobot/demo/components/TE_Connectivity/1M2199119M3/1M2199119M3.zen:38:8 ]
 38 │    NC=io("NC", Net),
    │             ╰─────── Pin 'NC' on component '1-2199119-3' is marked no_connect but was explicitly connected to Net net 'NC'; omit it from `pins` and Component() will wire NotConnected() automatically

Avoid rebinding the same top-level name in a module. If you need to derive a final wiring choice, bind it to a new name instead of overwriting the original io() or intermediate value.

Before:

RT = io("RT", Net)

if rt_value == "GND":
    RT = GND
elif rt_value == "VCC":
    RT = VCC

After:

RT = io("RT", Net)

if rt_value == "GND":
    rt_pin = GND
elif rt_value == "VCC":
    rt_pin = VCC
else:
    rt_pin = RT

Example warning:

Warning: Rebinding 'CURR_FDBK1_OPAMP_MINUS' in the same scope
    ╭─[ /Users/akhilles/src/dioderobot/demo/boards/DM0001/src/ShuntSense.zen:43:1 ]
 43 │CURR_FDBK1_OPAMP_MINUS = GND
    │           ╰─────────── Rebinding 'CURR_FDBK1_OPAMP_MINUS' in the same scope

Use Power() or Ground() for io()s that feed power pins instead of plain Net.

Before:

VDD = io("VDD", Net)
GND = io("GND", Net)

After:

VDD = io(Power())
GND = io(Ground())

Example warning:

Warning: Pin 'VDD' on component 'LIS3DH' is a power pin but is connected to plain Net 'VDD'; consider using Power() or Ground()
    ╭─[ /Users/akhilles/src/dioderobot/demo/components/STMicroelectronics/LIS3DH/LIS3DH.zen:16:9 ]
 16 │    VDD=io("VDD", Net),
    │               ╰─────── Pin 'VDD' on component 'LIS3DH' is a power pin but is connected to plain Net 'VDD'; consider using Power() or Ground()

Migrate deprecated generics/Diode.zen usage to the more specific diode generics:

  • Use generics/Rectifier.zen for standard and Schottky diodes, including small-signal / signaling diodes.
  • Use generics/Zener.zen for reverse-breakdown regulation and reference diodes.
  • Use generics/Tvs.zen for transient-voltage suppressors.

Package mapping:

SMA -> DO-214AC
SMB -> DO-214AA
SMC -> DO-214AB
SOD-123 / SOD-323 / SOD-523 stay the same

Rectifier / Schottky:

Diode(package="SMA", variant="Schottky", v_r="40V", i_f="1A", v_f="500mV", A=A, K=K)
Rectifier(package="DO-214AC", technology="Schottky", reverse_voltage="40V", forward_current="1A", forward_voltage="500mV", A=A, K=K)

Zener:

Diode(package="SOD-123", variant="Zener", v_r="5.1V", A=A, K=K)
Zener(package="SOD-123", zener_voltage="5.1V", A=A, K=K)

TVS:

Tvs(package="DO-214AA", direction="Unidirectional", reverse_standoff_voltage="24V", reverse_clamping_voltage="38.9V", peak_pulse_power="3000W", A=GND, K=VIN)

Added

  • Added generics/Rectifier.zen and generics/Zener.zen with expanded package support and house-part BOM matching coverage.
  • pcb layout and board publish now fail early when a board was last saved by a newer KiCad major version than the one installed locally.
  • pcb build now accept repeatable --config key=value for setting config() parameters.
  • Net type physical-value fields now coerce string and scalar inputs like io()/config().
  • Unnamed Net()/typed nets and generated interface child nets now infer names from assignment targets when possible.
  • Add io() direction metadata plus input() / output() sugar.
  • config(), io(), input(), and output() now allow omitting the explicit name when assigned to a top-level variable.
  • config() now supports discrete allowed= sets for scalar and physical-value inputs.
  • Preserve KiCad symbol pin metadata and add Component() pin/net compatibility warnings.
  • Added style advice for redundant explicit names on io(), config(), nets, and interfaces.
  • Add pass-based schematic ERC plumbing and net-site pin.no_connect diagnostics with inline suppression support.
  • io(template) now infers placeholder types and enforces typed-net voltage compatibility.

Changed

  • Component generation no longer automatically scans datasheets.
  • Component modifiers can now override spice_model.
  • House Murata caps now use vendor MLCC models when available.
  • voltage_within() now accepts nets with voltage metadata or direct Voltage values.
  • pcb new component and pcb search component imports now place datasheet artifacts under each component's docs/ subdirectory.
  • Layout sync and KiCad netlist export now normalize file- and package-based footprints to library-aware FPIDs.
  • Component() now infers spice_model from symbol Sim.* properties.
  • Simulation() now accepts bom_profile=.
  • Module-scoped variable rebinding is now a warning.
  • Removed the 10uF 100V 1210 stdlib house capacitor from generic matching due to severe derating.
  • Net and Power now expose unset voltage as None.
  • Deprecated NET= net casts now warn; use positional forms like Power(other_net).
  • Remove legacy pcb fork subcommands and reserve pcb fork for future use.

Fixed

  • LSP diagnostics now publish to the .zen file that owns the root diagnostic span.

Install pcb 0.3.68

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.68/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.68/pcb-installer.ps1 | iex"

Download pcb 0.3.68

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.67 - 2026-04-10

10 Apr 14:09

Choose a tag to compare

Release Notes

Added

  • Added workspace-scoped Diode endpoint overrides via [workspace].endpoint, with auth tokens stored per resolved endpoint.

Changed

  • Loading deprecated stdlib physical-unit *Range aliases now emits a deprecation warning pointing to the corresponding base unit type.
  • Deprecated the stdlib pins.zen and metadata.zen modules.
  • Deprecated the Schematics() helper.
  • Deprecated generic modules generics/Bjt.zen, generics/Diode.zen, generics/Mosfet.zen, and generics/OperationalAmplifier.zen.
  • Deprecated non-standard packages in generics/Inductor.zen.
  • Newly added KiCad symbol properties now default to justify left top and hide yes.
  • pcb scan now resolves local PDFs through the shared datasheet materialization cache by default, and --output copies the materialized Markdown and images out of that cache.
  • pcb scan now prints both PDF: and Markdown: output paths, with local PDF scans reporting the original input PDF path and URL scans reporting the materialized cached PDF path.
  • pcb search now merges docs full-text results for registry packages and KiCad symbols, with consistent phrase handling across indices.

Fixed

  • pcb build --offline now reuses selected locked pseudo-versions for rev-pinned workspace deps.
  • PhysicalValue is now hashable in Starlark, including after freezing.
  • Layout sync no longer creates empty footprint (embedded_files) blocks that KiCad removes on save.
  • Fixed an LSP memory leak during reparsing.
  • Rev-pinned dependencies now override stale lockfile-seeded pseudo-versions during resolution.

Install pcb 0.3.67

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.67/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.67/pcb-installer.ps1 | iex"

Download pcb 0.3.67

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.66 - 2026-04-06

06 Apr 01:09

Choose a tag to compare

Release Notes

Install pcb 0.3.66

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.66/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.66/pcb-installer.ps1 | iex"

Download pcb 0.3.66

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.65 - 2026-04-03

03 Apr 23:18

Choose a tag to compare

Release Notes

Added

  • Added 10uF 100V 1210 house capacitor in stdlib

Fixed

  • pcb layout no longer crashes when a managed component path is numeric-only, such as 1053091102.
  • pcb build now warns and drops invalid inherited symbol datasheet paths instead of failing the build.

Install pcb 0.3.65

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.65/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.65/pcb-installer.ps1 | iex"

Download pcb 0.3.65

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.64 - 2026-04-02

02 Apr 19:00

Choose a tag to compare

Release Notes

Added

  • Added support for KiCad 10.

Install pcb 0.3.64

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.64/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.64/pcb-installer.ps1 | iex"

Download pcb 0.3.64

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

0.3.63 - 2026-03-30

30 Mar 22:40

Choose a tag to compare

Release Notes

Changed

  • KiCad symbol is now the source of truth for component metadata (footprint, datasheet, part); generated .zen files are minimal wrappers.
  • Component() inherits skip_bom from the KiCad symbol in_bom flag (inverted) when not explicitly set.
  • pcb fork add is now blocked and points users to pcb sandbox; pcb fork remove and pcb fork upstream remain for existing forks.

Added

  • Warn when module io()s are declared but never connected to any realized ports.

Fixed

  • Stdlib Crystal and MountingHole no longer expose unused variant-specific ports.
  • Untagged branch/rev dependencies now use 0.1.1-0... pseudo-versions so they outrank plain 0.1.0 deps.

Install pcb 0.3.63

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diodeinc/pcb/releases/download/v0.3.63/pcb-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/diodeinc/pcb/releases/download/v0.3.63/pcb-installer.ps1 | iex"

Download pcb 0.3.63

File Platform Checksum
pcb-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
pcb-x86_64-apple-darwin.tar.xz Intel macOS checksum
pcb-x86_64-pc-windows-msvc.zip x64 Windows checksum
pcb-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum