Commit Graph

105 Commits

Author SHA1 Message Date
akhilles 6a42519f83 Use workspace root .pcb dir for staging releases
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-14 18:22:05 -07:00
akhilles 6787f95d5e Add support, test-coverage for workspace-relative loads
Assume that pcb.toml is needed for workspace-relative loads

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-14 18:16:16 -07:00
akhilles 61be464bf8 Fix windows compat
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-14 17:54:48 -07:00
akhilles c806635216 Add pcb release command
Intentially spartan in terms of flags/arguments. All that's needed is
the path to the .zen file.

To test:
cargo run -- release crates/pcb/test-workspace/boards/TestBoard.zen

Implemented:
- Workspace root detection (even without pcb.toml)
- Git-based versioning (e.g. tag > commit hash > dirty commit hash)
- Zen source files copied into release dir (release-dir/src)
- Dependencies are vendored into release dir (release-dir/src/vendor)
- Unmatched bom is generated into release dir (release-dir/bom)
- KiCad layout dir is copied into release dir (release-dir/layout)
- Metadata file is generated into release dir (release-dir/metadata.json)
- Generated artifacts are stored in .pcb/ dir (for now) and not uploaded

TODO:
- Upload the release bundle to API server
- Add a --dry-run to generate release bundle but not upload (similar to
  cargo)
