Skip to content

Releases

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 06 Nov 14:24
301c1b7

Synth compiles text-based circuit designs (SynthSpec) into KiCad schematics, PCB layouts, and bills of materials. This release ships prebuilt CLI binaries for five platforms, each with a SHA-256 checksum.

Install

Download the binary for your platform and verify it against the matching .sha256 file before running:

Platform Asset
Linux x86-64 synth-linux-amd64
Linux arm64 synth-linux-arm64
macOS arm64 synth-darwin-arm64
macOS x86-64 synth-darwin-amd64
Windows x86-64 synth-windows-amd64.exe
# Linux
sha256sum -c synth-linux-amd64.sha256
# macOS
shasum -a 256 -c synth-darwin-arm64.sha256
# Windows (PowerShell)
certutil -hashfile synth-windows-amd64.exe SHA256

Then make it executable and confirm the build:

chmod +x synth-linux-amd64
./synth-linux-amd64 --version

From source

Requires a current stable Rust toolchain.

cargo install --git https://github.com/absmach/synth --tag v0.1.2 synth-cli

Quick start

synth validate fixtures/designs/hello.synth
synth export-kicad fixtures/designs/hello.synth --out output/hello

synth check DESIGN.synth --json is the deterministic, model-free gate for CI: it runs compiler validation and DRC and returns structured diagnostics with source locations. Add --fab to require a complete KiCad manufacturing export and receive SHA-256 hashes for the emitted files.

Agent integration

synth mcp --stdio

The MCP server exposes the SynthSpec language reference, registry search, validation, fixes, and every compiler stage with structured diagnostics, so agents can iterate on a design end to end.

Optional: KiCad integration

Electrical-rule checks, schematic rendering, and fabrication outputs shell out to kicad-cli. Install KiCad 10 to enable them. Without it, synth export-kicad still generates a project, but every native check reports unknown rather than passing, and any command that asked for verification (--validate-erc, --gerbers/--drill/--step, synth check --fab) fails closed. Set KICAD_CLI if the binary is not on PATH, and SYNTH_KICAD_CLI_TIMEOUT_SECS to change the per-run budget (default 300s).

Documentation

The auto-generated list of changes and contributors follows below.

