biscuitboard 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,11 +20,13 @@ export default () => (
20
20
  Generate a Gerber ZIP without the front or back solder-mask layers with:
21
21
 
22
22
  ```sh
23
- bun run export:gerbers:no-solder-mask examples/breadboard-clad.tsx
23
+ bun run export:gerbers examples/breadboard-clad.tsx
24
24
  ```
25
25
 
26
26
  The archive defaults to `dist/gerbers/<board-name>.zip`. Pass a second argument
27
- to choose another ZIP path.
27
+ to choose another ZIP path. As a fabrication postprocessing step, every board
28
+ receives full top and bottom copper pours and the front and back solder-mask
29
+ layers are removed. The source TSX is not modified.
28
30
 
29
31
  `BiscuitBoard` owns the fixed 75 mm x 55 mm outline, mounting holes, and
30
32
  assignable prefabricated vias. Copper pours are intentionally disabled. Its
@@ -217,11 +219,13 @@ upper-right clad hole clears the D0-D7 header. Relative placement remains
217
219
  official UNO R3 geometry for the 1x8 power header, 1x6 analog header, 1x8
218
220
  D0-D7 header, 1x10 R3 digital/AREF/I2C header, and 2x3 ICSP socket.
219
221
 
220
- The 262 assignable fixed vias use 0.3 mm drills, 0.6 mm copper pads, and 1.3 mm
221
- center-to-center pitch. The clustered layout has upper- and lower-left edge
222
- fields, two inset left fields, a central routing field spanning -19 to -3 mm,
223
- and split right-edge rails. The area immediately left of ICSP, the header rows, and
224
- the original clad mounting holes remain open. The bare template and its
222
+ The 226 assignable fixed vias use 0.3 mm drills, 0.6 mm copper pads, and 1.3 mm
223
+ center-to-center pitch. A 130-via central routing field spanning -19 to -3 mm
224
+ is retained. Three corners use compact three-via-wide L-shaped fields; the
225
+ upper-right uses one three-row horizontal arm parallel to its two mounting
226
+ holes and lowered around the crowded UNO header region. The area immediately
227
+ left of ICSP, the header rows, and the original clad mounting holes remain
228
+ open. The bare template and its
225
229
  checked-in PCB snapshot are in
226
230
  [`examples/arduino-shield-clad.tsx`](./examples/arduino-shield-clad.tsx).
227
231
 
package/dist/npm.cjs CHANGED
@@ -14526,41 +14526,46 @@ var ARDUINO_SHIELD_CLAD_VIA_SPACING = 1.3;
14526
14526
  var ARDUINO_SHIELD_EDGE_CLEARANCE = 0.2;
14527
14527
  var ARDUINO_SHIELD_EDGE_CLEARANCE_VALIDATION_TOLERANCE = 1e-3;
14528
14528
  var rangeInclusive = (start, end, increment) => Array.from(
14529
- { length: Math.max(0, Math.floor((end - start) / increment) + 1) },
14529
+ {
14530
+ length: Math.max(0, Math.floor((end - start) / increment + 1e-9) + 1)
14531
+ },
14530
14532
  (_, index) => Math.round((start + index * increment) * 1e6) / 1e6
14531
14533
  );
14532
14534
  var createViaZone2 = (zone) => rangeInclusive(zone.minX, zone.maxX, zone.spacing).flatMap(
14533
14535
  (x) => rangeInclusive(zone.minY, zone.maxY, zone.spacing).map((y) => ({ x, y }))
14534
14536
  );
14535
14537
  var ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES = [
14538
+ // Upper-left horizontal and vertical arms.
14536
14539
  {
14537
- minX: -33.5,
14538
- maxX: -25.5,
14539
- minY: 17.5,
14540
- maxY: 21.5,
14540
+ minX: -36.1,
14541
+ maxX: -29.6,
14542
+ minY: 19.7,
14543
+ maxY: 22.3,
14541
14544
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14542
14545
  },
14543
14546
  {
14544
- minX: -33.5,
14545
- maxX: -25.5,
14546
- minY: -21.5,
14547
- maxY: -17.5,
14547
+ minX: -32.2,
14548
+ maxX: -29.6,
14549
+ minY: 19.7,
14550
+ maxY: 26.2,
14548
14551
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14549
14552
  },
14553
+ // Lower-left horizontal and vertical arms.
14550
14554
  {
14551
- minX: -21.5,
14552
- maxX: -13.5,
14553
- minY: 13.5,
14554
- maxY: 17.5,
14555
+ minX: -36.1,
14556
+ maxX: -29.6,
14557
+ minY: -22.3,
14558
+ maxY: -19.7,
14555
14559
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14556
14560
  },
14557
14561
  {
14558
- minX: -21.5,
14559
- maxX: -13.5,
14560
- minY: -17.5,
14561
- maxY: -13.5,
14562
+ minX: -32.2,
14563
+ maxX: -29.6,
14564
+ minY: -26.2,
14565
+ maxY: -19.7,
14562
14566
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14563
14567
  },
14568
+ // Preserve the large central routing field exactly.
14564
14569
  {
14565
14570
  minX: -19,
14566
14571
  maxX: -3,
@@ -14568,18 +14573,27 @@ var ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES = [
14568
14573
  maxY: 6,
14569
14574
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14570
14575
  },
14576
+ // Upper-right horizontal arm, parallel to the two mounting holes.
14571
14577
  {
14572
- minX: 34.5,
14573
- maxX: 34.5,
14574
- minY: -19.5,
14575
- maxY: -7.5,
14578
+ minX: 30.9,
14579
+ maxX: 36.1,
14580
+ minY: 19.7,
14581
+ maxY: 22.3,
14576
14582
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14577
14583
  },
14584
+ // Lower-right horizontal and vertical arms.
14578
14585
  {
14579
- minX: 34.5,
14580
- maxX: 34.5,
14581
- minY: 7.5,
14582
- maxY: 19.5,
14586
+ minX: 29.6,
14587
+ maxX: 36.1,
14588
+ minY: -22.3,
14589
+ maxY: -19.7,
14590
+ spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14591
+ },
14592
+ {
14593
+ minX: 29.6,
14594
+ maxX: 32.2,
14595
+ minY: -26.2,
14596
+ maxY: -19.7,
14583
14597
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14584
14598
  }
14585
14599
  ];
@@ -14896,17 +14910,23 @@ var ArduinoShieldClad = ({
14896
14910
  fontSize: "0.6mm"
14897
14911
  }
14898
14912
  ),
14899
- ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES.map((zone) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react2.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
14900
- "pcbnoterect",
14913
+ ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES.map((zone) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
14914
+ import_react2.Fragment,
14901
14915
  {
14902
- color: "blue",
14903
- width: Math.max(0.2, zone.maxX - zone.minX),
14904
- height: Math.max(0.2, zone.maxY - zone.minY),
14905
- pcbPositionAnchor: "center",
14906
- pcbX: zone.minX + (zone.maxX - zone.minX) / 2,
14907
- pcbY: zone.minY + (zone.maxY - zone.minY) / 2
14908
- }
14909
- ) }, `arduino-via-zone-${zone.minX}-${zone.minY}`)),
14916
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
14917
+ "pcbnoterect",
14918
+ {
14919
+ color: "blue",
14920
+ width: Math.max(0.2, zone.maxX - zone.minX),
14921
+ height: Math.max(0.2, zone.maxY - zone.minY),
14922
+ pcbPositionAnchor: "center",
14923
+ pcbX: zone.minX + (zone.maxX - zone.minX) / 2,
14924
+ pcbY: zone.minY + (zone.maxY - zone.minY) / 2
14925
+ }
14926
+ )
14927
+ },
14928
+ `arduino-via-zone-${zone.minX}-${zone.maxX}-${zone.minY}-${zone.maxY}`
14929
+ )),
14910
14930
  ARDUINO_SHIELD_CLAD_VIA_POSITIONS.map((via) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react2.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
14911
14931
  "via",
14912
14932
  {