Akhil Velagapudi
e5631d11ce
feat: add pcb step export (ENG-1711) ( #1275 )
...
Move kicad-step into the workspace as pcb-step and add pcb step export,
which writes the STEP assembly for a board without kicad-cli: body with
drills, footprint models from embedded STEP files, silkscreen and mask.
2026-09-13 02:08:25 -04:00
Lenny Khazan
715d68a50f
ENG-248 Avoid redundant net names in imported boards ( #1279 )
2026-09-12 14:00:57 -04:00
Lenny Khazan
c91383479e
ENG-1674 Repair intentional no-connect markers ( #1274 )
...
* Repair intentional no-connect markers
Co-authored-by: Amp <amp@ampcode.com >
Amp-Thread-ID: https://ampcode.com/threads/T-01a092b5-1c76-7279-8032-46086d7ca820
* Detect overlapping no-connect pins
Amp-Thread-ID: https://ampcode.com/threads/T-01a092b5-1c76-7279-8032-46086d7ca820
Co-authored-by: Amp <amp@ampcode.com >
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-09-11 21:22:30 -04:00
Lenny Khazan
276e7a0d45
Fix rotated mirrored schematic pin geometry ( #1273 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a092b5-31ef-745f-9e5d-22e83f0892ed
Co-authored-by: Amp <amp@ampcode.com >
2026-09-11 19:45:37 -04:00
Lenny Khazan
db281f8f2e
Fix false schematic apply open failure ( #1272 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a092b5-38bf-756e-a0c7-7229ff3c0b17
Co-authored-by: Amp <amp@ampcode.com >
2026-09-11 19:32:43 -04:00
Akhil Velagapudi
c3a23c175d
Route mouse-bite panels from board-array create ( #1271 )
...
* Space mouse-bite holes by chord and limit tabs by curve radius
Drill centers now sit one pitch apart in a straight line along the offset outline, so the web between holes is a true drill-to-drill distance on curves as on straight edges, and a tab whose web falls below the pattern's ligament is rejected. Placement derives its bend limits from one minimum tab radius and reports outline stretches too tight for a tab.
* Emit mouse-bite panels from board-array create
Route a slot around every board instance and bridge it with perforated tabs at the placed sites, using the single-tab builder for each tab. The array profile carries the routed voids as cutouts, the perforations go to the drill layer, V-scores are skipped, and cells grow by the slot so rails and tooling keep their distances. The retained panel is checked whole: every board held before the break rows are cut and free after.
* Open routed slots around tab necks and land tabs on the frame piece beneath them
* Grow mouse-bite cells by 1 mm instead of the whole routing gap
* Trim the mouse-bite tab result and describe chord-spaced rows
* Route a 1.4 mm slot inside the board margin so mouse-bite arrays fit like scored ones
2026-09-11 17:49:39 -04:00
Akhil Velagapudi
6c8e06f82d
Add mouse-bite tab placement analysis ( #1269 )
...
Add `--mouse-bite-placement` to `board-array create`, which chooses the fewest tab sites that keep a board within a deflection limit under a process load and reports them as JSON. Also ignore footprints without courtyards in mouse-bite eligibility and reject unusable ones.
2026-09-11 01:43:14 -04:00
Lenny Khazan
f9c98abeb7
feat: prefer Board(path) with layout_path compatibility ( #1267 )
...
* feat: use project path in Board with layout_path compatibility
Amp-Thread-ID: https://ampcode.com/threads/T-01a08986-f282-7225-8fba-ba0448e07284
Co-authored-by: Amp <amp@ampcode.com >
* fix: preserve board template compatibility and reject empty paths
Amp-Thread-ID: https://ampcode.com/threads/T-01a08986-f282-7225-8fba-ba0448e07284
Co-authored-by: Amp <amp@ampcode.com >
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-09-10 13:35:58 -04:00
Lenny Khazan
2d57c80bf0
feat(publish): add structured release preflight checks ( #1264 )
...
* feat(publish): add structured release preflight checks
Amp-Thread-ID: https://ampcode.com/threads/T-01a08395-8e11-75c8-b1ce-51467340320b
Co-authored-by: Amp <amp@ampcode.com >
* test(publish): focus check coverage on release behavior
Amp-Thread-ID: https://ampcode.com/threads/T-01a08395-8e11-75c8-b1ce-51467340320b
Co-authored-by: Amp <amp@ampcode.com >
* refactor(publish): use native diagnostics for preflight results
Amp-Thread-ID: https://ampcode.com/threads/T-01a08395-8e11-75c8-b1ce-51467340320b
Co-authored-by: Amp <amp@ampcode.com >
* test(publish): remove redundant preflight coverage
Amp-Thread-ID: https://ampcode.com/threads/T-01a08395-8e11-75c8-b1ce-51467340320b
Co-authored-by: Amp <amp@ampcode.com >
* fix(publish): avoid success marks on diagnostic stages
Amp-Thread-ID: https://ampcode.com/threads/T-01a08395-8e11-75c8-b1ce-51467340320b
Co-authored-by: Amp <amp@ampcode.com >
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-09-09 16:30:47 -04:00
Akhil Velagapudi
9faae1a766
Add analysis-only mouse-bite outline eligibility reports ( #1261 )
...
* Add analysis-only mouse-bite outline eligibility to board-array create
Amp-Thread-ID: https://ampcode.com/threads/T-01a08437-61ee-713f-bc74-dc7c2f10cb5c
* Shorten mouse-bite eligibility changelog entry
Amp-Thread-ID: https://ampcode.com/threads/T-01a08437-61ee-713f-bc74-dc7c2f10cb5c
* Reject incomplete courtyard references and ambiguous board selection
Amp-Thread-ID: https://ampcode.com/threads/T-01a08437-61ee-713f-bc74-dc7c2f10cb5c
2026-09-09 02:24:30 -04:00
Lenny Khazan
f65f69bfde
fix(sim): handle bare source filenames (ENG-1527) ( #1259 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a083f2-fc7b-777c-b99a-39019f4c42a4
Co-authored-by: Amp <amp@ampcode.com >
2026-09-08 23:01:56 -04:00
Akhil Velagapudi
7d65f98650
ENG-1441: Update approved CLI help snapshot
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a07c7f-dbdd-70ef-b61e-694d08c325e1
2026-09-07 12:28:12 -04:00
Akhil Velagapudi
2bc8ca73f6
ENG-1441: Expose the CLI geometry accuracy budget
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a07c7f-dbdd-70ef-b61e-694d08c325e1
2026-09-07 12:28:12 -04:00
Akhil Velagapudi
589b9e6627
ENG-1442: Carry caller resolution through IPC library paths
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a07c7e-c166-707d-9df1-fc764485da74
2026-09-07 12:21:19 -04:00
Akhil Velagapudi
10ec137c44
ENG-1356: Prepare curved geometry to a stated accuracy ( #1171 )
...
Regions carry the resolution they were prepared at, so approximation budgets are chosen once and inherited instead of threaded through every signature. Elliptical arcs close the IR under affine transforms, making placement and expansion exact.
2026-09-07 10:45:54 -04:00
detail-app[bot]
a0094b4947
fix(import): classify metric-only 0402Metric/0603Metric passives as 01005/0201 ( #1209 )
...
* fix(import): classify metric-only 0402Metric/0603Metric passives as 01005/0201
* fix: strip library namespace and use digit-boundary guard in parse_package_from_text
- Strip the KiCad library namespace (everything before ':') before matching
metric and imperial package tokens, so a library name such as '0402Metric'
or '1005Metric' cannot shadow the actual footprint name.
- Switch metric-suffix checks from plain contains() to contains_code() so
that '1005metric' is not spuriously matched inside '01005metric'.
- Add regression tests for both cases.
* fix(import): keep metric package precedence focused
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a15-395f-7383-bd2b-363ef353aa45
* fix(import): exclude namespaces at package extraction boundary
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a15-395f-7383-bd2b-363ef353aa45
---------
Co-authored-by: detail-app[bot] <180357370+detail-app[bot]@users.noreply.github.com>
Co-authored-by: detail-app[bot] <detail-app[bot]@users.noreply.github.com>
Co-authored-by: Akhil Velagapudi <akhil@diode.computer >
2026-09-07 10:45:28 -04:00
detail-app[bot]
a8c058dd4c
fix(migrate): walk root-level .zen files in pure-container workspaces ( #1218 )
...
* fix(migrate): walk root-level .zen files in pure-container workspaces
* Trim container migration regression and correct changelog placement
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a16-b43e-72db-bcef-810d8f6afd4e
* Limit container migration scan to direct root sources
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a16-b43e-72db-bcef-810d8f6afd4e
---------
Co-authored-by: detail-app[bot] <180357370+detail-app[bot]@users.noreply.github.com>
Co-authored-by: Akhil Velagapudi <akhil@diode.computer >
2026-09-07 10:43:29 -04:00
detail-app[bot]
2994fc1ed0
fix(pcb-layout): resolve chained net renames in a single pass ( #1216 )
...
* fix(pcb-layout): resolve chained net renames in a single pass
* fix(import): apply allocated net names directly
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a16-11c9-72f3-b863-2bf2f74d374b
* fix(import): reject collisions with untouched PCB nets
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a16-11c9-72f3-b863-2bf2f74d374b
* docs: remove import rename bookkeeping release note
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a16-11c9-72f3-b863-2bf2f74d374b
---------
Co-authored-by: detail-app[bot] <180357370+detail-app[bot]@users.noreply.github.com>
Co-authored-by: Akhil Velagapudi <akhil@diode.computer >
2026-09-07 10:43:24 -04:00
detail-app[bot]
1199479274
fix(doc): include [workspace].path in pcb doc --package <local-path> H1 header ( #1202 )
...
* fix(doc): include [workspace].path in pcb doc --package <local-path> H1 header
* Simplify doc URL regression coverage and fix changelog placement
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a13-bad4-733f-9f2c-7f504772908a
* Remove granular doc URL changelog entry
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a13-bad4-733f-9f2c-7f504772908a
---------
Co-authored-by: detail-app[bot] <180357370+detail-app[bot]@users.noreply.github.com>
Co-authored-by: Akhil Velagapudi <akhil@diode.computer >
2026-09-07 10:43:23 -04:00
detail-app[bot]
0764ff471b
fix(import): Escape Zener sync Path property when inserting into KiCad PCB ( #1212 )
...
* fix(import): Escape Zener sync Path property when inserting into KiCad PCB
* Simplify imported Path regression coverage and correct changelog
Amp-Thread-ID: https://ampcode.com/threads/T-01a07a15-e2c3-72ce-8abe-b10881d86081
---------
Co-authored-by: detail-app[bot] <180357370+detail-app[bot]@users.noreply.github.com>
Co-authored-by: Akhil Velagapudi <akhil@diode.computer >
2026-09-07 09:30:00 -04:00
Akhil Velagapudi
d41bb47aba
Consolidate BOM table and JSON rows by selected offer ( #1225 )
...
* Consolidate BOM table and JSON rows by selected offer
Amp-Thread-ID: https://ampcode.com/threads/T-01a07830-313a-754d-98f1-c37d1e612e1c
* Keep grouped BOM sourcing and totals consistent
Amp-Thread-ID: https://ampcode.com/threads/T-01a07830-313a-754d-98f1-c37d1e612e1c
* Share sourcing data once per BOM JSON group
Amp-Thread-ID: https://ampcode.com/threads/T-01a07830-313a-754d-98f1-c37d1e612e1c
2026-09-06 18:51:06 -04:00
Lenny Khazan
55d2ac1ed7
feat: scaffold a starter board specification ( #1199 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a073fb-bbd6-76db-8ac8-f4df82db770e
Co-authored-by: Amp <amp@ampcode.com >
2026-09-05 22:03:08 -04:00
Lenny Khazan
2455354a4f
fix(lsp): use cached BOM matches during schematic evaluation ( #1195 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a072c4-74c1-774a-9a36-5307843f02b4
Co-authored-by: Amp <amp@ampcode.com >
2026-09-05 20:35:28 +00:00
Lenny Khazan
3d82841166
Preserve hierarchical sheet ownership when placements are deleted ( #1196 )
...
* fix: preserve hierarchical sheet ownership when placements are deleted
Amp-Thread-ID: https://ampcode.com/threads/T-01a072c8-0941-7019-a2ca-68b1e2352816
Co-authored-by: Amp <amp@ampcode.com >
* fix: handle retained sheet repair collisions and hierarchy changes
Amp-Thread-ID: https://ampcode.com/threads/T-01a072c8-0941-7019-a2ca-68b1e2352816
Co-authored-by: Amp <amp@ampcode.com >
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-09-05 15:58:28 -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
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
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
Akhil Velagapudi
f78e954848
Open DFM reports in web viewer
2026-09-03 22:17:47 -04:00
Akhil Velagapudi
7f9c5ac110
Update supported LED colors
2026-09-03 21:21:57 -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
Lenny Khazan
ba03b9f9d5
fix(schematic): ignore nested NotConnected ports (ENG-1300) ( #1150 )
2026-09-03 09:07:35 -04:00
Akhil Velagapudi
69a86fa531
Fix IPC-2581 assembly hole reporting ( #1145 )
2026-09-02 15:46:23 -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
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
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
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
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
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
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
64759d1f25
Update dependencies and adapt affected APIs ( #1118 )
2026-08-30 23:06:58 -04: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
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
423133a328
ENG-1148 Inherit symbol descriptions in BOM
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a04f02-87e5-7409-941d-21508375373c
2026-08-29 19:38:56 -04: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