What's Changed

  • Chore: Release V0.1.1 by @rodneyosodo in #101
  • NOISSUE - Align RP2350 showcase registry pin mappings by @SammyOina in #100
  • NOISSUE - Recognize no-connect markers in schematic validation by @SammyOina in #106
  • NOISSUE - Fix LED anode and cathode pin numbers in the registry by @nyagamunene in #86
  • NOISSUE - Derive imported route uuids from their content by @nyagamunene in #89
  • NOISSUE - Add USB protection, crystal and LED parts and fix registry ratings by @nyagamunene in #90
  • NOISSUE - Size synthesized IC bodies the same in the schematic and the symbol library by @nyagamunene in #104
  • fix(cd): build Linux release binaries on an older-glibc runner by @rodneyosodo in #111
  • NOISSUE - Update reference golden fingerprints from CI by @nyagamunene in #116
  • NOISSUE - Place edge-hinted connectors flush with the board edge by @nyagamunene in #105
  • NOISSUE - Read rotated pad positions the way KiCad writes them by @nyagamunene in #109
  • NOISSUE - Join cut-off ground pour pieces after routing by @nyagamunene in #108
  • NOISSUE - Tighten passive spacing in the outline packer so boards come out compact by @nyagamunene in #113
  • fix: make Compose CLI builds runtime-compatible by @SammyOina in #112
  • NOISSUE - Deliver the routed board with its ground pours filled by @nyagamunene in #114
  • NOISSUE - Stackup-driven signal integrity, KiCadRoutingTools default, and place→route→re-place by @rodneyosodo in #120
  • NOISSUE - Placement seed and opt-in power planes by @rodneyosodo in #121
  • NOISSUE - Warn on a signal via with no ground return via by @rodneyosodo in #124
  • NOISSUE - Record approved via-in-pad sites as fabrication notes by @nyagamunene in #139
  • NOISSUE - Warn on unprotected and always-terminated RS-485 lines by @nyagamunene in #140
  • NOISSUE - Plane fanout stubs, plane-split detection, and loop/hygiene follow-ups by @rodneyosodo in #125
  • NOISSUE - Physics in the gate, split-ground priority, placement-loop payoff, agent parity by @rodneyosodo in #126
  • NOISSUE - Power integrity, split-ground regions, registry thermal data, MCP cleanup by @rodneyosodo in #127
  • NOISSUE - Keep reference labels on the board and clear of other parts by @nyagamunene in #144
  • NOISSUE - Close the SI/PI/placement caveats; SI/PI depth and thermal-aware placement by @rodneyosodo in #132
  • SYN-40 - Add the registry's first BGA part, and an HDMI receptacle by @JeffMboya in #156
  • NOISSUE - read a through via as the span of layers it crosses by @JeffMboya in #153
  • NOISSUE - Fix a protection device's surge rating is not steady current by @rodneyosodo in #163
  • SYN-128 - Give each plane rail an inner layer of its own by @JeffMboya in #160
  • NOISSUE - Let the board outline end at a mounting hole, test point or fiducial courtyard by @nyagamunene in #162
  • NOISSUE - Run the SI/PI rules on the routed board in the release gate by @rodneyosodo in #134
  • NOISSUE - Per-example directories and complete MCU pin maps by @rodneyosodo in #141
  • fix(kicad): refresh the sensor_logger golden SVG fingerprint by @rodneyosodo in #172
  • NOISSUE - Bump rustls to 0.23.46 for four RUSTSEC advisories by @nyagamunene in #174
  • NOISSUE - Put reference labels next to their part before falling back to the far default by @nyagamunene in #173
  • NOISSUE - Fix the CD Linux builds restoring a newer-glibc cache by @rodneyosodo in #179
  • NOISSUE - Carry the manufacturer clearances in the exported project file by @nyagamunene in #154
  • NOISSUE - Let designs and part files steer silkscreen reference labels by @nyagamunene in #149
  • NOISSUE - Auto-apply the placement review and shorten wires between connected parts by @nyagamunene in #180
  • NOISSUE - Compact the auto placement so boards are only as big as their parts need by @nyagamunene in #185
  • NOISSUE - Give every outer ground pad a via within 2 mm of its edge by @nyagamunene in #175
  • NOISSUE - Keep copper and vias out from under a mounting hole's screw head by @nyagamunene in #176
  • SYN-40 - Write every manufacturer minimum into the exported project by @JeffMboya in #167
  • NOISSUE - Check a via against the pad's real outline by @nyagamunene in #198
  • NOISSUE - Turn the pads of a rotated footprint with the footprint by @nyagamunene in #200
  • NOISSUE - Use a net's declared name as its schematic label by @nyagamunene in #197
  • NOISSUE - Report whether each part's footprint has a 3D model by @nyagamunene in #151
  • NOISSUE - Establish LCSC integration phase zero contract by @SammyOina in #213
  • NOISSUE - Make supplier identity and snapshots explicit by @SammyOina in #214
  • NOISSUE - Freeze real-part procurement assignments by @SammyOina in #215
  • SYN-40 - A regulator feedback divider is not a bus pull-up by @JeffMboya in #182
  • NOISSUE - Add reproducible manufacturing cost reports by @SammyOina in #217
  • SYN-187 - A clock arriving on a connector has a source by @JeffMboya in #188
  • SYN-189 - A decoupling capacitor is not a power source by @JeffMboya in #192
  • SYN-40 - Add an SDR SDRAM part, the registry's first parallel memory by @JeffMboya in #186
  • NOISSUE - Add strict JLCPCB manufacturing bundles by @SammyOina in #218
  • SYN-40 - Keep the project beside the board the engine reads by ...
