@tscircuit/schematic-trace-solver 0.0.187 → 0.0.189

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.
Files changed (60) hide show
  1. package/dist/index.d.ts +42 -23
  2. package/dist/index.js +1053 -316
  3. package/lib/solvers/InlineNetLabelSolver/InlineNetLabelSolver.ts +612 -230
  4. package/lib/solvers/InlineNetLabelSolver/alignPortOnlyInlineNetLabelStubs.ts +2 -6
  5. package/lib/solvers/InlineNetLabelSolver/getAnchoredNetLabelRenderedBounds.ts +13 -0
  6. package/lib/solvers/InlineNetLabelSolver/getInlineLabelObstacles.ts +64 -0
  7. package/lib/solvers/InlineNetLabelSolver/getLocalTraceLabelShifts.ts +407 -0
  8. package/lib/solvers/InlineNetLabelSolver/getOutputLabelCollisions.ts +145 -0
  9. package/lib/solvers/InlineNetLabelSolver/isLabelRepresentedInline.ts +15 -0
  10. package/lib/solvers/InlineNetLabelSolver/pushAnchoredNetLabelsAwayFromInlineLabels.ts +61 -31
  11. package/lib/solvers/NetLabelNetLabelCollisionSolver/NetLabelNetLabelCollisionSolver.ts +94 -16
  12. package/lib/solvers/NetLabelToTraceSolver/NetLabelToTraceSolver.ts +4 -3
  13. package/lib/solvers/SameNetJunctionAlignmentSolver/alignSameNetJunctions.ts +7 -7
  14. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +3 -0
  15. package/lib/solvers/TraceCleanupSolver/sub-solver/generateLShapeRerouteCandidates.ts +5 -1
  16. package/lib/types/InputProblem.ts +2 -2
  17. package/package.json +1 -1
  18. package/site/SchematicTracePipelineSolver/repro-robot-controller-imu-tof.page.tsx +7 -0
  19. package/site/bug-reports/bug-report-20260907T110144Z.page.tsx +4 -0
  20. package/site/bug-reports/bug-report-20260907T145640Z.page.tsx +4 -0
  21. package/tests/bug-reports/bug-report-20260730T061837Z/__snapshots__/bug-report-20260730T061837Z.snap.svg +2 -2
  22. package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +2 -2
  23. package/tests/bug-reports/bug-report-20260811T075142Z/__snapshots__/bug-report-20260811T075142Z.snap.svg +18 -18
  24. package/tests/bug-reports/bug-report-20260819T091818Z/__snapshots__/bug-report-20260819T091818Z.snap.svg +2 -2
  25. package/tests/bug-reports/bug-report-20260819T091818Z/bug-report-20260819T091818Z.test.ts +21 -0
  26. package/tests/bug-reports/bug-report-20260825T103621Z/__snapshots__/bug-report-20260825T103621Z.snap.svg +5 -38
  27. package/tests/bug-reports/bug-report-20260826T072956Z/__snapshots__/bug-report-20260826T072956Z.snap.svg +3 -9
  28. package/tests/bug-reports/bug-report-20260901T055358Z/__snapshots__/bug-report-20260901T055358Z.snap.svg +18 -30
  29. package/tests/bug-reports/bug-report-20260901T055358Z/bug-report-20260901T055358Z.test.ts +33 -0
  30. package/tests/bug-reports/bug-report-20260907T110144Z/__snapshots__/bug-report-20260907T110144Z.snap.svg +282 -0
  31. package/tests/bug-reports/bug-report-20260907T110144Z/bug-report-20260907T110144Z.json +1073 -0
  32. package/tests/bug-reports/bug-report-20260907T110144Z/bug-report-20260907T110144Z.test.ts +12 -0
  33. package/tests/bug-reports/bug-report-20260907T145640Z/__snapshots__/bug-report-20260907T145640Z.snap.svg +1107 -0
  34. package/tests/bug-reports/bug-report-20260907T145640Z/bug-report-20260907T145640Z.json +3563 -0
  35. package/tests/bug-reports/bug-report-20260907T145640Z/bug-report-20260907T145640Z.test.ts +117 -0
  36. package/tests/repros/__snapshots__/repro-battery-management-bq24073.snap.svg +4 -4
  37. package/tests/repros/__snapshots__/repro-board-648-esp12f-section.snap.svg +2 -2
  38. package/tests/repros/__snapshots__/repro-core-tb67s579ftg-inline-label-routing.snap.svg +20 -20
  39. package/tests/repros/__snapshots__/repro-esp12f-section.snap.svg +37 -55
  40. package/tests/repros/__snapshots__/repro-hub-usb-sheet.snap.svg +44 -68
  41. package/tests/repros/__snapshots__/repro-mspm0l1306-capacitor-symmetry.snap.svg +3 -9
  42. package/tests/repros/__snapshots__/repro-robot-controller-imu-tof.snap.svg +199 -0
  43. package/tests/repros/__snapshots__/repro-robot-controller-imu-tof.source.svg +33 -0
  44. package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +50 -74
  45. package/tests/repros/__snapshots__/repro48-555-timer-vcc-rail-label.snap.svg +2 -2
  46. package/tests/repros/__snapshots__/rp2040-robot-controller-disconnected-gnd.snap.svg +103 -0
  47. package/tests/repros/assets/repro-robot-controller-imu-tof.input.json +540 -0
  48. package/tests/repros/assets/rp2040-robot-controller.input.json +349 -0
  49. package/tests/repros/repro-battery-management-bq24073.test.ts +13 -1
  50. package/tests/repros/repro-hub-usb-sheet.test.ts +25 -0
  51. package/tests/repros/repro-robot-controller-imu-tof.test.ts +83 -0
  52. package/tests/repros/repro-usb-power-vbus-label-detour.test.ts +59 -13
  53. package/tests/repros/rp2040-robot-controller-disconnected-gnd.test.ts +59 -0
  54. package/tests/solvers/InlineNetLabelSolver/get-anchored-net-label-rendered-bounds.test.ts +24 -0
  55. package/tests/solvers/InlineNetLabelSolver/local-trace-label-shifts.test.ts +296 -0
  56. package/tests/solvers/InlineNetLabelSolver/multi-pin-connected-components.test.ts +7 -4
  57. package/tests/solvers/InlineNetLabelSolver/push-anchored-net-labels-away.test.ts +2 -1
  58. package/tests/solvers/InlineNetLabelSolver/shared-direct-and-named-connection.test.ts +62 -0
  59. package/tests/solvers/InlineNetLabelSolver/two-pin-terminal-stubs-atomic.test.ts +9 -3
  60. package/tests/solvers/TraceCleanupSolver/perpendicular-detours-preserve-endpoints.test.ts +60 -0
