1529 Commits

Author SHA1 Message Date
Diode Robot 3eee544ff0 Release v0.4.50 v0.4.50 2026-09-05 15:02:19 +00:00
Akhil Velagapudi c8254cb36e Support opaque service-account client IDs (#1177)
Amp-Thread-ID: https://ampcode.com/threads/T-01a06fc6-8f9f-70e8-b832-f27bd1213cab
2026-09-05 00:42:51 -04:00
Akhil Velagapudi df6fae8776 Migrate hooks to prek.toml and align tool commands (#1176)
Amp-Thread-ID: https://ampcode.com/threads/T-01a06f91-0cc1-75a6-893a-8d1970f55425
2026-09-04 23:31:53 -04:00
Akhil Velagapudi 48f897a4d3 Unify PCBIR boundary queries in prepared regions (#1170)
* Expose prepared signed-distance queries for PCBIR regions

* Use prepared regions for all boundary indexing

* Keep ring area stable under translation
2026-09-04 23:31:44 -04:00
Akhil Velagapudi be6c03481e docs: remove bringup and README convention pages
Amp-Thread-ID: https://ampcode.com/threads/T-01a06f70-15f1-72fd-9321-6cb7dfa45e18
2026-09-04 23:22:31 -04:00
Akhil Velagapudi 19b3182dfd docs: shorten MDX guides and remove repeated examples
Amp-Thread-ID: https://ampcode.com/threads/T-01a06f70-15f1-72fd-9321-6cb7dfa45e18
2026-09-04 23:22:31 -04:00
Akhil Velagapudi 81e6a7a1f7 docs: trim IPC and KiCad developer guides
Amp-Thread-ID: https://ampcode.com/threads/T-01a06f70-15f1-72fd-9321-6cb7dfa45e18
2026-09-04 23:22:31 -04:00
Akhil Velagapudi 5fb8631c8b docs: trim agent guidance and consolidate getting-started docs (#1174)
Amp-Thread-ID: https://ampcode.com/threads/T-01a06f6c-cbd8-76ba-9cf2-0a6ddebc0317
2026-09-04 23:12:44 -04:00
Akhil Velagapudi f83892f682 Remove redundant pricing and layout helpers (#1173)
Amp-Thread-ID: https://ampcode.com/threads/T-01a06f6d-7de5-7658-9186-6ee15dc5db1e
2026-09-04 23:01:39 -04:00
detail-app[bot] 5aff30e7c9 docs: add board-edge clearance to IPC profile check list in README 2026-09-04 22:46:36 -04:00
detail-app[bot] 6220a4855e docs: list netless pads as auxiliary conductors in DFM doc 2026-09-04 22:46:31 -04:00
detail-app[bot] f3487a8a4c docs: refresh DESIGN.md reconciliation entrypoint and invariant for netlist-derived property sync 2026-09-04 22:46:25 -04:00
detail-app[bot] 84c0de7811 docs: drop stale version label from assembly report link in pcb-ipc2581-tools README 2026-09-04 22:46:19 -04:00
detail-app[bot] 949e9f1ed3 docs: bump assembly report version header to v4 2026-09-04 22:46:13 -04:00
detail-app[bot] d979b6a25a chore: remove dead resolve_extends function 2026-09-04 22:46:07 -04:00
detail-app[bot] 27ca8f1b77 chore: remove unused primary_field_name KiCad metadata helper 2026-09-04 22:46:02 -04:00
detail-app[bot] c98fe39b3d chore: remove unused KicadSymbolsClient static helpers 2026-09-04 22:45:54 -04:00
detail-app[bot] 80492d5448 Fix rustfmt formatting in canonical_snapshot.rs 2026-09-04 22:45:48 -04:00
detail-app[bot] 2e9c6cea1b chore: remove compute_content_hash_from_memory_files 2026-09-04 22:45:48 -04:00
Lenny Khazan 1f866f8a0c fix(schematic): allow placement outside page bounds (#1172)
* fix(schematic): allow generated content outside page bounds

Amp-Thread-ID: https://ampcode.com/threads/T-01a06f05-5ff2-7311-9abe-2c799fa48d1d
Co-authored-by: Amp <amp@ampcode.com>

* fix(schematic): satisfy collapsible-if lint

Amp-Thread-ID: https://ampcode.com/threads/T-01a06f05-5ff2-7311-9abe-2c799fa48d1d
Co-authored-by: Amp <amp@ampcode.com>

* fix(schematic): reserve opaque text and graphics during placement

Amp-Thread-ID: https://ampcode.com/threads/T-01a06f05-5ff2-7311-9abe-2c799fa48d1d
Co-authored-by: Amp <amp@ampcode.com>

* fix(schematic): bound only the swept portion of page arcs

Amp-Thread-ID: https://ampcode.com/threads/T-01a06f05-5ff2-7311-9abe-2c799fa48d1d
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-04 21:27:45 -04:00
Diode Robot de369e1a6a Release v0.4.49 v0.4.49 2026-09-04 21:38:41 +00:00
Akhil Velagapudi 566301326d Add PCB service-account authentication (#1164)
* Add PCB service-account authentication

* Keep service-account imports on the active endpoint
2026-09-04 17:36:34 -04:00
Akhil Velagapudi e22a697f4e Simplify bundled DFM PDKs 2026-09-04 15:22:18 -04:00
Diode Robot 9d983fb215 Sync skills from diode e6f477a 2026-09-04 04:13:20 +00:00
Akhil Velagapudi bc9db5ce60 Simplify BOM match caching 2026-09-03 23:17:53 -04:00
Diode Robot 277d669873 Release v0.4.48 v0.4.48 2026-09-04 02:28:00 +00:00
Akhil Velagapudi f78e954848 Open DFM reports in web viewer 2026-09-03 22:17:47 -04:00
Diode Robot dbf932bdb6 Sync skills from diode 7fa9ce6 2026-09-04 01:32:19 +00:00
Akhil Velagapudi 7f9c5ac110 Update supported LED colors 2026-09-03 21:21:57 -04:00
Akhil Velagapudi 6407a2f2b5 Fix LCSC IDs for case-insensitive distributor names (#1160)
Match LCSC distributor names without case sensitivity so valid part IDs appear with global availability.
2026-09-03 21:13:01 -04:00
Akhil Velagapudi 1f0287d6bc Warn on standard soldermask webs (#1158) 2026-09-03 20:02:53 -04:00
Lenny Khazan b6939fc4b4 Fix reconciliation of netlist-derived symbol properties (#1157)
* fix: reconcile netlist-derived symbol properties

Amp-Thread-ID: https://ampcode.com/threads/T-01a06596-a44a-768f-b51b-bbdc2e380fea
Co-authored-by: Amp <amp@ampcode.com>

* feat: expose netlist-derived property sync

Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a06596-a44a-768f-b51b-bbdc2e380fea

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-03 16:26:52 -04:00
Diode Robot 8f85f7e61f Release v0.4.47 v0.4.47 2026-09-03 19:23:29 +00:00
detail-app[bot] e469813652 chore: remove unused bare auth CLI command wrappers (#1152)
Co-authored-by: detail-app[bot] <180357370+detail-app[bot]@users.noreply.github.com>
2026-09-03 15:20:01 -04:00
Akhil Velagapudi 882b27ec43 Preserve authored release BOM intent (#1156)
Amp-Thread-ID: https://ampcode.com/threads/T-01a0686b-e9d3-729e-8bc6-09681ec30d96
2026-09-03 15:18:50 -04:00
Akhil Velagapudi 9b9e576d2c Speed up IPC DFM geometry checks (#1149)
IPC DFM spent most of its time eroding and dilating whole copper and mask layers, then scanning every polygon edge through hashed grid cells. Morphology now runs only on material within reach of two facing walls, boundary queries use a flat sparse grid, and copper clearance measures only edges near the partner, which makes the exhaustive standard-PDK pass about five times faster; witness coordinates can shift at the sub-nanometer level, so a few content-hash finding ids differ.
2026-09-03 13:39:03 -04:00
Lenny Khazan ba03b9f9d5 fix(schematic): ignore nested NotConnected ports (ENG-1300) (#1150) 2026-09-03 09:07:35 -04:00
Akhil Velagapudi c3a1dade6c Fix DFM checks for netless pads (#1148)
Amp-Thread-ID: https://ampcode.com/threads/T-01a064ce-c058-7578-a091-cb721a68d6ac
2026-09-02 22:45:29 -04:00
Akhil Velagapudi c9bb8fab9a Allow tighter plated slots (#1147) 2026-09-02 21:16:33 -04:00
Diode Robot f7724a4f8f Release v0.4.46 v0.4.46 2026-09-02 21:50:07 +00:00
Akhil Velagapudi 1855367307 Speed up IPC-2581 assembly analysis (#1146)
* Speed up IPC assembly analysis

Amp-Thread-ID: https://ampcode.com/threads/T-01a0639e-0bf0-71e7-9a17-a9b41f1d718e
Co-authored-by: Amp <amp@ampcode.com>

* Fix physical land index lint

Amp-Thread-ID: https://ampcode.com/threads/T-01a0639e-0bf0-71e7-9a17-a9b41f1d718e
Co-authored-by: Amp <amp@ampcode.com>

* Index mask lands by board context

Amp-Thread-ID: https://ampcode.com/threads/T-01a0639e-0bf0-71e7-9a17-a9b41f1d718e
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-02 17:47:48 -04:00
Akhil Velagapudi 69a86fa531 Fix IPC-2581 assembly hole reporting (#1145) 2026-09-02 15:46:23 -04:00
Diode Robot 05e8e0f167 Release v0.4.45 v0.4.45 2026-09-02 18:52:28 +00:00
Lenny Khazan 36db6ff4cc ENG-1191 Improve schematic placement and minimal connectivity repair (#1119)
* Improve default schematic placement

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Limit inferred rotation to two-pin symbols

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Align schematic grids by symbol anchors

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Group unused schematic interface labels

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Place generated schematic batches on aligned shelves

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Grow fresh schematic pages to fit placement

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Fix rotated schematic field justification

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Match KiCad field rotation direction

Amp-Thread-ID: https://ampcode.com/threads/T-01a04c5e-b251-76ec-bcb7-fc965c59f1cd

* Fix net-symbol staircases across pin banks

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* docs: simplify schematic placement changelog

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* Fix schematic placement edge cases

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* Expose symbol field autoplacement

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* test(kicad-sch): consolidate placement coverage

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* fix(kicad-sch): match KiCad field autoplacement

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* feat(kicad-sch): plan selected net drivers

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* fix(kicad-sch): separate opposing net symbol stairs

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* refactor: simplify schematic placement internals

Amp-Thread-ID: https://ampcode.com/threads/T-01a054b7-0376-71e9-9ceb-dd5d495bfbf1

* refactor(schematic): remove editor-specific driver planning

* fix(schematic): stabilize initial placement

* feat(schematic): plan minimal short recovery cuts

* fix(schematic): complete multi-net short teardown

* fix(schematic): localize unexpected connection cuts

* feat(schematic): plan repairs as verified intents with minimum cuts

Make the repair intent the full semantic contract between PCB and an
interactive realizer. The planner now accepts forced removals (a
consumer's explicit rip-up set) and derives the nets they break, records
the issues it resolves, names the driver kind each reconnected net needs
on each page, and includes the junctions its removals orphan. A public
verify_repair judges any realization by one postcondition: selected
issues gone, no new issues, nothing outside the intent changed.
apply_edits applies removals and relocations without new geometry.

Shorts and unexpected connections are cut with a minimum node cut over
the physical adjacency graph, verified through the reducer, replacing
the bounded exact search that fell back to whole-island teardown past
sixteen candidates. Duplicate and overlapping wires no longer defeat it.

Net-symbol re-drive checks its stub against geometry outside the net and
steps along the stair before falling back to a local label, so a repair
can no longer reintroduce a short through its own driver.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(schematic): let a realizer keep an item the intent would remove

Orphaned-junction removal is cleanup, not semantics. A realizer that
reroutes through the same point re-establishes the tee, and with a stable
junction id that read to the verifier as keeping an item the intent
removes. Verification now only rejects such an item if it changed; the
issue checks already judge whether the removal mattered.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* refactor(schematic): simplify the repair intent boundary

Drop the standalone removal applier and the intermediate net-symbol driver
type, derive driver kinds once in the public planner, share item matching
and segment tests between the planner and composer, and trim redundant
repair-planning tests.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(changelog): summarize schematic placement and repair work

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(kicad-sch): address review findings on fit, drivers, and repair verification

- Judge generated-batch fit against the page's real occupancy (title
  block, hierarchy sheets, preserved items) and place with that same
  packer, so a batch that fits never lands on preserved work and a fresh
  page grows instead of overlapping.
- Number upright side net-symbol stairs across pin banks so two banks
  cannot stack distinct power nets on one body-corner point.
- When no stair is free, fall back to a label in the power symbol's own
  scope (global for global power symbols), and count the drivers already
  added for a net as its own geometry rather than as collisions.
- Join a net's interface-only hierarchical labels with a wire so several
  interface names form one island.
- Plan a hierarchical driver on pages that expose a net only through
  their module interface.
- Verify repairs against the whole document: no added, removed, or
  reordered pages, unchanged page metadata, preserved library
  definitions and uninterpreted items, and relocated symbols that differ
  only by their offset.
- Count sheet pins as junction contacts when pruning orphaned junctions.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(kicad-sch): rank viable grid shapes, guard forced removals, align driver kinds

- Rank only the component-grid shapes that fit around the page's preserved
  items, so a batch that fits in another column count no longer aborts an
  incremental apply and a fresh page no longer grows when another shape
  fits the current paper.
- Reject a forced removal of any symbol that is not a name driver in the
  inspected connectivity; deleting a component symbol would produce an
  intent no verification can accept.
- Plan a global driver for an island cut off from its net on another page,
  the rule PCB's own realizer applies, so a consumer following the intent
  lands on the same label kind.
- Count only the current page's pins as safe geometry when checking a net
  symbol stub for collisions; a matching coordinate on another page is
  foreign here.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(kicad-sch): make symbol definitions order-stable so apply converges

A derived (`extends`) library symbol was flattened through a HashMap, so
its child order -- and with it the position of `(embedded_fonts no)` --
changed on every `pcb build`. `pcb apply schematic` then rewrote the
`lib_symbols` definition on every run and never reported `schematic
unchanged`.

- pcb-eda: keep a derived symbol's own items in source order while
  merging them over the parent, instead of iterating a HashMap.
- pcb-kicad-sch: canonicalize every symbol definition to KiCad's own
  order (header attributes, properties sorted by name, unit sub-symbols,
  `embedded_fonts`) so a definition compares and serializes the same
  however its source ordered the children.

Verified on a 31-page migrated legacy schematic: the second and third
`pcb apply schematic` now report `schematic unchanged` with no file
changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(changelog): summarize schematic placement and repair work

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 14:49:47 -04:00
Diode Robot f1f5b9227b Release v0.4.44 v0.4.44 2026-09-02 17:43:04 +00:00
Akhil Velagapudi 892852450b Address assembly via review findings
Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a05fed-a624-770b-928a-d521d02b77b4
2026-09-02 11:31:53 -04:00
Akhil Velagapudi e7c2011707 Make hole reorder test line-ending agnostic
Amp-Thread-ID: https://ampcode.com/threads/T-01a05fed-a624-770b-928a-d521d02b77b4
Co-authored-by: Amp <amp@ampcode.com>
2026-09-02 11:31:53 -04:00
Akhil Velagapudi 0d10c59987 Expose via protection evidence in assembly reports
Amp-Thread-ID: https://ampcode.com/threads/T-01a05fed-a624-770b-928a-d521d02b77b4
Co-authored-by: Amp <amp@ampcode.com>
2026-09-02 11:31:53 -04:00
Lucia Camacho dbbbfb9baf Make stdlib QR generic a white square (#1123) 2026-09-02 10:54:07 -04:00
Diode Robot 1337738e5c Sync skills from diode 1b6b476 2026-09-02 03:46:11 +00:00