Read more

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 12:33
7db8069

Synth compiles text-based circuit designs (SynthSpec) into KiCad schematics, PCB layouts, and bills of materials. This release ships prebuilt CLI binaries for five platforms, each with a SHA-256 checksum.

Install

Download the binary for your platform and verify it against the matching .sha256 file before running:

Platform Asset
Linux x86-64 synth-linux-amd64
Linux arm64 synth-linux-arm64
macOS arm64 synth-darwin-arm64
macOS x86-64 synth-darwin-amd64
Windows x86-64 synth-windows-amd64.exe
# Linux
sha256sum -c synth-linux-amd64.sha256
# macOS
shasum -a 256 -c synth-darwin-arm64.sha256
# Windows (PowerShell)
certutil -hashfile synth-windows-amd64.exe SHA256

Then make it executable and confirm the build:

chmod +x synth-linux-amd64
./synth-linux-amd64 --version

From source

Requires a current stable Rust toolchain.

cargo install --git https://github.com/absmach/synth --tag v0.1.1 synth-cli

Quick start

synth validate fixtures/designs/hello.synth
synth export-kicad fixtures/designs/hello.synth --out output/hello

synth check DESIGN.synth --json is the deterministic, model-free gate for CI: it runs compiler validation and DRC and returns structured diagnostics with source locations. Add --fab to require a complete KiCad manufacturing export and receive SHA-256 hashes for the emitted files.

Agent integration

synth mcp --stdio

The MCP server exposes the SynthSpec language reference, registry search, validation, fixes, and every compiler stage with structured diagnostics, so agents can iterate on a design end to end.

Optional: KiCad integration

Electrical-rule checks, schematic rendering, and fabrication outputs shell out to kicad-cli. Install KiCad 10 to enable them. Without it, synth export-kicad still generates a project, but every native check reports unknown rather than passing, and any command that asked for verification (--validate-erc, --gerbers/--drill/--step, synth check --fab) fails closed. Set KICAD_CLI if the binary is not on PATH, and SYNTH_KICAD_CLI_TIMEOUT_SECS to change the per-run budget (default 300s).

Documentation

The auto-generated list of changes and contributors follows below.

What's Changed

  • SYN-64 - Derive and check trace width and gap for differential-pair controlled impedance by @nyagamunene in #85
  • build(deps): bump the cargo-dependency group across 1 directory with 12 updates by @dependabot[bot] in #94
  • feat(export): add --allow-incomplete for explicit draft exports by @rodneyosodo in #99

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:27
babcad1

Synth compiles text-based circuit designs (SynthSpec) into KiCad schematics, PCB layouts, and bills of materials. This release ships prebuilt CLI binaries for five platforms, each with a SHA-256 checksum.

Install

Download the binary for your platform and verify it against the matching .sha256 file before running:

Platform Asset
Linux x86-64 synth-linux-amd64
Linux arm64 synth-linux-arm64
macOS arm64 synth-darwin-arm64
macOS x86-64 synth-darwin-amd64
Windows x86-64 synth-windows-amd64.exe
# Linux
sha256sum -c synth-linux-amd64.sha256
# macOS
shasum -a 256 -c synth-darwin-arm64.sha256
# Windows (PowerShell)
certutil -hashfile synth-windows-amd64.exe SHA256

Then make it executable and confirm the build:

chmod +x synth-linux-amd64
./synth-linux-amd64 --version

From source

Requires a current stable Rust toolchain.

cargo install --git https://github.com/absmach/synth --tag v0.1.0 synth-cli

Quick start

synth validate fixtures/designs/hello.synth
synth export-kicad fixtures/designs/hello.synth --out output/hello

synth check DESIGN.synth --json is the deterministic, model-free gate for CI: it runs compiler validation and DRC and returns structured diagnostics with source locations. Add --fab to require a complete KiCad manufacturing export and receive SHA-256 hashes for the emitted files.

Agent integration

synth mcp --stdio

