1487 Commits

Author SHA1 Message Date
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
Akhil Velagapudi f6be77059d Hide advice diagnostics from pcb publish (ENG-1255) (#1142)
* Hide advice diagnostics from pcb publish

Amp-Thread-ID: https://ampcode.com/threads/T-01a05fa1-40c4-71ac-8dbb-88677e669049
Co-authored-by: Amp <amp@ampcode.com>

* Simplify diagnostic rendering policy

Amp-Thread-ID: https://ampcode.com/threads/T-01a05fa1-40c4-71ac-8dbb-88677e669049
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-02 02:09:28 +00:00
Akhil Velagapudi a77b032e3b ENG-1254 Fetch tags before publish versioning
Fetch remote tags before calculating versioned board releases. Preserve local-only tags and local publish behavior on detached or untracked branches.
2026-09-01 21:26:54 -04:00
Akhil Velagapudi 6ecb7ea0ec Fix pcb doc package URL resolution (#1140)
Classify domain-based package references with the shared package URL parser so pcb doc resolves registry URLs returned by pcb search.
2026-09-01 20:33:42 -04:00
Akhil Velagapudi 89ef136128 Reject odd copper layer counts (#1138)
Amp-Thread-ID: https://ampcode.com/threads/T-01a05f0d-3a9c-772d-bcd9-24d7dcf14340

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 20:25:45 -04:00
Akhil Velagapudi c0801e6bcc Fix pcb layout check contract
Amp-Thread-ID: https://ampcode.com/threads/T-01a05f0d-72e4-702d-8d21-63f80d0b4e7c
Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 20:20:01 -04:00
Diode Robot 6c0dccdb0a Release v0.4.43 v0.4.43 2026-09-01 21:26:23 +00:00
Akhil Velagapudi 901fab536f Preserve exact IPC-2581 assembly geometry (#1137)
* Preserve exact assembly package geometry

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd
Co-authored-by: Amp <amp@ampcode.com>

* Simplify assembly geometry lowering

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd
Co-authored-by: Amp <amp@ampcode.com>

* Make assembly profile test line-ending neutral

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 17:24:18 -04:00
Akhil Velagapudi d8d4e5bc68 Add drilled feature board-edge DFM checks (#1133)
Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-0f05-741a-8b2e-0c6cae157190

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 17:00:42 -04:00
Akhil Velagapudi 58163b57e9 Add drilled-hole-to-copper DFM clearance checks (#1134)
* Add hole-to-copper DFM clearance check

Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-06a5-707a-a49e-96cca39acd4d
Co-authored-by: Amp <amp@ampcode.com>

* Respect DFM case applicability for drill spans

Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-06a5-707a-a49e-96cca39acd4d
Co-authored-by: Amp <amp@ampcode.com>

* Fix IPC baseline assertion after rebase

Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-06a5-707a-a49e-96cca39acd4d
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 16:42:57 -04:00
Akhil Velagapudi 8b1b5a003e Add external part identity to IPC-2581 BOM hydration (#1136)
* Add IPC-2581 external part identity

Amp-Thread-ID: https://ampcode.com/threads/T-01a05e78-f9a4-737e-b9ab-811802e4fe1d
Co-authored-by: Amp <amp@ampcode.com>

* Fix Clippy metadata comparison lint

Amp-Thread-ID: https://ampcode.com/threads/T-01a05e78-f9a4-737e-b9ab-811802e4fe1d
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 16:26:31 -04:00
Akhil Velagapudi a3793d39e4 Add plated-hole aspect-ratio DFM check (#1135)
* Add plated-hole aspect ratio DFM check

Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-17aa-7048-ac80-962b1306a2c6
Co-authored-by: Amp <amp@ampcode.com>

* Recognize explicit through-board drill spans

Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-17aa-7048-ac80-962b1306a2c6
Co-authored-by: Amp <amp@ampcode.com>

* Test structured aspect ratio case lowering

Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-17aa-7048-ac80-962b1306a2c6
Co-authored-by: Amp <amp@ampcode.com>

* Add separate aspect ratio changelog entry

Amp-Thread-ID: https://ampcode.com/threads/T-01a05bcc-17aa-7048-ac80-962b1306a2c6
Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 16:19:22 -04:00
Akhil Velagapudi 2b07e4d881 Structure PDK profile support and rule cases (#1132)
Amp-Thread-ID: https://ampcode.com/threads/T-01a05b89-01e4-75aa-b44f-047e346dbd96

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 15:38:10 -04:00
Lenny Khazan 2ad4f7b1e1 Align Clippy checks in CI and prek (#1130)
Run the same workspace-wide, all-target, all-feature Clippy command in CI and prek. Install prek in fresh orbs so agents can run the local checks.

Linear: ENG-1242
Amp-Thread-ID: https://ampcode.com/threads/T-01a05d4e-583f-754a-8c59-b5d981a71262

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 15:12:11 -04:00
Akhil Velagapudi 2314a2393f ENG-1199 Expose PCBA assembly report through CLI (#1131)
Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd

Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 15:07:29 -04:00
Akhil Velagapudi 05dca1c6e5 Speed up DFM width geometry checks 2026-09-01 14:44:30 -04:00
Akhil Velagapudi fb351f0bea ENG-1194 Add versioned PCBA assembly report contract (#1126)
* ENG-1194 Add versioned assembly report contract

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd

* Fix assembly report snapshot on Windows

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd

* Fix DFM rule lowering Clippy check

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd
2026-09-01 14:28:15 -04:00
Lenny Khazan 30f1b84845 feat(std): add schematic option to Board (#1128) 2026-09-01 10:11:14 -07:00
Akhil Velagapudi f4182081ce Fix DFM rule lowering Clippy failure 2026-09-01 11:19:49 -04:00
Akhil Velagapudi e79cd1e58c Fix false DFM widths from boundary backtracking 2026-09-01 11:19:49 -04:00
Akhil Velagapudi cee1e63b6a Add profile-based DFM PDKs
Amp-Thread-ID: https://ampcode.com/threads/T-01a05b89-01e4-75aa-b44f-047e346dbd96
Co-authored-by: Amp <amp@ampcode.com>
2026-09-01 07:03:07 +00:00
Akhil Velagapudi 9956369b0c ENG-1197 Derive exact physical terminations (#1125)
* ENG-1197 Derive exact physical terminations

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd

* ENG-1197 Link exact paste across sides

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd
2026-09-01 02:11:16 -04:00
Akhil Velagapudi 923ecc4fc0 ENG-1196 Add canonical assembly IR (#1124)
* ENG-1196 Add canonical assembly IR

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd

* Keep document placements available to ICT

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd
2026-08-31 22:07:59 -04:00
Diode Robot f92632ab0e Release v0.4.42 v0.4.42 2026-09-01 01:34:27 +00:00
Akhil Velagapudi edac50c78d ENG-1211 Move pcb auth login to device PKCE flow (#1121)
* Move auth login to device PKCE flow

Amp-Thread-ID: https://ampcode.com/threads/T-01a05919-2da5-7019-8326-b9b5ff3788ea

* Refresh device OAuth tokens directly

Amp-Thread-ID: https://ampcode.com/threads/T-01a05919-2da5-7019-8326-b9b5ff3788ea

* Process completed device authorization before expiry

Amp-Thread-ID: https://ampcode.com/threads/T-01a05919-2da5-7019-8326-b9b5ff3788ea
2026-08-31 20:52:15 -04:00
Akhil Velagapudi fdb7b5680a ENG-1178 Preserve IPC-2581 assembly source data (#1122)
* Preserve IPC-2581 assembly source data

Capture IPC-2581C BOM, package, pin, population, and dictionary facts in the parser and carry them into the source-faithful PCB IR import model.

ENG-1178

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd

* Use IPC-2581C line end values

Accept and emit the schema-defined NONE line end, reject the nonstandard FLAT spelling, and preserve NONE as a butt cap in PCB IR.

Amp-Thread-ID: https://ampcode.com/threads/T-01a055d1-d6f8-72c4-8ace-0dcead9681bd
2026-08-31 18:54:51 -04:00
Lenny Khazan 395acb7a66 Fix Clippy constant chunk warnings (#1120)
Amp-Thread-ID: https://ampcode.com/threads/T-01a058cc-ef9a-7298-beff-6a2d535463f3
2026-08-31 13:26:00 -04:00
Diode Robot 69edaa0eb7 Release v0.4.41 v0.4.41 2026-08-31 03:13:52 +00:00
Akhil Velagapudi e3aaa89237 Bump rust to 1.98 2026-08-30 23:07:33 -04:00
Akhil Velagapudi 64759d1f25 Update dependencies and adapt affected APIs (#1118) 2026-08-30 23:06:58 -04:00
Akhil Velagapudi fc78d19e7b ENG-1168 Keep schematic conversion diagnostics in LSP evaluation.
Compose eval and schematic conversion so conversion errors set success false, omit invalid schematic output, and return the diagnostics.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05503-5d96-7302-9904-dd086944b066
2026-08-31 02:54:36 +00:00
Akhil Velagapudi 6f29672259 Keep SPICE DC measurements across later ngspice analyses
Create vdrop_dc in the const plot before the first analysis so later AC and transient plots do not hide the DC result.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05503-b971-744a-92d7-4a79c32b168b
2026-08-31 01:23:23 +00:00
Akhil Velagapudi 1080952a4c ENG-1169 Isolate KiCad CLI temp directories for concurrent ODB exports.
Give each KiCad CLI invocation a private tempfile directory so concurrent
ODB exports do not collide on the shared kicad/odb scratch path.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05503-7916-7351-afdc-ba36899f89d8
2026-08-31 01:22:50 +00:00
Akhil Velagapudi 7e65cc0f48 ENG-1163 Fail pcb fmt on parse, read, and write errors.
Format files once and return a nonzero exit in write, diff, and check modes when a file fails. Keep --check as the only mode that fails for unformatted files.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05502-bd12-7499-b020-40fa1b823b19
2026-08-31 01:18:11 +00:00
Akhil Velagapudi 2d45f3ac37 Reply to unknown LSP requests with MethodNotFound.
JSON-RPC requests that no built-in or custom handler claims now get a
-32601 response with the original request id instead of leaving clients
waiting.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05502-d8c8-747a-be68-d7285f673304
2026-08-31 00:47:23 +00:00
Akhil Velagapudi 7999090e97 ENG-1167 Return JSON-compatible WASM evaluation results
Serialize evaluate() through JSON so Starlark arbitrary-precision numbers become JavaScript numbers and null instead of private Serde objects.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05503-3d95-763b-8b86-849b7aef9858
2026-08-31 00:43:53 +00:00
Akhil Velagapudi fd319475e8 Keep the language server running on malformed LSP parameters.
Decode request and notification params after method dispatch so invalid input returns InvalidParams or is logged instead of panicking.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05502-fcb5-767e-89dd-f29430dfc026
2026-08-31 00:43:19 +00:00
Akhil Velagapudi 14ebd87fd8 ENG-1166 Preserve 64-bit JSON configuration integers
Delete the custom JSON-to-Starlark converter that truncated integers to i32 and allocate with Starlark's heap.alloc instead.

Amp-Thread-ID: https://ampcode.com/threads/T-01a05503-2085-769a-86c0-7eebfe657db2
2026-08-30 23:50:45 +00:00
Diode Robot 9efe697ccd Sync skills from diode 9d92bd6 2026-08-30 18:50:40 +00:00
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
Akhil Velagapudi ef43af98c4 Add WASM support for IPC import, export, and DFM (#1117)
* Make IPC and IR tooling compatible with WASM

Separate native CLI dependencies from in-memory IPC import, export, and DFM code. Keep native parallel execution and run the same geometry algorithms sequentially on WASM.

* Add WASM APIs for IPC import, export, and DFM

Expose typed IpcDocument bindings and shared export helpers. Add package builds, JavaScript runtime tests, and TypeScript checks.
2026-08-30 13:33:48 -04:00
Akhil Velagapudi 8e2bbb1901 Add self-contained JSON DFM reports with native geometry (#1116)
* feat: add interactive DFM diagnostic viewer

Export check-owned sites, geometry, measurements, and layout provenance. Add a standalone viewer with grouped findings, full vector artwork, native evidence curves, and synchronized navigation.

* feat: export portable DFM report bundles

Replace the POC viewer with versioned data bundles for external consumers. Share JSON serialization, preserve checked inputs, and document the archive and diagnostic contracts.

* feat: make DFM reports self-contained JSON
2026-08-30 13:13:23 -04:00
Akhil Velagapudi 486277c786 Limit physical geometry queries to required layers
Amp-Thread-ID: https://ampcode.com/threads/T-01a04fe9-8393-704b-8b94-b0c729554aec
2026-08-29 23:31:13 -04:00