@@ -11,15 +11,11 @@ globalConnNetId: connectivity_net4" data-x="3.3" data-y="2.275" x="408.368080517
11
11
  globalConnNetId: connectivity_net8" data-x="3.3499999999999996" data-y="-1.725" x="410.3810208483105" y="380.7907979870596" width="8.051761322789389" height="18.11646297627607" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="netId: .J1 &gt; .pin2 to U1.SWCLK
12
12
  globalConnNetId: connectivity_net9" data-x="3.3499999999999996" data-y="-2.225" x="410.3810208483105" y="400.92020129403306" width="8.051761322789389" height="18.11646297627607" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="netId: .C3 &gt; .pin1 to U1.VCORE
13
13
  globalConnNetId: connectivity_net2" data-x="-3.275" data-y="-0.03499999999999992" x="138.63407620416967" y="317.7857656362329" width="18.11646297627607" height="8.051761322789389" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="netId: VPU
14
- globalConnNetId: connectivity_net6" data-x="7.2" data-y="1.31" x="559.741193386053" y="259.2092020129403" width="19.324227174694556" height="16.908698777857637" fill="#ef444466" stroke="#ef4444" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="INLINE netId: .R3 &gt; .pin1 to U1.PA1
15
- axis: x
16
- side: y+" data-x="5.05" data-y="-0.4400000000000003" x="476.4054636951833" y="335.70093457943926" width="12.882818116463" height="4.831056793673611" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="INLINE netId: .R4 &gt; .pin1 to U1.PA0
17
- axis: x
18
- side: y+" data-x="4.55" data-y="0.059999999999999734" x="456.2760603882099" y="315.57153127246585" width="12.882818116463" height="4.831056793673611" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="INLINE netId: PA0
14
+ globalConnNetId: connectivity_net6" data-x="7.2" data-y="1.31" x="559.741193386053" y="259.2092020129403" width="19.324227174694556" height="16.908698777857637" fill="#ef444466" stroke="#ef4444" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="INLINE netId: PA0
19
15
  axis: x