The MCP server exposes the SynthSpec language reference, registry search, validation, fixes, and every compiler stage with structured diagnostics, so agents can iterate on a design end to end.

Optional: KiCad integration

Electrical-rule checks, schematic rendering, and fabrication outputs shell out to kicad-cli. Install KiCad 10 to enable them. Without it, synth export-kicad still generates a project, but every native check reports unknown rather than passing, and any command that asked for verification (--validate-erc, --gerbers/--drill/--step, synth check --fab) fails closed. Set KICAD_CLI if the binary is not on PATH, and SYNTH_KICAD_CLI_TIMEOUT_SECS to change the per-run budget (default 300s).

Documentation

The auto-generated list of changes and contributors follows below.

What's Changed

  • SYN - 52 - Generate copper with external engines behind an independent, fail-closed gate by @rodneyosodo in #91
  • SYN-77 - Fix qualification severity and pad-matching defects by @JeffMboya in #78
  • Chore: Release V0.1.0 by @rodneyosodo in #93

Full Changelog: v0.0.1...v0.1.0

v0.0.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 10:29
660da42

Synth compiles text-based circuit designs (SynthSpec) into KiCad schematics, PCB layouts, and bills of materials. This release ships prebuilt CLI binaries for five platforms, each with a SHA-256 checksum.

Install

Download the binary for your platform and verify it against the matching .sha256 file before running:

Platform Asset
Linux x86-64 synth-linux-amd64
Linux arm64 synth-linux-arm64
macOS arm64 synth-darwin-arm64
macOS x86-64 synth-darwin-amd64
Windows x86-64 synth-windows-amd64.exe
# Linux
sha256sum -c synth-linux-amd64.sha256
# macOS
shasum -a 256 -c synth-darwin-arm64.sha256
# Windows (PowerShell)
certutil -hashfile synth-windows-amd64.exe SHA256

Then make it executable and confirm the build:

chmod +x synth-linux-amd64
./synth-linux-amd64 --version

From source

Requires a current stable Rust toolchain.

cargo install --git https://github.com/absmach/synth --tag v0.0.1 synth-cli

Quick start

synth validate fixtures/designs/hello.synth
synth export-kicad fixtures/designs/hello.synth --out output/hello

synth check DESIGN.synth --json is the deterministic, model-free gate for CI: it runs compiler validation and DRC and returns structured diagnostics with source locations. Add --fab to require a complete KiCad manufacturing export and receive SHA-256 hashes for the emitted files.

Agent integration

synth mcp --stdio

The MCP server exposes the SynthSpec language reference, registry search, validation, fixes, and every compiler stage with structured diagnostics, so agents can iterate on a design end to end.

Optional: KiCad integration

Electrical-rule checks, schematic rendering, and fabrication outputs shell out to kicad-cli. Install KiCad 10 to enable them. Without it, synth export-kicad still generates a project, but every native check reports unknown rather than passing, and any command that asked for verification (--validate-erc, --gerbers/--drill/--step, synth check --fab) fails closed. Set KICAD_CLI if the binary is not on PATH, and SYNTH_KICAD_CLI_TIMEOUT_SECS to change the per-run budget (default 300s).

Documentation

The auto-generated list of changes and contributors follows below.

