d-asnaghi
5c539e1618
add hatching to complex test
2025-08-24 01:10:28 -04:00
d-asnaghi
c0e7524da3
use Duplicate
2025-08-24 01:05:23 -04:00
d-asnaghi
497bc9a6bf
add graphics groups
2025-08-24 00:11:04 -04:00
d-asnaghi
6114d1b14c
move methods to virtual item
2025-08-23 23:56:12 -04:00
d-asnaghi
9b2a3014fe
reduce complexity
2025-08-23 23:50:05 -04:00
d-asnaghi
5c84abe585
add graphics test
2025-08-23 23:14:18 -04:00
d-asnaghi
ed1f17185b
fix snapshots with no files
2025-08-23 23:12:44 -04:00
d-asnaghi
bd73505b33
deterministic snapshot
2025-08-23 23:12:44 -04:00
d-asnaghi
a48dec4ea0
add complex test
2025-08-23 23:12:44 -04:00
d-asnaghi
96696f48c3
fix sync graphics
2025-08-23 23:12:44 -04:00
d-asnaghi
9c80fab38f
add zone sync
2025-08-23 23:12:44 -04:00
d-asnaghi
ab281447da
hack: keep old tests to make sure we don't mess up
2025-08-23 23:12:44 -04:00
d-asnaghi
9097c81c55
wip: fix nets for zones
2025-08-23 23:12:44 -04:00
d-asnaghi
9bd46cea2c
hack: amend tests with (0,0) positioning for now
2025-08-23 23:12:44 -04:00
d-asnaghi
117e879aaa
add more interesting test
2025-08-23 23:12:44 -04:00
d-asnaghi
85f5ab3ece
fix net determinism
2025-08-23 23:12:44 -04:00
d-asnaghi
dcf37bd51e
fix zone sync
2025-08-23 23:12:44 -04:00
d-asnaghi
94723014f0
simpler zone test
2025-08-23 23:12:44 -04:00
d-asnaghi
4201c01536
add zones to groups
2025-08-23 23:12:44 -04:00
d-asnaghi
6a29835ead
add initial test for zone sync
2025-08-23 23:12:44 -04:00
d-asnaghi
2027895d99
sync zones and text
2025-08-23 23:12:44 -04:00
Lenny Khazan
222f784fc2
Add flag for supporting vendor in wasm ( #109 )
2025-08-23 21:25:30 -04:00
Akhil Velagapudi
96582b2714
Standardize pcb info paths ( #108 )
...
`pcb info` would mix and match absolute vs relative paths for workspace
root and board .zen paths. Enforce consistent behavior:
- Workspace root: always show full canonical path
- Board paths: always relative to workspace root
Also, removed the removed redundant directory field.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-23 15:53:37 -07:00
Akhil Velagapudi
b76e7eb53d
[DIO-347] Fix workspace-relative loads in local paths ( #107 )
...
* Add regression test for "//" dep in local path
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Resolve "effective_workspace_root" (with cache)
Which is different from overall "workspace_root".
Do this once at the top instead of at multiple downstream sites.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-23 13:25:09 -07:00
Akhil Velagapudi
2a57b047d1
Add PCB_NAME variable substitution ( #104 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-22 10:52:49 -07:00
Akhil Velagapudi
f3ee7fb3a9
Serialize bom as list ( #103 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-22 10:45:21 -07:00
Akhil Velagapudi
9549fca231
[DIO-334] Switch to <board_name>/<version> tags ( #102 )
...
* Switch to `<board_name>/<version>` tags
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix bug where .source.zip wasn't used for source-only releases
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make tag -> board matching case-insensitive
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Sanitize cli version
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add git helpers to sandbox
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-22 09:31:14 -07:00
Akhil Velagapudi
0da1d57a35
[DIO-333] Add --source-only releases, schema_version ( #101 )
...
* Add --source-only flag to `pcb release`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add schema version to metadata.json
This'll help with migrations. Rename existing "version" field to
"git_version" to disambiguate.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb release snapshot tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Sanitize git hashes
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Sanitize arch, platform, user
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use flat schema version
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-22 07:50:46 -07:00
Akhil Velagapudi
4c4213aa48
Export pre-aggregated, unmatched bom w/ path as key ( #100 )
...
* Export pre-aggregated BOM w/ path as key
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb bom snapshot tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update existing snapshot
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Rename bom/unmatched.json to bom/design_bom.json
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-21 18:48:37 -07:00
Akhil Velagapudi
44c73baf2d
[DIO-319] Add board config to pcb.toml, pcb info ( #92 )
...
* Add board config to pcb.toml, pcb info
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Choose first board (when sorted) as fallback default
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add secondary heuristics pass to detect boards without pcb.toml
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update snapshots
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Don't allow malformed pcb.toml
Empty pcb.toml is fine.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Don't copy .pcb/cache into test fixture
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Replace test-workspace with snapshot tests of pcb info
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-21 15:20:16 -07:00
Akhil Velagapudi
9a1930c2c5
pcb cli-level testing (#96 )
...
* Add sandbox
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add dir snapshotting
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add branch support, snapshot_dir
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add snapshot testing of stdout/stderr
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Only use local files for workspace root detection
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add bom, release tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb vendor snapshot test
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Sanitize linux tmp dir paths
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Ignore some tests on Windows
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Reuse dep fetching code from pcb-zen
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix download race condition
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Bump lock file
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Specify default branch
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Suppress 3d export logs to stdout
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-21 13:52:38 -07:00
Akhil Velagapudi
477d0f0e79
Vendor pcb.toml files ( #93 )
...
* Mark vendor/ dir as alias root
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Don't consider pcb.toml files irrelevant
Use more LoadSpec helpers.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Track pcb.toml files in path_to_spec
This is enough for `pcb vendor` to pick up these files and copy them to
the vendor/ dir.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use FileProvider::exists
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-21 15:29:34 -04:00
Lenny Khazan
f46a1918db
Use vendor/ folder in release ( #95 )
...
* Use vendor/ folder in release
* only for release
2025-08-21 15:29:24 -04:00
Akhil Velagapudi
ea36c60894
Include drill map pdf in gerbers.zip ( #94 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-20 20:47:16 -07:00
Akhil Velagapudi
1ee83c6e7e
Initial implementation of interface subclasses + auto-promotion ( #89 )
...
* Add serialize(), deserialize() builtins for debugging
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add field(), __post_init__ to interface()
Also, add better print() behavior.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add interface/net promotion
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove Cargo.toml patch
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix example
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix test workspace
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add interface arg type checking
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update spec.mdx
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Allow `using(Net)`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-20 09:27:39 -07:00
Akhil Velagapudi
f54aa468cc
Add hierarchical package alias resolution ( #91 )
...
Deeper directories taking priority.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-20 08:50:47 -07:00
Akhil Velagapudi
392c9b9395
Better CAD exports ( #88 )
...
* Use copied layout files as source for cad export
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Include pads, silkscreen, soldermask in CAD
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Patch text vars in .kicad_pro file
This is used for CAD export for some reason over the .kicad_pcb file.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-19 16:35:12 -07:00
Akhil Velagapudi
8996bef578
Use "odb.zip" for the ODB++ archive ( #87 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-19 15:32:33 -07:00
Akhil Velagapudi
55dc9a736e
Add ODB++ release artifact ( #86 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-19 15:28:11 -07:00
Lenny Khazan
d554a4f281
Bump to 0.2.0-prerelease.4 and add --version ( #85 )
2025-08-19 16:55:59 -04:00
Lenny Khazan
2bd2a2afb2
Add JSON output mode to pcb release ( #84 )
2025-08-19 16:53:23 -04:00
Lenny Khazan
d8afaba34b
Remove LSP autoimport logic ( #83 )
2025-08-18 23:07:43 -04:00
Akhil Velagapudi
47190c5821
[DIO-309] Add component_type tag for well-known components ( #81 )
...
* Make zen_file path relative to release archive
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add component_type tag for well-known components
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-18 14:54:40 -07:00
Akhil Velagapudi
b9d101e129
Fix package resolution in pcb vendor/release ( #80 )
...
* Add [packages] to vendor/release test case
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix package resolution in pcb vendor/release
The TrackingLoadResolver middleware couldn't properly resolve packages.
To fix, eliminate the middleware entirely and enhance CoreLoadResolver
to handle all the necessary tracking. This is likely to reduce future
bugs as well.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use public kicad package
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-18 14:32:31 -07:00
Davide Asnaghi
63e02ca70c
[FMT] ignore dotfiles ( #78 )
...
* ignore hidden files by default
* formatting
2025-08-16 16:16:58 -04:00
Akhil Velagapudi
2059bccbca
Substitute PCB_VERSION, PCB_GIT_HASH in release layout files ( #77 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-15 16:30:23 -07:00
Akhil Velagapudi
23442e6577
Only detect workspace root if pcb.toml has [workspace] ( #75 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-15 15:28:37 -07:00
Akhil Velagapudi
52ae02637b
Add more release artifacts ( #74 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-15 13:09:52 -07:00
Akhil Velagapudi
b97d9f053b
[DIO-302] Generate 3d models for release ( #73 )
...
* Generate 3d models for release
Release file structure:
/a614869/3d
├── model.step
├── model.svg
└── model.wrl
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Ignore spurious kicad-cli errors
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-15 12:47:52 -07:00
Akhil Velagapudi
58549fb924
[DIO-301] Add pcb vendor, pcb build --offline ( #72 )
...
* Update Cargo.lock
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb vendor
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Copy pcb.toml to release if it exists
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use vendor dir in resolver
Add --offline support to build, layout.
Standardize behavior of find_workspace_root. Most of the callsites would
fallback on parent dir of target .zen file. We should just do that
universally to reduce conditional code paths.
Add an option to the resolve to not use the vendor dir in case that's
useful in some cases.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Drop vendor alias
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Only support pcb vendor in pcb.toml workspaces
Attempting to resolve a common workspace root from multiple zen files in
a dir without pcb.toml just got way too complicated. We can add support
for this in the future if needed.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Canonicalize zen_path
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-15 12:07:51 -07:00