20
16
  side: y+" data-x="4.55" data-y="0.059999999999999734" x="456.2760603882099" y="315.57153127246585" width="12.882818116463" height="4.831056793673611" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><g><rect data-type="rect" data-label="INLINE netId: PA1
21
17
  axis: x
22
- side: y+" data-x="5.05" data-y="-0.4400000000000003" x="476.4054636951833" y="335.70093457943926" width="12.882818116463" height="4.831056793673611" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><text data-type="text" data-label="PA1" data-x="5.05" data-y="-0.4400000000000003" x="482.8468727534148" y="338.11646297627607" fill="green" font-size="4.831056793673615" font-family="sans-serif" text-anchor="middle" dominant-baseline="central">PA1</text><text data-type="text" data-label="PA0" data-x="4.55" data-y="0.059999999999999734" x="462.7174694464414" y="317.98705966930265" fill="green" font-size="4.831056793673615" font-family="sans-serif" text-anchor="middle" dominant-baseline="central">PA0</text><text data-type="text" data-label="PA0" data-x="4.55" data-y="0.059999999999999734" x="462.7174694464414" y="317.98705966930265" fill="green" font-size="4.831056793673615" font-family="sans-serif" text-anchor="middle" dominant-baseline="central">PA0</text><text data-type="text" data-label="PA1" data-x="5.05" data-y="-0.4400000000000003" x="482.8468727534148" y="338.11646297627607" fill="green" font-size="4.831056793673615" font-family="sans-serif" text-anchor="middle" dominant-baseline="central">PA1</text><g><circle data-type="point" data-label="PA0
18
+ side: y+" data-x="5.05" data-y="-0.4400000000000003" x="476.4054636951833" y="335.70093457943926" width="12.882818116463" height="4.831056793673611" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.024839285714285717"/></g><text data-type="text" data-label="PA0" data-x="4.55" data-y="0.059999999999999734" x="462.7174694464414" y="317.98705966930265" fill="green" font-size="4.831056793673615" font-family="sans-serif" text-anchor="middle" dominant-baseline="central">PA0</text><text data-type="text" data-label="PA1" data-x="5.05" data-y="-0.4400000000000003" x="482.8468727534148" y="338.11646297627607" fill="green" font-size="4.831056793673615" font-family="sans-serif" text-anchor="middle" dominant-baseline="central">PA1</text><g><circle data-type="point" data-label="PA0
23
19
  x+" data-x="2.9" data-y="-0.050000000000000266" cx="396.29043853342915" cy="322.4155283968368" r="3" fill="hsl(319, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PA1
24
20
  x+" data-x="2.9" data-y="-0.5500000000000003" cx="396.29043853342915" cy="342.5449317038102" r="3" fill="hsl(320, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="NRST
25
21
  x-" data-x="-2.9" data-y="-1.5499999999999998" cx="162.78936017253778" cy="382.803738317757" r="3" fill="hsl(321, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="VDD
@@ -58,8 +54,6 @@ orientation: y+" data-x="3.3499999999999996" data-y="-1.9500000000000002" cx="41
58
54
  orientation: y+" data-x="3.3499999999999996" data-y="-2.45" cx="414.4069015097052" cy="419.03666427030913" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
59
55
  orientation: x+" data-x="-3.5" data-y="-0.03499999999999992" cx="138.63407620416967" cy="321.8116462976276" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
60
56
  orientation: y+" data-x="7.2" data-y="1.1" cx="569.4033069734004" cy="276.117900790798" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="inline anchor
61
- PA1" data-x="5.05" data-y="-0.5500000000000003" cx="482.8468727534148" cy="342.5449317038102" r="3" fill="green"/></g><g><circle data-type="point" data-label="inline anchor
62
- PA0" data-x="4.55" data-y="-0.050000000000000266" cx="462.7174694464414" cy="322.4155283968368" r="3" fill="green"/></g><g><circle data-type="point" data-label="inline anchor
63
57
  PA0" data-x="4.55" data-y="-0.050000000000000266" cx="462.7174694464414" cy="322.4155283968368" r="3" fill="green"/></g><g><circle data-type="point" data-label="inline anchor
64
58
  PA1" data-x="5.05" data-y="-0.5500000000000003" cx="482.8468727534148" cy="342.5449317038102" r="3" fill="green"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
65
59
  document.currentScript.parentElement.addEventListener('mousemove', (e) => {
@@ -167,6 +161,6 @@ PA1" data-x="5.05" data-y="-0.5500000000000003" cx="482.8468727534148" cy="342.5
167
161
  L 1130.7065217389202,268.6630434783129
168
162
  L 1130.7065217389202,306.7391304348184
169
163
  Z
170
- " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.630434782608px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" x="1122.55434782588" y="303.804347826124" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="14.673913043471998px" transform="rotate(-90 1122.55434782588 303.804347826124)">VPU</text><text class="sch-text" x="405.16304347836" y="627.4456521738119" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="14.673913043471975px" transform="rotate(0, 405.16304347836, 627.4456521738119)">MSPM0L1306SRHBR</text><text class="sch-text" x="341.57608695664806" y="175.40760869574405" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="14.673913043471998px" transform="rotate(0, 341.57608695664806, 175.40760869574405)">U1</text><text class="sch-text" x="887.7717391303281" y="525.951086956464" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="14.673913043471998px" transform="rotate(0, 887.7717391303281, 525.951086956464)">J1</text><text class="sch-text" x="947.2826086955199" y="436.684782608676" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="9.782608695648px" transform="rotate(0, 947.2826086955199, 436.684782608676)">PA1</text><text class="sch-text" x="906.5217391303199" y="395.92391304347603" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="9.782608695648px" transform="rotate(0, 906.5217391303199, 395.92391304347603)">PA0</text><text class="sch-text" x="906.5217391303199" y="395.92391304347603" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="9.782608695648px" transform="rotate(0, 906.5217391303199, 395.92391304347603)">PA0</text><text class="sch-text" x="947.2826086955199" y="436.684782608676" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="9.782608695648px" transform="rotate(0, 947.2826086955199, 436.684782608676)">PA1</text><rect class="schematic-box sch-box" x="331.7934782610001" y="620.108695652076" width="146.73913043471998" height="14.673913043471885" stroke-width="1.630434782608px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="13.043478260864 6.521739130432"/><rect class="schematic-box sch-box" x="326.90217391317606" y="165.21739130444408" width="29.347826086943996" height="20.380434782599963" stroke-width="1.630434782608px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="13.043478260864 6.521739130432"/><rect class="schematic-box sch-box" x="873.097826086856" y="515.760869565164" width="29.347826086943996" height="20.38043478259999" stroke-width="1.630434782608px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="13.043478260864 6.521739130432"/>
164
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.630434782608px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" x="1122.55434782588" y="303.804347826124" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="14.673913043471998px" transform="rotate(-90 1122.55434782588 303.804347826124)">VPU</text><text class="sch-text" x="405.16304347836" y="627.4456521738119" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="14.673913043471975px" transform="rotate(0, 405.16304347836, 627.4456521738119)">MSPM0L1306SRHBR</text><text class="sch-text" x="341.57608695664806" y="175.40760869574405" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="14.673913043471998px" transform="rotate(0, 341.57608695664806, 175.40760869574405)">U1</text><text class="sch-text" x="887.7717391303281" y="525.951086956464" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="14.673913043471998px" transform="rotate(0, 887.7717391303281, 525.951086956464)">J1</text><text class="sch-text" x="906.5217391303199" y="395.92391304347603" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="9.782608695648px" transform="rotate(0, 906.5217391303199, 395.92391304347603)">PA0</text><text class="sch-text" x="947.2826086955199" y="436.684782608676" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="9.782608695648px" transform="rotate(0, 947.2826086955199, 436.684782608676)">PA1</text><rect class="schematic-box sch-box" x="331.7934782610001" y="620.108695652076" width="146.73913043471998" height="14.673913043471885" stroke-width="1.630434782608px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="13.043478260864 6.521739130432"/><rect class="schematic-box sch-box" x="326.90217391317606" y="165.21739130444408" width="29.347826086943996" height="20.380434782599963" stroke-width="1.630434782608px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="13.043478260864 6.521739130432"/><rect class="schematic-box sch-box" x="873.097826086856" y="515.760869565164" width="29.347826086943996" height="20.38043478259999" stroke-width="1.630434782608px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="13.043478260864 6.521739130432"/>
171
165
  </g>
172
166
  </svg>