Commit Graph

17 Commits

Author SHA1 Message Date
Lenny Khazan 6a3d88fde1 Upgrade shipped symbols to KiCad 10 and enforce their format (#1198)
Amp-Thread-ID: https://ampcode.com/threads/T-01a07398-1a5e-751d-9d9c-c9e05b3d1313

Co-authored-by: Amp <amp@ampcode.com>
2026-09-05 22:19:00 +00:00
Akhil Velagapudi 4e01cb2635 Bundle kicad lib assets into lib/std (#886)
* docs: simplify README

* Add third-party notices

* Bundle stdlib KiCad assets

* Remove implicit KiCad library resolution

* Remove stale KiCad alias fixtures

* Remove layout-time model embedding

* Remove global KiCad footprint lookup

* Add KiCad stdlib path aliases

* Clean up KiCad stdlib aliases

* Derive WorkspaceConfig default

* Clean up KiCad STEP generator typing

* Use bundled KiCad footprints in tests

* Simplify interface template tests

* Ignore bundled KiCad library dependencies

* Bundle KiCad connector compatibility assets

* Resolve KiCad FPIDs to bundled stdlib footprints

* Normalize legacy KiCad library dependencies

* Bundle Governor KiCad compatibility assets

* Restore changelog entries
2026-06-17 11:56:42 -04:00
Akhil Velagapudi b2e725caf2 Update docs for hydrated dependency manifests (#862) 2026-06-02 10:07:38 -04:00
Akhil Velagapudi 6247ee421d Warn on legacy Component() inputs (#820)
* Warn on legacy Component() inputs

Emit a deprecated.component_property warning whenever Component() is
called with a legacy properties[...] key that has a typed kwarg
replacement (do_not_populate, Exclude_from_bom, type, mpn, manufacturer,
datasheet, description, and casing variants), or when mpn=/manufacturer=
are used instead of part=Part(...). Legacy values continue to be
honored; the warning just nudges users toward the endorsed forms.

Migrate examples, stdlib, and test fixtures off these legacy inputs
where the surrounding code is not specifically exercising the legacy
fallback path.

* Expose add_property as builtin.add_property and deprecate the global

Adds builtin.add_property as the endorsed entry point. The bare global
add_property still works for backwards compatibility but now emits a
deprecated.add_property warning. Stdlib callers are migrated to
builtin.add_property.

* Cleanup: warn on Description key, simpler add_property message, drop a stray mpn

* Warn on legacy module DNP property keys

Module(..., properties={...}) and add_property(...) / builtin.add_property(...)
now emit deprecated.module_property warnings when they use the legacy DNP key
spellings (do_not_populate, Do_not_populate, DNP, dnp). Pass dnp=True to
Module(...) instead. Legacy values still flow through to conversion.

* Consolidate module DNP deprecation helpers

Extract a shared warn_deprecated_module_property() to remove duplicated
diagnostic-emission boilerplate between the add_property and
properties-dict warning helpers.

* Address PR review: route sourcing keys to part=Part(...), trim changelog

- Remove mpn/Mpn/manufacturer/Manufacturer from LEGACY_COMPONENT_PROPERTY_KEYS
  so they share the same part=Part(...) suggestion as the kwarg path instead
  of producing a misleading two-hop deprecation (legacy -> deprecated kwarg).
- Collapse three verbose changelog entries into two short ones.

* Tighten changelog entries for legacy-properties deprecations
2026-05-18 18:14:26 -04:00
Akhil Velagapudi b3d193e07d Fix stdlib style warnings (#738)
* Fix stdlib style warnings

* Fix formatting, lints

* Update snapshot
2026-04-17 15:20:01 -04:00
Akhil Velagapudi 34f51cb157 ENG-249: io() template as first arg support (#726)
* Add template-first io() support

* Clean up io template enforcement

* Add io template follow-up coverage

* Clean up AD7171 io declarations

* Fix lints in blinky

* Preserve io declaration spans on generated nets

* Update changelog for io templates

* Delete design.md file

* Limit io implicit checks to template syntax

* Keep io implicit-check failures non-fatal

* Demote io implicit-check failures to warnings

* Preserve net identity for io alias defaults

* Preserve shared net clones in interface templates

* Skip io implicit checks for reused net templates

* Simplify io template handling

* Avoid wasted interface net clones
2026-04-16 18:03:10 -04:00
Akhil Velagapudi 813bae2377 Add redundant explicit-name style lint (#722)
* Add redundant explicit-name style lint

* Clean up redundant-name style lint follow-ups

* Format stdlib/

* Fixup PR comment

* Simplify style lint and restore net naming semantics

* Deduplicate repeated style advice
2026-04-14 19:04:36 -04:00
Akhil Velagapudi efe63682ff Implement ENG-248 net name inference (#704)
* Implement ENG-248 net name inference

* Clean up inferred net names in docs and examples
2026-04-11 18:09:32 -04:00
Akhil Velagapudi cc167be4cb Add Part to stdlib prelude and update all usage (#613) 2026-03-08 11:12:26 -04:00
Akhil Velagapudi 0a000c548e Add stdlib prelude (Power, Ground, NotConnected, Layout, Board) (#606)
Make Power, Ground, NotConnected, Layout, and Board implicitly available
in user .zen files without explicit load() statements. Remove
now-redundant imports across all .zen files, tests, examples, and docs.
2026-03-06 18:45:47 -05:00
Akhil Velagapudi 42f83f25f1 Add typed part metadata to Component (#600)
* feat(core): add typed Part and mutable alternatives

* test: cover Part netlist behavior in pcb-zen and pcb

* docs: fold Part spec into docs and update examples

* fix(core): preserve typed part over legacy part property

* feat(core): make part canonical over scalar sourcing fields

* refactor(core): simplify canonical part resolution

* refactor(core): simplify component sourcing flow and add unit tests

* builtin.part -> builtin.Part

* Use netlist snapshot tests for part api
2026-03-03 16:39:25 -05:00
Akhil Velagapudi 48b3b49a49 Drop support for v1 workspaces (#508)
* Drop v1 dependency resolution support

* Fix tests

* More cleanup

* Address PR comments
2026-02-06 03:44:58 +00:00
Akhil Velagapudi 8e9c355a3f Disallow dots in names (#150)
* Disallow dots in names

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

* Bump stdlib

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

* Simplify is_instance_position

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

* Update snapshot

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

---------

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-15 18:06:28 -04: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 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
Davide Asnaghi dbb13bd4aa pin stdlib (#63) 2025-08-08 16:23:01 -04: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