* 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.
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.
* 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
* 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.
* 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
* 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
* 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
* 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