Commit Graph

161 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 5e1dae4458 bump timout 2025-08-23 23:28:35 -04:00
d-asnaghi 8ae65df813 add timout 2025-08-23 23:16:35 -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 deec05e184 Remove invalid workflow file (#99)
It's causing a bunch of noise in Actions.

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-21 14:53:48 -07:00
Akhil Velagapudi eedba95d7d Use smart rust cache (#98)
* Use smart rust cache

Out cache sizes are blowing up:

Cache Size: ~8914 MB (9346691088 B)
"C:\Program Files\Git\usr\bin\tar.exe" -xf C:/a/_temp/277318a1-9141-472d-bf1b-4d0461835b0b/cache.tzst -P -C C:/a/pcb/pcb --force-local --use-compress-program "zstd -d"
Cache restored successfully
Cache restored from key: Windows-cargo-02b001115c33129b2426bd7db7faa11329497685bfa1d1e328c20e41bc781dca

Which is slowing down builds. Just fetching cargo cache took 6 mins.

Swatinem/rust-cache has much better default behavior:
- Cleans dependencies no longer used
- Cleans incremental build artifacts
- Cleans anything older than 1 week

It also only caches dependencies (and their built artifacts). Caching
workspace crates is not that useful.

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

* Reuse build pcb for stdlib testing

Also use actions/checkout for faster cloning.

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

---------

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-21 14:37:50 -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
Lenny Khazan 9d75b20b24 bump version (#97) v0.2.0-prerelease.5 2025-08-21 15:30:27 -04: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 1df8194abf Switch to larger github runners (#90)
* Switch to larger github runners

The "xlarge" in "macos-15-xlarge" doesn't actually mean extra large. The
"x" indicates arm64 as opposed to Intel.

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

* Remove dep on deprecated actions-rs/toolchain@v1

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

---------

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-08-19 18:50:50 -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) v0.2.0-prerelease.4 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
Lenny Khazan f9a6743428 0.2.0-prerelease.3 (#82)
* bump version

* Bump version: 0.2.0-prerelease.3
2025-08-18 18:32:06 -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