408 Commits

Author SHA1 Message Date
Lenny Khazan 9ca4474a81 Handle closed CLI output pipes (#1112)
* fix: handle closed CLI output pipes

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c02-604b-776e-8969-5bf3bac7ea8e

* docs: document CLI output handling

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c02-604b-776e-8969-5bf3bac7ea8e

* docs: simplify CLI output guidance

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c02-604b-776e-8969-5bf3bac7ea8e
2026-08-30 18:40:56 +00:00
Lenny Khazan 001d10ba71 Revert "fix: handle closed CLI output pipes"
This reverts commit 5b426383ea.
2026-08-29 06:18:58 +00:00
Lenny Khazan 5b426383ea fix: handle closed CLI output pipes
Amp-Thread-ID: https://ampcode.com/threads/T-01a04c02-604b-776e-8969-5bf3bac7ea8e
2026-08-29 06:15:13 +00:00
Diode Robot d05fcf9aee Release pcb/v0.2.7 2026-08-27 05:21:01 +00:00
Lenny Khazan e22abe0b7f fix(launcher): improve error recovery (#1101)
* fix(launcher): improve error recovery

* feat(pcb): show launcher installation status
2026-08-27 01:19:25 -04:00
Lenny Khazan 6efd247cae feat(pcb): add native KiCad URL launcher (#983)
* feat(pcb): add native KiCad URL launcher

* fix(pcb): harden launcher recovery choices

* fix(pcb): prevent concurrent recovery sessions

* fix(pcb): guard restored editor sessions

* refactor(pcb): extract shared pcb-diode-uri and pcb-native-dialog crates

pcb-launcher's URI validation re-implemented pcb-diode-api's SandboxFileUri
parsing; move that parser into a tiny pcb-diode-uri crate both can use, and
give the trusted-host allowlist a single home there. Likewise collapse the
duplicated osascript/zenity/kdialog/PowerShell dialog machinery from
pcb-launcher and pcbc's recovery dialog into a pcb-native-dialog crate.
Also drop the launcher's redundant staged-app cleanup (the Drop guard
covers it), the duplicate log chmod, the Debug-formatted log header, and
a clippy for_kv_map lint in the interposer pattern test.

* fix(pcb): block recovery while a recoverable session's editor is open

A recoverable stop now deliberately leaves KiCad running, so the
still-open-editor guard must cover Recoverable sessions too — otherwise
Restore reuses the same local layout dir while the first KiCad instance
still has it open. Also match the tracked pid's process name (open /
pcbnew / kicad) instead of bare liveness, so a recycled pid cannot
permanently wedge the board.

* refactor(pcb): simplify launcher install and open plumbing

Split install_shim_launcher into fetch / stage / replace helpers so the
Windows backup-rename dance is a reusable replace_executable_with_backup,
fold pcb-kicad's duplicated per-OS pcbnew command construction into one
builder, share a single Download-style helper in install.ps1 the way
install.sh already does, dedupe the recovery-cancel wind-down, and fix
the README's launcher wording.

* refactor(pcb): re-export diode URI types without a module alias

Nothing consumed the pcb_diode_api::diode_uri path; re-export the types
directly from pcb-diode-uri instead of aliasing the whole crate.

* refactor(pcb): trust *.diode.computer in release, all hosts in debug

Replaces the enumerated host allowlist: release launchers accept any
*.diode.computer subdomain (portless, so preview and gov endpoints work
without listing them), while debug builds trust every host so local API
stacks need no special-casing.
2026-08-26 10:46:19 -04:00
Diode Robot 4a9d3e582d Release pcb/v0.2.6 2026-08-04 01:31:41 +00:00
Akhil Velagapudi 714467fb60 Explain auth toolchain fallback 2026-08-03 19:11:11 -04:00
Akhil Velagapudi 503824635e Simplify auth toolchain policy coverage 2026-08-03 19:11:11 -04:00
Akhil Velagapudi 00297ed0f6 Run auth outside workspace toolchain pins 2026-08-03 19:11:11 -04:00
Akhil Velagapudi c469df66e5 Migrate CI to Blacksmith ARM macOS runners (#964)
Drop Intel macOS artifacts and client support, migrate eligible CI jobs to Blacksmith runners, standardize CI on KiCad 10.0.5, and retain GitHub-hosted npm publishing for trusted publishing/OIDC.
2026-07-28 19:04:06 -04:00
Diode Robot ba0c6cac52 Release pcb/v0.2.5 2026-07-23 15:28:46 +00:00
Akhil Velagapudi 1cff293f2f Improve PCB toolchain management (#944)
* Improve PCB toolchain management

* Fix local toolchain management

* Report managed latest toolchains accurately

* Use Clap for shim commands
2026-07-23 10:42:38 -04:00
Diode Robot 401dd8c83b Release pcb/v0.2.4 2026-06-29 22:46:30 +00:00
Lucia Camacho 0feefb1bab feat: add pcb rectify (#903) 2026-06-26 18:31:36 +00:00
Diode Robot 1062b10427 Release pcb/v0.2.3 2026-06-22 17:35:22 +00:00
Akhil Velagapudi 0e8f32d66a Re-exec shim after self update (#895) 2026-06-22 13:33:35 -04:00
Akhil Velagapudi b042a978f7 Publish Linux release artifacts as musl (#893) 2026-06-22 10:59:41 -04:00
Akhil Velagapudi 62a14cf057 Drop unused image codecs, gltf, svg exports (#890)
* Prune CLI dependency footprint

* Drop GLB post-processing dependency

* Stop exporting preview release artifacts

* Fix publish artifact exclusions in WASM workflow
2026-06-18 23:45:09 -04:00
Diode Robot 6480644654 Release pcb/v0.2.2 2026-06-17 15:05:13 +00:00
Akhil Velagapudi d3257c6ab5 Don't embed lib/std in pcbc (#885)
* Externalize stdlib artifact handling

* Test local installer in pcbc workflows

* Simplify local pcbc workflow install

* Use pcb shim for local workflow tests

* Trim stdlib discovery tests

* Keep workspace stdlib path stable

* Fix stdlib artifacts in CI workflows

* Run build perf through local pcb shim

* Compare build perf against nightly

* Find stdlib from cargo test binaries

* Cache nightly release metadata

* Benchmark build perf against merge base
2026-06-16 17:03:29 -04:00
Akhil Velagapudi f1d97acce9 Install stdlib with managed pcbc toolchains (#875)
* Install stdlib with managed pcbc toolchains

* Install stdlib as optional companion artifact

* Require stdlib archive and move it into the per-target dir

Place lib/std inside toolchains/<version>/<target>/ so the original
single-dir stage-and-rename already covers binary, receipt, and stdlib
atomically, removing the whole-root staging/swap machinery. Treat a
missing stdlib.tar.zst as an install error now that releases (and the
backfilled v0.3.92) always publish it, and upload the stdlib first in
the release workflow so a version is never discoverable without it.
2026-06-10 14:40:02 -04:00
Akhil Velagapudi f0464212e0 Bump version to 0.4, add pcb migrate version bump (#873)
* chore: bump version to 0.4.0

* Add latest-toolchain workspace migration flow

* Handle global flags before migrate dispatch

* Address migrate review feedback

* Delete pcb.sum

* Bump workspace fixtures to pcb 0.4
2026-06-10 10:21:13 -04:00
Akhil Velagapudi adfdc228d8 pcb 0.4 breaking changes (#870)
* Migrate stdlib to KiCad 10 symbols + footprints (#701)

* Bump stdlib KiCad asset pin to 10.0.0

* Update crystal generic for KiCad 10 pin names

* Update snapshots

* Delete deprecated stdlib (#703)

* Delete deprecated stdlib files

* Fix tests

* Remove deprecated generic stdlib modules

* Remove deprecated standoff and terminal block generics

* Remove deprecated stdlib helpers and API shims

* Remove physical value range deprecation hook

* Drop legacy stdlib load path

* Remove V1 manifest migration support

* Remove legacy net moved directives

* Remove legacy manifest assets support

* Bump KiCad 10 assets to 10.0.3

* Error on legacy Component properties

* Remove legacy module property API

* Drop old toolchain compatibility shims

* Strict 0.4 net naming (#849)

* Enforce strict regular net naming

* Treat NotConnected nets as source-unnamed

* Update unreleased changelog for 0.4 changes

* Clean up 0.4 docs

* fix: pcb fmt

* Fix CI for KiCad 10 symbols and examples

* Fix symbol library fallback and NetTie defaults

* Use versioned KiCad parts index URL

* Include stdlib assets in frozen dependency materialization

* fix: bump W25Q128JVE dep

* Bundle KiCad split symbols granularly

* Remove flash module from workspace test board

* Update publish snapshots

* chore: bump @stdlib dependencies

* Fix Crystal compatibility for KiCad 9 symbols
2026-06-09 17:22:27 -04:00
Akhil Velagapudi 419f186db6 Show shim version in pcb toolchain show (#840)
* Show shim version in `pcb toolchain show`

* Allow pcb self update from any install

* Bump pcb to 0.2.1

* Quiet pcb self update output

* Show pcb version before toolchain resolution
2026-05-21 15:52:54 -04:00
Akhil Velagapudi 92c132c706 Add zstd, better install message (#839)
* Remove shim version from installer output

* Stop publishing pcb shim GitHub releases

* Trim pcb shim binary size

* Use native TLS for pcb shim downloads

* Publish zstd release artifacts

* Use zstd artifacts for toolchain downloads

* Bump pcb shim to 0.2.0

* Format pcbc release titles with date
2026-05-21 14:41:36 -04:00
Akhil Velagapudi 6c89730afb Checkout release tag before creating GitHub releases (#835)
* Checkout tag before creating releases

* Fix CI to test checked-out pcbc

* Update build perf benchmark repos

* Fix build perf missing board rows

* Show pcbc changelogs during self update

* Fix e2e pcbc log filters
2026-05-21 11:09:59 -04:00
Akhil Velagapudi fbb9e8cf43 Fix release smoke issues (#834) 2026-05-20 22:13:50 -04:00
Akhil Velagapudi 800f978acb Split pcb shim and pcbc toolchain releases (#832)
* Add pcbc toolchain release artifact

* Implement pcb toolchain shim MVP

* Harden pcb toolchain shim

* Split pcb shim and pcbc compiler crates

* Simplify split toolchain shim

* Finish toolchain release plan

* Simplify pcb shim release checks

* Decouple shim and toolchain releases

* Add nightly pcbc channel

* Address pcb shim review feedback

* Run pcbc integration tests through pcbc

* Forward pcb help to compiler

* Fix pcb shim clippy warning

* Check out release tag in manual workflows

* Fix release refs and nightly refresh

* Keep shim bumps out of changelog

* Add simple pcb shim installers

* Forward pcb version and tolerate missing shim metadata

* Add release workflow dry runs

* Clean up split test snapshot metadata

* Show pcb help name on Windows shim

* Avoid repeated self update release fetches
2026-05-20 21:31:38 -04:00
Lenny Khazan 6e9c8c7d17 feat: support remote sandbox syncing (#829)
* feat: support remote sandbox syncing

* use api endpoint from diode uri
2026-05-20 13:44:58 -04:00
Lenny Khazan bd6f1b12d8 cleanup: remove api feature (#831) 2026-05-20 15:10:32 +00:00
Akhil Velagapudi 6b5c3d6142 update: use cdn metadata for self update (#828) 2026-05-19 16:38:53 -04:00
Akhil Velagapudi e8253c2f84 Fix noisy auto-dep URL warnings (#824) 2026-05-18 20:06:39 -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
Lenny Khazan 490694894f feat: pcb layout json mode (#822) 2026-05-18 16:52:00 -04:00
Akhil Velagapudi f3cc661a78 Support generic package URLs (#821) 2026-05-18 16:40:23 -04:00
Akhil Velagapudi 97c1cfd464 Include diagnostic kind in JSON reports (#819) 2026-05-18 16:40:04 -04:00
Akhil Velagapudi a7fa5b7717 Commonize PCB IR rendering and IPC/Gerber lowering (#816)
* Add common IR dialects

* Complete common IR render migration

* Finish common IR migration

* Harden common IR lowering paths

* Use common path commands in source IRs

* Bump IR crate versions

* Address IR PR review comments

* Address IPC render review comments

* Handle arc edge cases in common IR

* Render IPC board outlines as profile overlay

* Simplify IR render and export helpers
2026-05-18 15:37:31 -04:00
Akhil Velagapudi 26ebd5d851 Add pcb build --diagnostics (#818)
* Remove build board-config output

* Add build diagnostics JSON output
2026-05-18 14:56:24 -04:00
Akhil Velagapudi d5e4a453ad Unify Gerber and IPC geometry IR (#814)
* Unify Gerber and IPC geometry IR

* Fix IPC to Gerber IR edge cases
2026-05-15 16:17:56 -04:00
Akhil Velagapudi 00ae1505a0 Add --flat render option to ipc2581, ipc2581 -> gerber x2 conversion, gerber rendering (#811)
* Render IPC drill layers directly

* Improve IPC SVG render stacking

* Add Gerber X2 parser scaffold

* Build Gerber X2 object stream

* Expand Gerber X2 macro and repeat parsing

* Add Gerber X2 geometry processing

* Add Gerber X2 renderers

* Wire Gerber rendering into pcb CLI

* Shorten Gerber changelog entry

* Add Gerber X2 writer IR and geometry comparison

* Add flat IPC-2581 layer rendering

* Align flat render layer styling

* Fix Gerber X2 geometry transform handling

* Update pcb help snapshot for gerber command

* Scrub local paths from gerberx2 README

* Use IPC layer functions for flat render colors

* Normalize Gerber aperture units

* Add IPC-2581 Gerber X2 export

* Improve IPC Gerber export metadata
2026-05-15 12:53:55 -04:00
Lenny Khazan 140f44933e fix: smarter workplace name detection with pcb.toml fallback (#813)
* fix: smarter workspace name detection with pcb.toml fallback

* fix clippy
2026-05-14 15:45:00 -04:00
Akhil Velagapudi cf9b00bbe6 Limit board name length (#809) 2026-05-13 19:30:39 -04:00
Akhil Velagapudi 5ef3decbf2 Export .dxf of board outline from IPC2581 xml file (#808)
* Render IPC-2581 board outlines

* Export IPC-2581 board outline as DXF

* Consolidate IPC-2581 changelog entries

* Fix IPC-2581 render bounds

* Handle panel IPC-2581 outline export
2026-05-13 18:27:31 -04:00
Akhil Velagapudi 1a2e5def64 Add IPC-2581 layer rendering to pcb ipc2581 render (#801)
* Add IPC-2581 layer rendering

* Add compound IPC-2581 geometry contours

* Fix IPC-2581 thermal spoke transforms

* Fix IPC-2581 clippy warnings

* Add IPC-2581 geometry processing passes

* Respect IPC-2581 chamfered rectangle corners

* Outline IPC-2581 stroked geometry paths

* Align IPC-2581 rectangle corner flags

* Union IPC-2581 trace geometry per feature

* Apply IPC-2581 slot cavities by layer span

* Hide subtracted IPC-2581 cutout features

* Subtract IPC-2581 cutouts after trace union

* Render IPC-2581 cutouts as overlays

* Detect wrapped IPC-2581 slot cavity Z dimensions

* Simplify IPC-2581 geometry processing helpers

* Fix IPC-2581 drill spans and fill-rule subtraction

* Coalesce IPC-2581 trace geometry

* Resolve IPC-2581 polarity and primitive geometry

* Fix IPC-2581 thermal primitive lowering

* Honor IPC-2581 primitive fill styles
2026-05-13 00:15:33 -04:00
Akhil Velagapudi 68875cf331 Remove pcb new workspace (#803)
* Simplify pcb new board scaffolding

* Update import for board repos

* Clean up board repo scaffolding

* Preserve board repo metadata during forced import

* Update import board repo wording
2026-05-12 21:03:09 -04:00
Akhil Velagapudi 070ea41c3c Avoid re-execing pcb for self-update changelog (#800) 2026-05-11 18:31:41 -04:00
Akhil Velagapudi ffdb5c96d0 Simplify pcb doc (#798)
* Remove embedded pcb doc pages

* Simplify pcb doc changelog handling
2026-05-11 18:04:23 -04:00
Akhil Velagapudi 1383341af6 Tolerate missing release variables during publish (#797) 2026-05-11 17:49:01 -04:00
Lenny Khazan 9fabf73ad2 fix: more robust workspace detection for publish (#790)
* fix: more robust workspace detection for publish

* update changelog
2026-05-11 00:26:16 +00:00