Akhil Velagapudi
222cced75e
Simplify Component properties -> KiCad footprint properties pipeline ( #256 )
...
* Dedup PhysicalValue
We had 2 different PhysicalValue structs in pcb-sch and pcb-zen-core
just to avoid adding starlark deps to pcb-sch. I don't think its worth
it.
* Use rust_decimal_macros
Factor out some duplicate code
* Add proper enum -> String attr support
* Add config("mpn") to generated components for compat
* Format list component properties nicely when exporting to kicad
* Format physical value, enum, list kicad properties in compiler
* Don't rely on __attr__ values
Handle typed, stringified component properties directly.
* Title case kicad properties
2025-10-30 16:08:48 -04:00
Akhil Velagapudi
680373c88b
Fix wasm build regression ( #254 )
...
My last PR added a transitive dependency on pcb-kicad to pcb-zen-wasm,
which caused the wasm build to fail.
Build wasm bundle in CI to prevent future regressions.
2025-10-30 00:27:39 -04:00
Akhil Velagapudi
30778a6561
Use kicad-cli for fallback bom instead of symbol parsing ( #253 )
...
* Use kicad-cli for fallback bom instead of symbol parsing
* Add snapshot test
2025-10-29 22:31:20 -04:00
Diode Robot
eeec06e65c
Release v0.2.17
2025-10-27 22:37:58 +00:00
Diode Robot
c00854e37f
Release v0.2.16
2025-10-23 03:44:12 +00:00
Lenny Khazan
14ed225337
fix 3d model embedding ( #247 )
...
* fix 3d model embedding
* update order
* fix order
2025-10-22 21:52:59 -04:00
Diode Robot
08f391bf84
Release v0.2.15
2025-10-22 17:08:09 +00:00
Akhil Velagapudi
d02f6e4b5c
Add HTML fab drawing to release ( #245 )
...
* Add HTML fab drawing to release
Writing to manufacturing/fab_drawing.html.
* Only show inner copper weight if it makes sense
2025-10-21 19:36:32 -04:00
Diode Robot
5340d35cd7
Release v0.2.14
2025-10-21 18:58:55 +00:00
Akhil Velagapudi
ef4f3693c5
Add pcb mcp ( #240 )
...
* Add mcp support for search_component, add_component
* Add get_zener_docs, fix add_component
* Update help snapshot
2025-10-21 13:33:10 -04:00
Akhil Velagapudi
606fc140cb
Add pcb auth, pcb scan, pcb search ( #236 )
...
* Add pcb auth, pcb scan
* Allow overriding APP, API urls
* Add pcb-scan crate
* Add pcb search
* Move all api stuff into separate crate
* Follow redirects, minor ux improvements
* Update snapshot
* Fix clippy lints
* Update lock file
* Download + extract images by default
* Use datasheel urls from download response
* Add pcb auth refresh
* Use use search API, do more work in parallel
* Dedup code
* Generate correct .zen file using template
* Remove unnecessary code
* Embed step file into kicad_mod
* Synchronize auth token refresh
* Switch to single datasheet url
Also normaize line endings.
* Fix step embedding
* Sanitize names, upgrade footprints
2025-10-20 23:24:45 -04:00
Diode Robot
89f70b64e0
Release v0.2.13
2025-10-17 19:06:44 +00:00
Diode Robot
14a74ddf91
Release v0.2.12
2025-10-15 19:38:29 +00:00
Akhil Velagapudi
78b63cd9c1
[ENG-102] Auto assign netclasses by matching impedances ( #232 )
...
* Sync units, board_config
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Parse netclasses
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Auto assign netclasses by matching impedances
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Only match net -> SE, DiffPair -> diff
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-10-15 09:45:47 -04:00
Diode Robot
2ae2d9c084
Release v0.2.11
2025-10-15 00:42:40 +00:00
Akhil Velagapudi
08460191ad
Fix bug where hijacked interfaces didn't have default values ( #231 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-10-14 18:39:01 -04:00
Diode Robot
23e08ef2ee
Release v0.2.10
2025-10-14 15:28:00 +00:00
Akhil Velagapudi
fe7441b7f4
Deferred child module evaluation ( #226 )
...
* Deferred child module evaluation
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Require load_resolver
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Avoid unsafe {}
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Define imports at top of file
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add minimal repro
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add custom enum impl with structural type checking
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Bump starlark-rust to use stable record type ids
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove repro/ contents
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Delete copy_value, deep copy
Also, migrate testbench to use deferred eval.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix Symbol type ID stability for config defaults
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-10-13 11:59:14 -04:00
Diode Robot
992a3c6934
Release v0.2.9
2025-10-09 17:18:58 +00:00
Akhil Velagapudi
4634c160ab
Fix an issue where the gltf optimizer would lose color data ( #220 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-10-09 10:47:25 -04:00
Diode Robot
1b271a690c
Release v0.2.8
2025-10-08 03:09:27 +00:00
Akhil Velagapudi
0a77bbaa43
Add GLB export w/ gltfpacking ( #218 )
...
* Add GLB export w/ gltfpacking
Also separate 3d model exports into multiple tasks
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Switch to gltfpack-sys lib
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Bump gltfpack to drop cmake dependency
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-10-07 20:28:24 -04:00
Diode Robot
0c7b1bf1ba
Release v0.2.7
2025-10-06 14:35:41 +00:00
Davide Asnaghi
6e6e65daf9
Release v0.2.6 ( #211 )
2025-10-05 04:18:49 +02:00
Akhil Velagapudi
a877cfd530
Use git worktrees for more efficient dep fetching ( #206 )
...
Loading multiple versions/refs from the same repository required
separate full clones. This was slow, wasted disk space, and network
bandwidth despite having 90%+ content overlap in some cases.
Use git worktrees with a shared bare repository as the object store.
Each version gets a lightweight working directory that references the
same underlying git objects.
Also use a .lock file to avoid race conditions.
Cache Structure:
~/.cache/pcb/github/{user}/{repo}/
├── .repo/ # Shared bare repo
├── .repo.lock # Lock file
├── v0.2.7/ # Worktree
└── v0.2.10/ # Worktree
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-10-04 00:15:01 -04:00
Akhil Velagapudi
4dd6bd1027
Release v0.2.5 ( #202 )
2025-10-02 18:04:51 -04:00
Lenny Khazan
8356e663ff
Release v0.2.4 ( #197 )
2025-10-01 18:02:20 -04:00
Akhil Velagapudi
d84cb60c6f
Release v0.2.3 ( #194 )
2025-10-01 14:54:48 -04:00
Lenny Khazan
71fc380f32
v0.2.2 ( #192 )
2025-10-01 10:37:55 -04:00
Akhil Velagapudi
a2ffe8f823
Release v0.2.1 ( #189 )
2025-09-30 11:47:56 -04:00
Akhil Velagapudi
ac8434ff42
Board-level configuration ( #188 )
...
* Add `builtin.add_board_config`
Sets constraints
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Enable json extension
Useful for debugging
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* More compact config mapping
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add predefined sizes support to board config
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make all board config fields optional, add merging
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add netclass support to board config
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add stackup support, sexpr library
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Patch stackup on `pcb layout`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Sync board config by default
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix deep_merge
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Document board config feature
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Flatten netclasses
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add base configurations
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove unused _is_new_board
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Move board_config.zen to examples/
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use pcb-sexpr
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Replace --dont-sync with --sync (default true)
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-29 15:57:15 -04:00
Akhil Velagapudi
eeabb9dcca
Release v0.2.0 ( #184 )
2025-09-25 13:48:11 -04:00
Akhil Velagapudi
92c512e21d
Release v0.2.0-prerelease.12 ( #181 )
2025-09-23 23:27:50 -04:00
Akhil Velagapudi
83bb82e474
Add canonicalize cache to default file provider ( #179 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-23 18:05:13 -04:00
Akhil Velagapudi
a857f2b5c6
Release v0.2.0-prerelease.11 ( #173 )
2025-09-22 11:21:40 -04:00
Akhil Velagapudi
9ab57fd8f4
Release v0.2.0-prerelease.10 ( #168 )
2025-09-19 17:16:45 -04:00
Akhil Velagapudi
5ad3c7effb
[ENG-1] Add language-level physical values to do math ( #161 )
...
* Add PhysicalValue Rust + Starlark types
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add more units
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add Voltage
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical value math
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Moar units
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Macroify
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Moar unit math stuff
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Move define_physical_unit macros
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical relationship tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add __str__
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Parse celsius, fahrenheit temps
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Hijack units.zen and swap with builtins
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add builtin
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* For unsupported ops, output dimensionless
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix starlark-rust dep
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix __str__ type annotation
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove unused record fields
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove unused imports in tests/path.rs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical value to schematic
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make physical value str conv lossless
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add back __{}__ typed properties in pcb
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add with_tolerance, with_unit
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical value <> string math
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Allow all bin ops on custom type
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Parse "ohms"
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add dimensioned units
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add dimensionless casting, allow with_unit(None)
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Allow constructing physical value with just number pos arg
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Bump starlark-rust
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-19 17:12:41 -04:00
Desmond Mehta
803b5d5ebb
update ruff v0.4.10 -> 0.13.0 to fix nix flake ( #158 )
2025-09-15 18:10:59 -04:00
Diode Robot
13f9f480e8
Bump axoupdater to 0.9 ( #157 )
...
cargo-dist fails if it's out of date:
https://github.com/diodeinc/pcb/actions/runs/17744277736/job/50425561145 .
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
Co-authored-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-15 15:45:17 -04:00
Akhil Velagapudi
df4a534376
Release v0.2.0-prerelease.9 ( #155 )
2025-09-15 15:09:13 -04:00
Akhil Velagapudi
63c3ab1127
Auto update pcb ( #149 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-11 15:03:07 -04:00
Akhil Velagapudi
0745f379c7
Add pcb sch position loading/saving to wasm, lsp ( #147 )
...
* Add pcb sch position loading/saving to wasm, lsp
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix ordering
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-10 14:08:00 -04:00
Akhil Velagapudi
0ca2f604ba
Replace buildifier with ruff fmt ( #146 )
...
buildifier doesn't support f-strings, which we use in a bunch of places.
We also run fmt after `pcb upgrade`, and it's a bit annoying that it
fails due to a buildifier error.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-08 23:22:10 -04:00
Akhil Velagapudi
0d27d10293
Release v0.2.0-prerelease.8 ( #143 )
2025-09-05 23:30:09 -04:00
Akhil Velagapudi
0c2c87c338
[DIO-352] Add TestBench() support ( #129 )
...
* Add TestBench
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add checks
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add net -> ports dict
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add port -> pin dict
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Provide component properties to check fns
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update spec, fix spans on check failures
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use check(), error() to fail checks instead of return value
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add ModuleView to group check fn args
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add component_values field, expose more typed values
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fully switch to ComponentValues in check fn
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use ModuleValue directly
Delete ModuleView
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add at() support for module which can return sub-module or component
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Rename testbench.rs -> test_bench.rs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Move bench_test_cases to test-workspaces/bench
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Print "checks passed" log to eprintln
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make .nets and .components functions
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add schematic to graph conversion, path finding
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add external net support to path finding
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Don't use bool ret for matchers
Use error(), check()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add samples
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Moar samples
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update spec.mdx
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Consolidate seq matchers test code
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add suppress_errors
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add lm5163q1 example
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add test_cases, inputs arg to check fns
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update bmi270 example to use path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use more path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add span for path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb test
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Print stuff only to stderr
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Output test results in TAP or json
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* "testbench" -> "test_bench"
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add table output format for pcb test
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Tolerate non-callable inputs to "checks"
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add tuple checks support for renaming check fns
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add snapshot tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make max_depth optional
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-04 22:30:30 -04:00
Lenny Khazan
b8501ad511
bump version ( #130 )
2025-08-30 09:30:47 -04:00
Akhil Velagapudi
64725d3768
Release v0.2.0-prerelease.6 ( #121 )
2025-08-26 12:28:28 -07:00
Yishen Chen
b4aa47b114
Add pcb sim to setup spice simulation from schematics ( #56 )
2025-08-26 12:06:04 -04:00
Akhil Velagapudi
9ae327b645
Add pcb tag ( #117 )
...
* Add `pcb tag`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add `--force` flag to `pcb tag`
Also, remove the version ordering validation.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-25 22:45:58 -07:00
Akhil Velagapudi
ae7766a8a6
Add warnings for unstable refs in load(), Module() ( #105 )
...
* Refactor diagnostics for warnings support
- Add render trait
- Render warnings after errors
- Reuse build code across build, layout
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Delete bundle
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix clippy lints
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add git ref metadata
3 stages to fetch_remote:
- Ensure remote is in cache
- Add appropriate symlinks
- Classify + store ref metadata
Some code cleanup:
- Factored out some git clone dupe code
- Centralized git operations in git.rs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Warn on unstable refs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add "-Dwarnings" flag to error on warnings
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Warn on unstable refs in Module()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add snapshot tests for warnings
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix span detection for chained Module()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add ResolveContext, dedup resolve code
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use spec history for better alias warnings
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb.toml spans
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add type-erased error storage to Diagnostic
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix bug with load() span detection
The previous logic would just attempt to match by path, but if there are
multiple load() statements in a single file with the same path, then
find_load_span_for_path with always return the first.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Added diagnostics passes
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add LSP-specific pass to filter out some warnings
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix rebase conflicts
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix unstable ref detection logic
If we clone by tag and the tag exists in the git repo, it's a stable
ref. Same with commit.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-25 15:45:51 -07:00