What's Changed

  • NOISSUE - Add connector mating face metadata and implement orientation DRC rule E-SYNTH-DRC-011 by @SammyOina in #1
  • NOISSUE - Improve placement sizing and routing feedback by @SammyOina in #2
  • NOISSUE - Converge physical exports against native DRC by @SammyOina in #3
  • Add company statement to KiCad title block and clean up tests by @rodneyosodo in #4
  • Add degenerate divider-ratio check and diagnostics documentation by @rodneyosodo in #5
  • Add netclass declarations and update board-literal call sites by @rodneyosodo in #6
  • Add hierarchical sheet annotation and clean up test artifacts by @rodneyosodo in #10
  • Add decoupling capacitance value check for diagnostics by @rodneyosodo in #9
  • Add verified reference circuit catalog and support types by @rodneyosodo in #8
  • Add warning for parts lacking MPN or LCSC identifiers by @rodneyosodo in #7
  • NOISSUE - Improve placement margins and ground routing by @SammyOina in #11
  • NOISSUE - Bound A* search, fix header orientation & clean up test corpus by @SammyOina in #12
  • Optimize KiCad export: multithreaded repair search and faster A* routing by @rodneyosodo in #13
  • NOISSUE - Reconstruct and route RP2350 development board by @SammyOina in #14
  • NOISSUE - Add conservative KiCadRoutingTools policy gate by @SammyOina in #15
  • NOISSUE - Add named nets, power rails, and netclass joins by @rodneyosodo in #16
  • NOISSUE - Add DNP flag, schematic notes, group boxes, and multi-sheet support by @rodneyosodo in #17
  • NOISSUE - Support explicit placement dimensions by @SammyOina in #18
  • NOISSUE - Use declared rail voltages in pin fan-out and check unit tags by @rodneyosodo in #19
  • NOISSUE - regions, net colours, and tighter page fitting by @rodneyosodo in #20
  • NOISSUE - Expand USB-C pin mapping to fan out logical nets to all physical pads by @SammyOina in #21
  • NOISSUE - Preserve multi-layer ground plane connectivity by @SammyOina in #24
  • NOISSUE - Add CI/CD and Dependabot for Synth by @rodneyosodo in #22
  • build(deps): bump dtolnay/rust-toolchain from 1.98.1 to 1.120.0 in the gh-dependency group by @dependabot[bot] in #25
  • Revert "build(deps): bump dtolnay/rust-toolchain in the gh-dependency by @rodneyosodo in #26
  • NOISSUE - Support 6-layer ground planes and add unit tests by @SammyOina in #23
  • NOISSUE - Expose compiler capabilities and board families by @SammyOina in #28
  • Fix schematic/PCB layout collision and repair broken footprint imports by @rodneyosodo in #29
  • Let a design choose its schematic page size by @rodneyosodo in #30
  • NOISSUE - Add deterministic release check gate by @SammyOina in #31
  • NOISSUE - Remove private project reference from release gate by @SammyOina in #32
  • refactor(layout): centralise pin classification and add placement cost by @rodneyosodo in #46
  • SYN-42 - Fail closed when KiCad ERC/DRC evidence is unavailable by @JeffMboya in #47
  • SYN-48 - Add DIFF-004 and DIFF-005 ERC rules by @nyagamunene in #49
  • SYN-43 - Add pin-to-footprint registry integrity qualification by @JeffMboya in #50
  • SYN-53 - Export reports KiCad DRC results honestly by @nyagamunene in #70
  • SYN-44 - Make unsafe export overrides visibly non-production by @JeffMboya in #71
  • SYN-54 - Split grounds keep their name and identity in the exported board by @nyagamunene in #72
  • SYN-55 - Capability list states what is unsupported or unverified by @nyagamunene in #73
  • SYN-56 - Regulator feedback safety: pin-role tags and a switch-node rule by @nyagamunene in #74
  • SYN-57 - A design can declare its board stackup by @nyagamunene in #76
  • SYN-62 - Controlled impedance needs a reference plane, or is labelled not verified by @nyagamunene in #79
  • SYN-61 - Release mode fails when the exported board is incomplete by @nyagamunene in #80
  • SYN-63 - Derive and check trace width for single-ended outer-layer controlled impedance by @nyagamunene in #81
  • NOISSUE - pin-anchored placement, one-pass cluster recognition, and routing diagnostics by @rodneyosodo in #84
  • Limit Docker core build context to release artifacts by @SammyOina in #88
  • NOISSUE - Auto-tag and release from the Cargo.toml version by @rodneyosodo in #92

New Contributors

Full Changelog: https://github.com/absmach/synth/commits/v0.0.1