- Use the vendor/ dir for dependency resolution for deterministic builds
- Add pcb vendor subcommand, --offline flag for build/layout
- Add more release artifacts (e.g. gerbers, odb, etc.)

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-14 15:59:40 -07:00
Akhil Velagapudi f20ac95f64 [DIO-298] [DIO-299] Add pcb bom command to generate unmatched bom (#66)
* Add structured, unmatched BOM export command

Run using `pcb bom <path/to/zen> -o json`

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Test bom command in CI

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Bump stdlib in examples from v0.2.0 to v0.2.2

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Remove default_multiplier, use struct for group key

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Use PhysicalValue to do less string parsing

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add alternatives to group key

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Use DynamicFullWidth for the comfy table

Attempts to fit the table within terminal width.

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

---------

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-14 12:13:20 -07:00
Akhil Velagapudi a41fd301eb Parse unit records as AttributeValue::Physical (#68)
Reduce unnecessary conversions to/from strings.
Use rust_decimal for fixed precision.

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-14 10:21:10 -07:00
Lenny Khazan 208d95e023 resolve workspace in wasm (#65) 2025-08-12 02:19:13 -04:00
Lenny Khazan b29b5865e5 pcb upgrade command (#64)
* `pcb upgrade` command

* remove pending snap

* clippy
2025-08-12 01:56:48 -04:00
Davide Asnaghi dbb13bd4aa pin stdlib (#63) 2025-08-08 16:23:01 -04:00
Lenny Khazan d3bef1b0a5 Update net naming strategy (#62)
* Consistent net naming

* cargo fmt

* fix clippy

* uniquify net names
2025-08-08 15:52:15 -04:00
Lenny Khazan 4c135e964e Updates for visualizer (#61)
* Updates for visualizer

* update docstring
2025-08-05 18:20:01 -04:00
Davide Asnaghi 9a96e2e5aa [DOCS] theme (#60)
* add diode theme

* add vscode links

* add vscode features

* advanced install
2025-08-05 16:50:40 -04:00
Davide Asnaghi da1375abbd [FIX] multiple .pcb caches (#59)
* fix .pcb cache instantiation

* fix format
2025-08-05 11:15:11 -04:00
Martin Charles 926864652c add nix flake (#51)
* add nix flake

nix profile install nix profile install github:diodeinc/pcb

kicad isn't packaged here yet but can deal with that later

used crane as there is a bug in nixpkgs rust https://discourse.nixos.org/t/rust-with-git-deps-symbolic-link-error-to-cargo-vendor-dep/28841 and naserk had some issue as well. crane isn't ideal because it doesn't cache properly but now it one click installs so whatever

* allow external buildifier

* fix linux compilation

next up package kicad in a sane way

* fmt

* apply suggestions
2025-08-04 17:33:39 -04:00
Lenny Khazan 834fc645cc [DIO-293] Add dnp/exclude_from_bom support (#58)
* [DIO-293] Add dnp/exclude_from_bom support

* ignore underscored fields
2025-08-04 16:28:07 -04:00
Lenny Khazan 7c2462d1cc add signature annotation to modules in netlist (#57)
* feat: add signature annotation to modules in netlist

* fix clippy

* deterministic interface element ordering
2025-08-03 21:27:03 -04:00
Lenny Khazan fe7daceafd Update README.md (#55) 2025-08-01 14:28:05 -04:00
Lenny Khazan 2c836ac395 Fix workspace dependencies in schematics viewer (#54) 2025-07-31 13:58:36 -04:00
Lenny Khazan f702b18a75 Update docs (#53) 2025-07-30 13:02:08 -04:00
Lenny Khazan 92373d47ba Automatically cast int<>float (#52) 2025-07-29 23:39:47 -04:00
Lenny Khazan e48c6d9286 update prerelease (#48) v0.2.0-prerelease.2 2025-07-24 14:49:04 -04:00
Lenny Khazan d62249223b Update release process (#47)
* Update release process

* Remove workflow
2025-07-24 14:47:50 -04:00
Lenny Khazan d40521a818 Improve enum handling for io() and config() (#46)
* Improve handling of enums for io()/config()

* update extraction
2025-07-23 15:13:50 -04:00
Lenny Khazan 3d09ba9283 Update README.md (#45) 2025-07-23 00:34:02 -04:00
Lenny Khazan eeb9e323b6 fix: exclude aarch64-unknown-linux-gnu and add VSCode extension to cargo-dist (#43)
- Remove aarch64-unknown-linux-gnu target from the build matrix to fix
  build failures in the release workflow
- Add VSCode extension as an extra artifact that gets built and
  distributed with releases
- Set up Node.js in GitHub Actions workflow for building the extension

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
v0.2.0-prerelease.1
2025-07-22 15:22:04 -04:00
Lenny Khazan 891f4698b1 update version to 0.2.0-prerelease.1 (#42) 2025-07-22 13:53:31 -04:00
Lenny Khazan 9798fb08f3 Update VSCode extension (#41)
* Update VSCode extension

* fix lint

* lint

* lint
2025-07-21 23:59:10 -04:00
Lenny Khazan 7aef7940c2 Fix handling of kicad_sym (extends ...) (#40)
* Fix handling of kicad_sym (extends ...)

* update snaps
2025-07-21 23:02:33 -04:00
Lenny Khazan 53345164bb Fix for relative imports in external dependency (#39)
* Fix for relative imports in external dependency

* expose default value and help text

* Remove duplicate Parameter type

* skip some finicky tests on windows

* unused import
2025-07-21 02:01:47 -04:00
Lenny Khazan 810a7373b5 deterministic parameter ordering (#38) 2025-07-20 18:42:02 -04:00
Lenny Khazan 0682b72e08 Fix schematics when symbol= and pin_defs= are provided (#37) 2025-07-20 16:57:04 -04:00
Lenny Khazan 9f65ebc80a More robust VSCode schematics viewer (#36)
* wip

* RemoteFetcher

* refactor load logic

* update bundle

* updates

* cleanup

* fixes

* skip on windows

* remove unused

* Add sidebar (non-functional for now)

* Misc fixes and speed

* fix for misaligned first-layout

* fix unnamed pins

* remove debugging

* Add edge labels

* net symbol support

* multiple net symbols

* fix eslint

* Pass symbol across module boundary

* Add new Symbol("library.kicad_sym:SYM") syntax

* update spec

* update snaps
2025-07-20 15:04:49 -04:00
Lenny Khazan ad6f0ded3a Refactor load logic into pcb-zen-core (#33)
* wip

* RemoteFetcher

* refactor load logic

* update bundle

* updates

* cleanup

* fixes

* skip on windows

* remove unused
2025-07-18 15:12:53 -04:00
Lenny Khazan 24fb3e029d Update README.md (#35) 2025-07-18 14:39:31 -04:00
Lenny Khazan 345494f55b Fix symbols with multiple pads per pin + component orientation on back-side components (#34)
* Fix symbols with multiple pads per pin

* remove unused

* update layout syncing

* update snap for kicad 9.0.3

* Fix orientation syncing for back components

* update to kicad 9.0.3 on windows

* more robust kicad version in CI
2025-07-18 14:37:05 -04:00
Lenny Khazan b58d133104 Autogenerate net names for unnamed interface nets (#32) 2025-07-15 21:19:04 -07:00
Lenny Khazan aebd53ce61 Schematic layout persistence (#31)
* port changes from main repo

* persist sch position

* Update tests

* remove unused
2025-07-14 02:20:13 -04:00
Lenny Khazan d3b26cab66 Remove debug log (#29) 2025-07-12 10:30:52 -07:00
Lenny Khazan acff75845c Schematics Viewer v2 (#23)
* Support net symbols

* Run renderer tests in CI

* renderer -> LayoutEngine

* wip

* rename

* add examples

* support symbol "extends"

* start reworking layout engine + snapshot tests

* add examples

* wip add nets

* Add signature to ModuleValue

* tweaks

* per-component net labels

* movable

* WIP with ELK

* wip libavoid

* misc fix

* better

* betterer

* improvements

* more

* update

* junction detection

* better

* snapping and stuff

* fix re-rendering

* more better

* more

* cargo fmt

* update bg

* eslint

* cleanup, tests
2025-07-12 13:24:55 -04:00
Davide Asnaghi 1841f961e4 [TEST] bundler (#27)
* add file provider to bundler

* add tests for bundler

* add tests for bundler, with better load resolution

* unix compliant zip on windows
2025-07-10 23:18:43 -07:00
Davide Asnaghi 3345ba9410 add file provider to bundler (#26) 2025-07-10 21:34:59 -07:00
Davide Asnaghi 44891494ef [FMT] implement formatter (#25)
* add pcb fmt

* unify pcb path in extension

* change the name of the extension

* bundle buildifier

* better path res

* fix clippy

* recursive

* fix format

* fix one more

* cargo info

* fix format on save
2025-07-10 16:24:25 -07:00
Lenny Khazan 47d379eb84 Properly sync component sides (#24) 2025-07-07 16:44:31 -07:00
Davide Asnaghi e7a71f1fdb [MODULE] resolve workspace loads (#19)
* use load resolving with modules

* local package resolution

* fix spec

* update snapshots

* remove unnecessary code

* move to snapshot tests

* revert eval errors

* canonical cache

* make tests work on windows

* refresh snap

* do not shadow alias

* fix: Add serial_test to prevent race conditions in module loading tests

- Add serial_test dependency to pcb-zen crate
- Mark tests that use package aliases with #[serial_test::serial]
- This prevents race conditions with the global ALIAS_CACHE when tests run in parallel
- Fixes test failures on Ubuntu where path canonicalization differs from macOS
2025-07-06 23:34:42 -07:00
Lenny Khazan e36f2d0cc0 Add pcb clean (#22) 2025-07-07 02:28:36 -04:00
Lenny Khazan 46acd8d1a2 update cargo dist (#21) 2025-07-07 01:55:36 -04:00
Lenny Khazan a8aa30d97e Optimize symbol library loading (#20)
* Fix incorrect symbol rendering in schematics viewer

* Cache symbol library

* update snaps
2025-07-07 01:50:17 -04:00
Lenny Khazan ba3fa631f1 Simplify spec (#16) 2025-07-06 20:10:59 -04:00
Davide Asnaghi f1a972ee59 kicad test (#18)
* add test for kicad

* cache dir in snapshots
2025-07-05 18:06:02 -04:00
Davide Asnaghi aafeae95c6 specify node version for preview (#17) 2025-07-05 12:22:35 -04:00