Commit Graph

91 Commits

Author SHA1 Message Date
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