From 47629990d734ddf7796955cedae825f0903bff10 Mon Sep 17 00:00:00 2001 From: seveibar Date: Fri, 7 Aug 2026 14:29:24 -0700 Subject: [PATCH 01/11] Remove sharp from snapshot tests --- package.json | 4 +- tests/fixtures/compare-image-buffers.test.ts | 23 ++++++++ tests/fixtures/compare-image-buffers.ts | 56 +++++++++++++++++++ tests/fixtures/extend-expect-3d-matcher.ts | 26 ++++----- tests/fixtures/extend-expect-any-svg.ts | 19 ++----- .../extend-expect-circuit-snapshot.ts | 8 +-- tests/fixtures/preload.ts | 1 - tests/fixtures/simulation-matcher.ts | 8 +-- 8 files changed, 107 insertions(+), 38 deletions(-) create mode 100644 tests/fixtures/compare-image-buffers.test.ts create mode 100644 tests/fixtures/compare-image-buffers.ts diff --git a/package.json b/package.json index 100b97b17d..bc12467c77 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/fanout-solver": "0.0.14", "@tscircuit/footprinter": "^0.0.409", - "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.3", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#e08af159db01a37db007e33f0a7268d0e4a279a5", @@ -64,7 +63,6 @@ "@types/react-dom": "^19.1.6", "@types/react-reconciler": "^0.28.9", "bpc-graph": "^0.0.57", - "bun-match-svg": "0.0.12", "calculate-elbow": "^0.0.12", "chokidar-cli": "^3.0.0", "circuit-json": "^0.0.464", @@ -82,7 +80,6 @@ "kicad-to-circuit-json": "^0.0.117", "kicadts": "^0.0.53", "live-server": "^1.2.2", - "looks-same": "^9.0.1", "minicssgrid": "^0.0.9", "pkg-pr-new": "^0.0.37", "poppygl": "^0.0.26", @@ -118,6 +115,7 @@ "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", + "@tscircuit/image-utils": "^0.0.8", "calculate-cell-boundaries": "^0.0.13", "calculate-packing": "^0.0.86", "css-select": "5.1.0", diff --git a/tests/fixtures/compare-image-buffers.test.ts b/tests/fixtures/compare-image-buffers.test.ts new file mode 100644 index 0000000000..212bda1930 --- /dev/null +++ b/tests/fixtures/compare-image-buffers.test.ts @@ -0,0 +1,23 @@ +import { expect, it } from "bun:test" +import { compareImageBuffers } from "./compare-image-buffers" + +it("compares SVGs by their rendered pixels", async () => { + const reference = Buffer.from(` + + + + `) + const equivalent = Buffer.from( + '', + ) + const different = Buffer.from( + '', + ) + + const equivalentResult = await compareImageBuffers(reference, equivalent) + const differentResult = await compareImageBuffers(reference, different) + + expect(equivalentResult.equal).toBe(true) + expect(differentResult.equal).toBe(false) + expect(differentResult.differentPixels).toBeGreaterThan(0) +}) diff --git a/tests/fixtures/compare-image-buffers.ts b/tests/fixtures/compare-image-buffers.ts new file mode 100644 index 0000000000..7da6cc13b4 --- /dev/null +++ b/tests/fixtures/compare-image-buffers.ts @@ -0,0 +1,56 @@ +import { Resvg } from "@resvg/resvg-js" +import looksSame from "@tscircuit/image-utils/looks-same" +import * as fs from "node:fs" + +type CompareImageOptions = { + strict?: boolean + tolerance?: number + ignoreCaret?: boolean + ignoreAntialiasing?: boolean + antialiasingTolerance?: number + pixelRatio?: number + percentThreshold?: number +} + +const isSvg = (image: Uint8Array) => { + const prefix = Buffer.from(image).subarray(0, 1024).toString("utf8") + return prefix.includes(" { + if (!isSvg(image)) return image + return new Resvg(Buffer.from(image)).render().asPng() +} + +export const compareImageBuffers = async ( + reference: Uint8Array, + current: Uint8Array, + options: CompareImageOptions = {}, +) => { + return looksSame( + toComparablePng(reference), + toComparablePng(current), + options, + ) +} + +export const createImageDiff = async ({ + reference, + current, + diffPath, + highlightColor, + ...options +}: CompareImageOptions & { + reference: Uint8Array + current: Uint8Array + diffPath: string + highlightColor?: string +}) => { + const diff = await looksSame.createDiff({ + reference: toComparablePng(reference), + current: toComparablePng(current), + highlightColor, + ...options, + }) + fs.writeFileSync(diffPath, diff) +} diff --git a/tests/fixtures/extend-expect-3d-matcher.ts b/tests/fixtures/extend-expect-3d-matcher.ts index b2ed02951b..5e03ff0500 100644 --- a/tests/fixtures/extend-expect-3d-matcher.ts +++ b/tests/fixtures/extend-expect-3d-matcher.ts @@ -8,7 +8,7 @@ import { getBestCameraPosition, } from "circuit-json-to-gltf" import { RootCircuit } from "lib/RootCircuit" -import looksSame from "looks-same" +import { compareImageBuffers, createImageDiff } from "./compare-image-buffers" import { type RenderGLTFToPNGFromGLBOptions as PoppyglOptions, renderGLTFToPNGFromGLB, @@ -171,14 +171,11 @@ async function save3dSnapshotOfCircuitJson({ const existingSnapshot = fs.readFileSync(filePath) const currentBuffer = Buffer.from(content) - const lsResult = await looksSame(currentBuffer, existingSnapshot, { + const lsResult = await compareImageBuffers(currentBuffer, existingSnapshot, { strict: false, tolerance: 7, ignoreAntialiasing: true, antialiasingTolerance: 4, - shouldCluster: true, - clustersSize: 10, - createDiffImage: true, }) if (lsResult.equal) { @@ -196,14 +193,9 @@ async function save3dSnapshotOfCircuitJson({ } } - let areaOfDiffClusters = 0 - for (const cluster of lsResult.diffClusters) { - areaOfDiffClusters += - (cluster.right - cluster.left) * (cluster.bottom - cluster.top) - } - /** [0,1] percentage of the image that is different */ - const diffFraction = areaOfDiffClusters / lsResult.totalPixels + const diffFraction = + (lsResult.differentPixels ?? 0) / (lsResult.totalPixels ?? 1) if (diffFraction <= (options?.diffTolerance ?? ACCEPTABLE_DIFF_FRACTION)) { return { @@ -228,7 +220,15 @@ async function save3dSnapshotOfCircuitJson({ } const diffPath = filePath.replace(/\.snap\.(svg|png)$/, ".diff.png") - await lsResult.diffImage.save(diffPath) + await createImageDiff({ + reference: existingSnapshot, + current: currentBuffer, + diffPath, + highlightColor: "#ff00ff", + tolerance: 7, + ignoreAntialiasing: true, + antialiasingTolerance: 4, + }) return { message: () => diff --git a/tests/fixtures/extend-expect-any-svg.ts b/tests/fixtures/extend-expect-any-svg.ts index e37b76b5e2..7c6929743f 100644 --- a/tests/fixtures/extend-expect-any-svg.ts +++ b/tests/fixtures/extend-expect-any-svg.ts @@ -1,7 +1,7 @@ import { type MatcherResult, expect } from "bun:test" import * as fs from "node:fs" import * as path from "node:path" -import looksSame from "looks-same" +import { compareImageBuffers, createImageDiff } from "./compare-image-buffers" const DIFF_THRESHOLD_PERCENT = 1 // only update snapshot if >1% difference @@ -42,24 +42,17 @@ export async function toMatchSvgSnapshot( const existingSnapshot = fs.readFileSync(filePath, "utf-8") - const result: any = await looksSame( + const result = await compareImageBuffers( Buffer.from(svg), Buffer.from(existingSnapshot), { strict: false, tolerance: 2, - shouldCluster: true, - clustersSize: 10, }, ) - const totalPixels = - result.metaInfo.refImg.size.width * result.metaInfo.refImg.size.height - const diffPixels = result.diffClusters.reduce( - (sum: number, cluster: any) => - sum + (cluster.right - cluster.left) * (cluster.bottom - cluster.top), - 0, - ) + const totalPixels = result.totalPixels ?? 1 + const diffPixels = result.differentPixels ?? 0 const diffPercent = (diffPixels / totalPixels) * 100 const diffThresholdPercent = options?.diffThresholdPercent ?? DIFF_THRESHOLD_PERCENT @@ -87,10 +80,10 @@ export async function toMatchSvgSnapshot( } const diffPath = filePath.replace(".snap.svg", ".diff.png") - await looksSame.createDiff({ + await createImageDiff({ reference: Buffer.from(existingSnapshot), current: Buffer.from(svg), - diff: diffPath, + diffPath, highlightColor: "#ff00ff", }) diff --git a/tests/fixtures/extend-expect-circuit-snapshot.ts b/tests/fixtures/extend-expect-circuit-snapshot.ts index 0179e86b2f..a4ed2e41b3 100644 --- a/tests/fixtures/extend-expect-circuit-snapshot.ts +++ b/tests/fixtures/extend-expect-circuit-snapshot.ts @@ -12,7 +12,7 @@ import { convertCircuitJsonToStackedSchematicSheetsSvg, } from "circuit-to-svg" import { RootCircuit } from "lib/RootCircuit" -import looksSame from "looks-same" +import { compareImageBuffers, createImageDiff } from "./compare-image-buffers" import { getSchematicComponentTextBoundingBoxRects } from "tests/fixtures/getSchematicComponentTextBoundingBoxRects" async function saveSvgSnapshotOfCircuitJson({ @@ -70,7 +70,7 @@ async function saveSvgSnapshotOfCircuitJson({ ? content : Buffer.from(content) - const result = await looksSame(currentBuffer, existingSnapshot, { + const result = await compareImageBuffers(currentBuffer, existingSnapshot, { strict: false, tolerance: 2, }) @@ -92,10 +92,10 @@ async function saveSvgSnapshotOfCircuitJson({ } const diffPath = filePath.replace(/\.snap\.(svg|png)$/, ".diff.png") - await looksSame.createDiff({ + await createImageDiff({ reference: existingSnapshot, current: currentBuffer, - diff: diffPath, + diffPath, highlightColor: "#ff00ff", }) diff --git a/tests/fixtures/preload.ts b/tests/fixtures/preload.ts index 2e8945121c..a5bd9752b1 100644 --- a/tests/fixtures/preload.ts +++ b/tests/fixtures/preload.ts @@ -1,4 +1,3 @@ -import "bun-match-svg" import "./extend-expect-any-svg" import "./simulation-matcher" import "lib/register-catalogue" diff --git a/tests/fixtures/simulation-matcher.ts b/tests/fixtures/simulation-matcher.ts index a821640468..0c4cd3d735 100644 --- a/tests/fixtures/simulation-matcher.ts +++ b/tests/fixtures/simulation-matcher.ts @@ -2,7 +2,7 @@ import { convertCircuitJsonToSchematicSimulationSvg } from "circuit-to-svg" import { expect, type MatcherResult } from "bun:test" import * as fs from "node:fs" import * as path from "node:path" -import looksSame from "looks-same" +import { compareImageBuffers, createImageDiff } from "./compare-image-buffers" import { RootCircuit } from "lib/RootCircuit" import type { AnyCircuitElement } from "circuit-json" @@ -53,7 +53,7 @@ async function saveSvgSnapshotOfSimulation({ const existingSnapshot = fs.readFileSync(filePath) const currentBuffer = Buffer.from(content) - const result = await looksSame(currentBuffer, existingSnapshot, { + const result = await compareImageBuffers(currentBuffer, existingSnapshot, { strict: false, tolerance: 2, }) @@ -75,10 +75,10 @@ async function saveSvgSnapshotOfSimulation({ } const diffPath = filePath.replace(".snap.svg", ".diff.png") - await looksSame.createDiff({ + await createImageDiff({ reference: existingSnapshot, current: currentBuffer, - diff: diffPath, + diffPath, highlightColor: "#ff00ff", }) From 38a333622a12b22fab5e779e36f1ea5b46c520b7 Mon Sep 17 00:00:00 2001 From: seveibar Date: Fri, 7 Aug 2026 14:31:19 -0700 Subject: [PATCH 02/11] Declare image-utils as a peer dependency --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index bc12467c77..f7a1885fe0 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/fanout-solver": "0.0.14", "@tscircuit/footprinter": "^0.0.409", + "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.3", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#e08af159db01a37db007e33f0a7268d0e4a279a5", @@ -98,6 +99,7 @@ "@tscircuit/circuit-json-util": "*", "@tscircuit/create-fdm-enclosure": "*", "@tscircuit/footprinter": "*", + "@tscircuit/image-utils": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", @@ -115,7 +117,6 @@ "dependencies": { "@flatten-js/core": "^1.6.2", "@lume/kiwi": "^0.4.3", - "@tscircuit/image-utils": "^0.0.8", "calculate-cell-boundaries": "^0.0.13", "calculate-packing": "^0.0.86", "css-select": "5.1.0", From 2dc446d77661c1e25341e3c9e75641deb8a8846f Mon Sep 17 00:00:00 2001 From: tscircuit-bot Date: Fri, 7 Aug 2026 21:42:33 +0000 Subject: [PATCH 03/11] Update test snapshots --- .../__snapshots__/net-with-trace-pcb.snap.svg | 2 +- ...ematic-section-manual-placement-3.snap.svg | 203 ++++++++---------- .../examples/__snapshots__/example1.snap.svg | 2 +- .../auto-jumper-autorouting-pcb.snap.svg | 2 +- ...ase-index-arrays-horizontal-first.snap.svg | 8 +- ...phase-index-arrays-vertical-first.snap.svg | 8 +- ...tion-phase-index-horizontal-first.snap.svg | 10 +- ...ection-phase-index-vertical-first.snap.svg | 8 +- ...nection-reroute-connections-array.snap.svg | 8 +- ...nection-reroute-single-connection.snap.svg | 8 +- .../kicad-jst-connector-footprint.snap.svg | 2 +- .../kicad-usb-connector-footprint.snap.svg | 2 +- .../footprint-library-map2-pcb.snap.svg | 2 +- ...boy-direct-subcircuit-routing-pcb.snap.svg | 2 +- ...pro116-arduino-uno-reroute-center.snap.svg | 4 +- ...no-uno-reroute-invalid-source-ids.snap.svg | 4 +- ...16-arduino-uno-reroute-left-right.snap.svg | 4 +- ...116-arduino-uno-reroute-lower-mid.snap.svg | 4 +- .../repro87-trace-overlap.snap.svg | 2 +- ...repro10-usbc-flashlight-panel-pcb.snap.svg | 2 +- 20 files changed, 135 insertions(+), 152 deletions(-) diff --git a/tests/components/primitive-components/__snapshots__/net-with-trace-pcb.snap.svg b/tests/components/primitive-components/__snapshots__/net-with-trace-pcb.snap.svg index cf000ae870..0d44dc6f75 100644 --- a/tests/components/primitive-components/__snapshots__/net-with-trace-pcb.snap.svg +++ b/tests/components/primitive-components/__snapshots__/net-with-trace-pcb.snap.svg @@ -1 +1 @@ -R1R2R3R4 \ No newline at end of file +R1R2R3R4 \ No newline at end of file diff --git a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-3.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-3.snap.svg index 146e7830a0..f6f715aa56 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-3.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-3.snap.svg @@ -6,134 +6,117 @@ .component { fill: none; stroke: rgb(132, 0, 0); } .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); } .component-pin { fill: none; stroke: rgb(132, 0, 0); } - /* Basic per-trace hover fallback */ - .trace:hover { - filter: invert(1); - } - .trace:hover .trace-crossing-outline { - opacity: 0; - } - .trace:hover .trace-junction { - filter: invert(1); - } - /* Net-hover highlighting: when a trace or its overlays are hovered, - invert color for all traces (base + overlays) sharing the same - subcircuit connectivity key. Also hide crossing outline during hover. */ - svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"] .trace-crossing-outline { opacity: 0; } .text { font-family: sans-serif; fill: rgb(0, 150, 0); } .pin-number { fill: rgb(169, 0, 0); } .port-label { fill: rgb(0, 100, 100); } .component-name { fill: rgb(0, 100, 100); } - -18,-10-18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,1117,-1017,-917,-817,-717,-617,-517,-417,-317,-217,-117,017,117,217,317,417,517,617,717,817,917,1017,1118,-1018,-918,-818,-718,-618,-518,-418,-318,-218,-118,018,118,218,318,418,518,618,718,818,918,1018,1119,-1019,-919,-819,-719,-619,-519,-419,-319,-219,-119,019,119,219,319,419,519,619,719,819,919,1019,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCVCCGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3-18,-10-18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,1117,-1017,-917,-817,-717,-617,-517,-417,-317,-217,-117,017,117,217,317,417,517,617,717,817,917,1017,1118,-1018,-918,-818,-718,-618,-518,-418,-318,-218,-118,018,118,218,318,418,518,618,718,818,918,1018,1119,-1019,-919,-819,-719,-619,-519,-419,-319,-219,-119,019,119,219,319,419,519,619,719,819,919,1019,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCVCCGNDGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3ADC_INADC_INADC_INADC_INADC_INADC_INSDASDASDASDASCLSDASCLSCLTXSCLTXTXRXTXRXTXRXRXLED_OUTRXLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput + " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.5851489204px"/>LED_OUTLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput diff --git a/tests/examples/__snapshots__/example1.snap.svg b/tests/examples/__snapshots__/example1.snap.svg index 069f7ef1ac..6f7a5752f2 100644 --- a/tests/examples/__snapshots__/example1.snap.svg +++ b/tests/examples/__snapshots__/example1.snap.svg @@ -1 +1 @@ -U1R1C1pin1pin2pin3pin4J1 \ No newline at end of file +U1R1C1pin1pin2pin3pin4J1 \ No newline at end of file diff --git a/tests/features/__snapshots__/auto-jumper-autorouting-pcb.snap.svg b/tests/features/__snapshots__/auto-jumper-autorouting-pcb.snap.svg index 19d6c2f8b6..f5b373a75e 100644 --- a/tests/features/__snapshots__/auto-jumper-autorouting-pcb.snap.svg +++ b/tests/features/__snapshots__/auto-jumper-autorouting-pcb.snap.svg @@ -1 +1 @@ -U1{pin1}{pin2}{pin3}{pin4}{pin5}{pin6}{pin7}{pin8}{pin9}{pin10}{pin11}{pin12}{pin13}{pin14}{pin15}{pin16} \ No newline at end of file +U1{pin1}{pin2}{pin3}{pin4}{pin5}{pin6}{pin7}{pin8}{pin9}{pin10}{pin11}{pin12}{pin13}{pin14}{pin15}{pin16} \ No newline at end of file diff --git a/tests/features/__snapshots__/autoroutingphase-connection-phase-index-arrays-horizontal-first.snap.svg b/tests/features/__snapshots__/autoroutingphase-connection-phase-index-arrays-horizontal-first.snap.svg index 6762637870..b08466f0b8 100644 --- a/tests/features/__snapshots__/autoroutingphase-connection-phase-index-arrays-horizontal-first.snap.svg +++ b/tests/features/__snapshots__/autoroutingphase-connection-phase-index-arrays-horizontal-first.snap.svg @@ -17,7 +17,7 @@ source_trace_2" data-x="-1.51" data-y="-7" x="336.775956284153" y="537.2677595628415" width="19.180327868852487" height="22.732240437158453" fill="rgba(255,0,0,0.5)" stroke="black" stroke-width="0.028153846153846154"/>AUTOROUTING PHASE 2 START: 2 CONNECTIONS, 0 TRACES + >AUTOROUTING PHASE 2 START: 2 CONNECTIONS, 2 TRACES - AUTOROUTING PHASE 2 START: 2 CONNECTIONS, 0 TRACES + >AUTOROUTING PHASE 2 START: 2 CONNECTIONS, 2 TRACES - - AUTOROUTING PHASE 2 START: 1 CONNECTIONS, 0 TRACES + >AUTOROUTING PHASE 2 START: 1 CONNECTIONS, 1 TRACES - AUTOROUTING PHASE 2 START: 1 CONNECTIONS, 0 TRACES + >AUTOROUTING PHASE 2 START: 1 CONNECTIONS, 1 TRACES - AUTOROUTING PHASE 2 START: 2 CONNECTIONS, 0 TRACES + >AUTOROUTING PHASE 2 START: 2 CONNECTIONS, 1 TRACES - AUTOROUTING PHASE 2 START: 1 CONNECTIONS, 0 TRACES + >AUTOROUTING PHASE 2 START: 1 CONNECTIONS, 2 TRACES - U1${REFERENCE}JST_PH_B2B-PH-SM4-TB_1x02-1MP_P2.00mm_Vertical \ No newline at end of file +U1${REFERENCE}JST_PH_B2B-PH-SM4-TB_1x02-1MP_P2.00mm_Vertical \ No newline at end of file diff --git a/tests/features/__snapshots__/kicad-usb-connector-footprint.snap.svg b/tests/features/__snapshots__/kicad-usb-connector-footprint.snap.svg index 5e57536cdd..034d22ba74 100644 --- a/tests/features/__snapshots__/kicad-usb-connector-footprint.snap.svg +++ b/tests/features/__snapshots__/kicad-usb-connector-footprint.snap.svg @@ -1 +1 @@ -U1${REFERENCE}USB3_A_Molex_48393-001 \ No newline at end of file +U1${REFERENCE}USB3_A_Molex_48393-001 \ No newline at end of file diff --git a/tests/footprint/__snapshots__/footprint-library-map2-pcb.snap.svg b/tests/footprint/__snapshots__/footprint-library-map2-pcb.snap.svg index 80ad6b8b83..f40b3353f6 100644 --- a/tests/footprint/__snapshots__/footprint-library-map2-pcb.snap.svg +++ b/tests/footprint/__snapshots__/footprint-library-map2-pcb.snap.svg @@ -1 +1 @@ -R2R1R1R1 \ No newline at end of file +R2R1R1R1 \ No newline at end of file diff --git a/tests/repros/__snapshots__/repro-gameboy-direct-subcircuit-routing-pcb.snap.svg b/tests/repros/__snapshots__/repro-gameboy-direct-subcircuit-routing-pcb.snap.svg index fe8c6e0279..bff0d1a8e1 100644 --- a/tests/repros/__snapshots__/repro-gameboy-direct-subcircuit-routing-pcb.snap.svg +++ b/tests/repros/__snapshots__/repro-gameboy-direct-subcircuit-routing-pcb.snap.svg @@ -1 +1 @@ -U1U_FLASHU_USBC1C2C3C4R_USB_DMR_USB_DPU_CONTROLSU_DISPLAY_AUDIOMCU virtual breakout routing (no physical headers) \ No newline at end of file +U1U_FLASHU_USBC1C2C3C4R_USB_DMR_USB_DPU_CONTROLSU_DISPLAY_AUDIOMCU virtual breakout routing (no physical headers) \ No newline at end of file diff --git a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-center.snap.svg b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-center.snap.svg index c367192fbe..17dc993dbc 100644 --- a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-center.snap.svg +++ b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-center.snap.svg @@ -13,7 +13,7 @@ >LEFT: IMPORTED ARDUINO UNO - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED CENTER 10MM + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED CENTER 10MM @@ -30,7 +30,7 @@ >RIGHT: REROUTED REGION - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED CENTER 10MM + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED CENTER 10MM \ No newline at end of file diff --git a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-invalid-source-ids.snap.svg b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-invalid-source-ids.snap.svg index 0c75596058..6ca6189496 100644 --- a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-invalid-source-ids.snap.svg +++ b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-invalid-source-ids.snap.svg @@ -13,7 +13,7 @@ >LEFT: IMPORTED ARDUINO UNO - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenINVALID SOURCE ID REPRO + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenINVALID SOURCE ID REPRO @@ -30,7 +30,7 @@ >RIGHT: REROUTED REGION - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenINVALID SOURCE ID REPRO + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenINVALID SOURCE ID REPRO \ No newline at end of file diff --git a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-left-right.snap.svg b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-left-right.snap.svg index 3e61c6ce9f..514e519e6b 100644 --- a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-left-right.snap.svg +++ b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-left-right.snap.svg @@ -13,7 +13,7 @@ >LEFT: IMPORTED ARDUINO UNO - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED REGION 10MM + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED REGION 10MM @@ -30,7 +30,7 @@ >RIGHT: REROUTED REGION - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED REGION 10MM + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED REGION 10MM \ No newline at end of file diff --git a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-lower-mid.snap.svg b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-lower-mid.snap.svg index 72df2d2ae3..529c4bd108 100644 --- a/tests/repros/__snapshots__/repro116-arduino-uno-reroute-lower-mid.snap.svg +++ b/tests/repros/__snapshots__/repro116-arduino-uno-reroute-lower-mid.snap.svg @@ -13,7 +13,7 @@ >LEFT: IMPORTED ARDUINO UNO - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED LOWER MID 10MM + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED LOWER MID 10MM @@ -30,7 +30,7 @@ >RIGHT: REROUTED REGION - Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PJ8PCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRU5SolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT223U15pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2F2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PQ1M20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED LOWER MID 10MM + Y2C1U4J8U2S1U5U1J2J9F2C2Q1LFXTAL003240BULKY2ATMEGA16U2-MUU3CSTNE16M0V530000R0Y1100nC9PPTC101LFBN-RCJ447uCD1206-S01575D222pC11100nC31kΩ@100MHzFB1100nC4ATMEGA328P-PUU4YELLOWD4100nC6100nC12100nC7USB_C_Receptacle_USB2.0_16PPCB EdgeLP2985-3.3U2CGRB307-GD11uC10TS06-667-30-BK-100-G-SMT-TR22pC13PPTC061LFBN-RCJ6LMV358IDGKRSolderJumper_2_OpenFiducialFID1PPTC081LFBN-RCJ7NCP1117-5.0_SOT2235pF@1MHzZ15k1R3M20-9980245J21kRN25k1R41MR2FiducialFID3PJ-102AHJ9YELLOWD510kRN122RRN310uHFB21kRN4MF-MSMF050-2PPTC081LFBN-RCJ51uC5FiducialFID25pF@1MHzZ21MR1CD1206-S01575D347uGREEND7M20-9980345J1100nC8FDN340PM20-9980345J3YELLOWD6SolderJumper_2_OpenREROUTED LOWER MID 10MM \ No newline at end of file diff --git a/tests/repros/__snapshots__/repro87-trace-overlap.snap.svg b/tests/repros/__snapshots__/repro87-trace-overlap.snap.svg index eeb1ce8c98..c78dbc4bd2 100644 --- a/tests/repros/__snapshots__/repro87-trace-overlap.snap.svg +++ b/tests/repros/__snapshots__/repro87-trace-overlap.snap.svg @@ -1 +1 @@ -R1R2R3C1 \ No newline at end of file +R1R2R3C1 \ No newline at end of file diff --git a/tests/repros/repro10-usb-c-flashlight/__snapshots__/repro10-usbc-flashlight-panel-pcb.snap.svg b/tests/repros/repro10-usb-c-flashlight/__snapshots__/repro10-usbc-flashlight-panel-pcb.snap.svg index c8523d8cf7..254da89d9f 100644 --- a/tests/repros/repro10-usb-c-flashlight/__snapshots__/repro10-usbc-flashlight-panel-pcb.snap.svg +++ b/tests/repros/repro10-usb-c-flashlight/__snapshots__/repro10-usbc-flashlight-panel-pcb.snap.svg @@ -1 +1 @@ -LEDR1LEDR1LEDR1R1C1 \ No newline at end of file +LEDR1LEDR1LEDR1R1C1 \ No newline at end of file From a3e8e5279421ca1ea5e47273c58e599d097ce443 Mon Sep 17 00:00:00 2001 From: seveibar Date: Fri, 7 Aug 2026 14:43:49 -0700 Subject: [PATCH 04/11] Use image-utils as a peer only --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index f7a1885fe0..02378f7ef4 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/fanout-solver": "0.0.14", "@tscircuit/footprinter": "^0.0.409", - "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.3", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#e08af159db01a37db007e33f0a7268d0e4a279a5", From c60d06b607e581450d18067483811278e80ba7ac Mon Sep 17 00:00:00 2001 From: seveibar Date: Fri, 7 Aug 2026 14:58:46 -0700 Subject: [PATCH 05/11] Keep image tooling as development dependencies --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 01f3e6d42b..b85001e593 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "@tscircuit/create-fdm-enclosure": "0.0.3", "@tscircuit/fanout-solver": "0.0.14", "@tscircuit/footprinter": "^0.0.409", + "@tscircuit/image-utils": "^0.0.8", "@tscircuit/infer-cable-insertion-point": "^0.0.3", "@tscircuit/infgrid-ijump-astar": "^0.0.35", "@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#e08af159db01a37db007e33f0a7268d0e4a279a5", @@ -63,6 +64,7 @@ "@types/react-dom": "^19.1.6", "@types/react-reconciler": "^0.28.9", "bpc-graph": "^0.0.57", + "bun-match-svg": "0.0.12", "calculate-elbow": "^0.0.12", "chokidar-cli": "^3.0.0", "circuit-json": "^0.0.464", @@ -98,7 +100,6 @@ "@tscircuit/circuit-json-util": "*", "@tscircuit/create-fdm-enclosure": "*", "@tscircuit/footprinter": "*", - "@tscircuit/image-utils": "*", "@tscircuit/infgrid-ijump-astar": "*", "@tscircuit/math-utils": "*", "@tscircuit/props": "*", From c6b737f608c29bd62a41d00555a59658675161b4 Mon Sep 17 00:00:00 2001 From: tscircuit-bot Date: Fri, 7 Aug 2026 22:15:41 +0000 Subject: [PATCH 06/11] Update test snapshots --- ...ematic-section-manual-placement-5.snap.svg | 206 ++++++++---------- 1 file changed, 92 insertions(+), 114 deletions(-) diff --git a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-5.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-5.snap.svg index 2cf967dfae..7fd374b36f 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-5.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-5.snap.svg @@ -6,139 +6,117 @@ .component { fill: none; stroke: rgb(132, 0, 0); } .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); } .component-pin { fill: none; stroke: rgb(132, 0, 0); } - /* Basic per-trace hover fallback */ - .trace:hover { - filter: invert(1); - } - .trace:hover .trace-crossing-outline { - opacity: 0; - } - .trace:hover .trace-junction { - filter: invert(1); - } - /* Net-hover highlighting: when a trace or its overlays are hovered, - invert color for all traces (base + overlays) sharing the same - subcircuit connectivity key. Also hide crossing outline during hover. */ - svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"] .trace-crossing-outline { opacity: 0; } .text { font-family: sans-serif; fill: rgb(0, 150, 0); } .pin-number { fill: rgb(169, 0, 0); } .port-label { fill: rgb(0, 100, 100); } .component-name { fill: rgb(0, 100, 100); } - -18,-14-18,-13-18,-12-18,-11-18,-10-18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-18,12-18,13-18,14-18,15-18,16-17,-14-17,-13-17,-12-17,-11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-17,12-17,13-17,14-17,15-17,16-16,-14-16,-13-16,-12-16,-11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-16,12-16,13-16,14-16,15-16,16-15,-14-15,-13-15,-12-15,-11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-15,12-15,13-15,14-15,15-15,16-14,-14-14,-13-14,-12-14,-11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-14,12-14,13-14,14-14,15-14,16-13,-14-13,-13-13,-12-13,-11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-13,12-13,13-13,14-13,15-13,16-12,-14-12,-13-12,-12-12,-11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-12,12-12,13-12,14-12,15-12,16-11,-14-11,-13-11,-12-11,-11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-11,12-11,13-11,14-11,15-11,16-10,-14-10,-13-10,-12-10,-11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-10,12-10,13-10,14-10,15-10,16-9,-14-9,-13-9,-12-9,-11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-9,12-9,13-9,14-9,15-9,16-8,-14-8,-13-8,-12-8,-11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-8,12-8,13-8,14-8,15-8,16-7,-14-7,-13-7,-12-7,-11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-7,12-7,13-7,14-7,15-7,16-6,-14-6,-13-6,-12-6,-11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-6,12-6,13-6,14-6,15-6,16-5,-14-5,-13-5,-12-5,-11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-5,12-5,13-5,14-5,15-5,16-4,-14-4,-13-4,-12-4,-11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-4,12-4,13-4,14-4,15-4,16-3,-14-3,-13-3,-12-3,-11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-3,12-3,13-3,14-3,15-3,16-2,-14-2,-13-2,-12-2,-11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-2,12-2,13-2,14-2,15-2,16-1,-14-1,-13-1,-12-1,-11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,11-1,12-1,13-1,14-1,15-1,160,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,161,-141,-131,-121,-111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,111,121,131,141,151,162,-142,-132,-122,-112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,112,122,132,142,152,163,-143,-133,-123,-113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,113,123,133,143,153,164,-144,-134,-124,-114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,114,124,134,144,154,165,-145,-135,-125,-115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,115,125,135,145,155,166,-146,-136,-126,-116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,116,126,136,146,156,167,-147,-137,-127,-117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,117,127,137,147,157,168,-148,-138,-128,-118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,118,128,138,148,158,169,-149,-139,-129,-119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,119,129,139,149,159,1610,-1410,-1310,-1210,-1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1110,1210,1310,1410,1510,1611,-1411,-1311,-1211,-1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1111,1211,1311,1411,1511,1612,-1412,-1312,-1212,-1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1112,1212,1312,1412,1512,1613,-1413,-1313,-1213,-1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1113,1213,1313,1413,1513,1614,-1414,-1314,-1214,-1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1114,1214,1314,1414,1514,1615,-1415,-1315,-1215,-1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1115,1215,1315,1415,1515,1616,-1416,-1316,-1216,-1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,1116,1216,1316,1416,1516,1617,-1417,-1317,-1217,-1117,-1017,-917,-817,-717,-617,-517,-417,-317,-217,-117,017,117,217,317,417,517,617,717,817,917,1017,1117,1217,1317,1417,1517,1618,-1418,-1318,-1218,-1118,-1018,-918,-818,-718,-618,-518,-418,-318,-218,-118,018,118,218,318,418,518,618,718,818,918,1018,1118,1218,1318,1418,1518,1619,-1419,-1319,-1219,-1119,-1019,-919,-819,-719,-619,-519,-419,-319,-219,-119,019,119,219,319,419,519,619,719,819,919,1019,1119,1219,1319,1419,1519,1620,-1420,-1320,-1220,-1120,-1020,-920,-820,-720,-620,-520,-420,-320,-220,-120,020,120,220,320,420,520,620,720,820,920,1020,1120,1220,1320,1420,1520,16U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3-18,-14-18,-13-18,-12-18,-11-18,-10-18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-18,12-18,13-18,14-18,15-18,16-17,-14-17,-13-17,-12-17,-11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-17,12-17,13-17,14-17,15-17,16-16,-14-16,-13-16,-12-16,-11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-16,12-16,13-16,14-16,15-16,16-15,-14-15,-13-15,-12-15,-11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-15,12-15,13-15,14-15,15-15,16-14,-14-14,-13-14,-12-14,-11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-14,12-14,13-14,14-14,15-14,16-13,-14-13,-13-13,-12-13,-11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-13,12-13,13-13,14-13,15-13,16-12,-14-12,-13-12,-12-12,-11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-12,12-12,13-12,14-12,15-12,16-11,-14-11,-13-11,-12-11,-11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-11,12-11,13-11,14-11,15-11,16-10,-14-10,-13-10,-12-10,-11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-10,12-10,13-10,14-10,15-10,16-9,-14-9,-13-9,-12-9,-11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-9,12-9,13-9,14-9,15-9,16-8,-14-8,-13-8,-12-8,-11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-8,12-8,13-8,14-8,15-8,16-7,-14-7,-13-7,-12-7,-11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-7,12-7,13-7,14-7,15-7,16-6,-14-6,-13-6,-12-6,-11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-6,12-6,13-6,14-6,15-6,16-5,-14-5,-13-5,-12-5,-11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-5,12-5,13-5,14-5,15-5,16-4,-14-4,-13-4,-12-4,-11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-4,12-4,13-4,14-4,15-4,16-3,-14-3,-13-3,-12-3,-11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-3,12-3,13-3,14-3,15-3,16-2,-14-2,-13-2,-12-2,-11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-2,12-2,13-2,14-2,15-2,16-1,-14-1,-13-1,-12-1,-11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,11-1,12-1,13-1,14-1,15-1,160,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,161,-141,-131,-121,-111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,111,121,131,141,151,162,-142,-132,-122,-112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,112,122,132,142,152,163,-143,-133,-123,-113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,113,123,133,143,153,164,-144,-134,-124,-114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,114,124,134,144,154,165,-145,-135,-125,-115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,115,125,135,145,155,166,-146,-136,-126,-116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,116,126,136,146,156,167,-147,-137,-127,-117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,117,127,137,147,157,168,-148,-138,-128,-118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,118,128,138,148,158,169,-149,-139,-129,-119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,119,129,139,149,159,1610,-1410,-1310,-1210,-1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1110,1210,1310,1410,1510,1611,-1411,-1311,-1211,-1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1111,1211,1311,1411,1511,1612,-1412,-1312,-1212,-1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1112,1212,1312,1412,1512,1613,-1413,-1313,-1213,-1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1113,1213,1313,1413,1513,1614,-1414,-1314,-1214,-1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1114,1214,1314,1414,1514,1615,-1415,-1315,-1215,-1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1115,1215,1315,1415,1515,1616,-1416,-1316,-1216,-1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,1116,1216,1316,1416,1516,1617,-1417,-1317,-1217,-1117,-1017,-917,-817,-717,-617,-517,-417,-317,-217,-117,017,117,217,317,417,517,617,717,817,917,1017,1117,1217,1317,1417,1517,1618,-1418,-1318,-1218,-1118,-1018,-918,-818,-718,-618,-518,-418,-318,-218,-118,018,118,218,318,418,518,618,718,818,918,1018,1118,1218,1318,1418,1518,1619,-1419,-1319,-1219,-1119,-1019,-919,-819,-719,-619,-519,-419,-319,-219,-119,019,119,219,319,419,519,619,719,819,919,1019,1119,1219,1319,1419,1519,1620,-1420,-1320,-1220,-1120,-1020,-920,-820,-720,-620,-520,-420,-320,-220,-120,020,120,220,320,420,520,620,720,820,920,1020,1120,1220,1320,1420,1520,16U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCGNDGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3ADC_INADC_INADC_INADC_INADC_INADC_INSDASDASDASDASDASDASCLSCLSCLSCLTXTXTXTXRXTXRXRXRXRXLED_OUTLED_OUTLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput + " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.410641079164px"/>LED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput From 76ac9ddd1b75c939842029349a22904916a0131f Mon Sep 17 00:00:00 2001 From: tscircuit-bot Date: Fri, 7 Aug 2026 22:18:44 +0000 Subject: [PATCH 07/11] Update test snapshots --- ...ematic-section-manual-placement-2.snap.svg | 205 ++++++++---------- 1 file changed, 93 insertions(+), 112 deletions(-) diff --git a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-2.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-2.snap.svg index 43268dc499..a6a1ef9729 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-2.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-2.snap.svg @@ -6,136 +6,117 @@ .component { fill: none; stroke: rgb(132, 0, 0); } .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); } .component-pin { fill: none; stroke: rgb(132, 0, 0); } - /* Basic per-trace hover fallback */ - .trace:hover { - filter: invert(1); - } - .trace:hover .trace-crossing-outline { - opacity: 0; - } - .trace:hover .trace-junction { - filter: invert(1); - } - /* Net-hover highlighting: when a trace or its overlays are hovered, - invert color for all traces (base + overlays) sharing the same - subcircuit connectivity key. Also hide crossing outline during hover. */ - svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net4"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net4"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net4"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net4"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net4"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net4"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net4"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"] .trace-crossing-outline { opacity: 0; } .text { font-family: sans-serif; fill: rgb(0, 150, 0); } .pin-number { fill: rgb(169, 0, 0); } .port-label { fill: rgb(0, 100, 100); } .component-name { fill: rgb(0, 100, 100); } - -17,-11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1116,-1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCVCCGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3-17,-12-17,-11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-12-16,-11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-12-15,-11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-12-14,-11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-12-13,-11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-12-12,-11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-12-11,-11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-12-10,-11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-12-9,-11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-12-8,-11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-12-7,-11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-12-6,-11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-12-5,-11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-12-4,-11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-12-3,-11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-12-2,-11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-12-1,-11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-121,-111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-122,-112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-123,-113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-124,-114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-125,-115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-126,-116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-127,-117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-128,-118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-129,-119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-1210,-1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-1211,-1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-1212,-1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-1213,-1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-1214,-1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-1215,-1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1116,-1216,-1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCVCCGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3ADC_INADC_INADC_INADC_INADC_INADC_INSDASDASDASDASCLSDASCLSCLTXSCLTXTXRXTXRXRXRXRXLED_OUTRXLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput + " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.5461347314380001px"/>LED_OUTLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput From c2621c05aeadeb606926b5e0f84a901f2268c78e Mon Sep 17 00:00:00 2001 From: tscircuit-bot Date: Fri, 7 Aug 2026 22:28:43 +0000 Subject: [PATCH 08/11] Update test snapshots --- ...ulator-power-rail-autorouting-srj.snap.svg | 4 +- ...sor-to-i2c-header-autorouting-srj.snap.svg | 10 +- .../copperpour-multiple-outlines-pcb.snap.svg | 2 +- .../__snapshots__/cutout-obstacles.snap.svg | 173 +++------- .../multilayer-obstacle-route.snap.svg | 2 +- ...ematic-section-manual-placement-1.snap.svg | 208 +++++------- ...ematic-section-manual-placement-4.snap.svg | 243 ++++++-------- ...bstacles-1-obstacles-with-margins.snap.svg | 317 +++--------------- ...matic-trace-obstacles-1-obstacles.snap.svg | 173 +++------- ...matic-trace-obstacles-1-schematic.snap.svg | 33 +- .../differential-pair-routing-phase.snap.svg | 36 +- ...boy-direct-subcircuit-routing-pcb.snap.svg | 2 +- 12 files changed, 359 insertions(+), 844 deletions(-) diff --git a/tests/breakout/__snapshots__/breakout-sot23-regulator-power-rail-autorouting-srj.snap.svg b/tests/breakout/__snapshots__/breakout-sot23-regulator-power-rail-autorouting-srj.snap.svg index cb5dc611a4..d12811de4b 100644 --- a/tests/breakout/__snapshots__/breakout-sot23-regulator-power-rail-autorouting-srj.snap.svg +++ b/tests/breakout/__snapshots__/breakout-sot23-regulator-power-rail-autorouting-srj.snap.svg @@ -335,7 +335,7 @@ top" data-x="4.91" data-y="4" cx="620.3990024937656" cy="178.1296758104738" r="3 >AUTOROUTING PHASE 2 END: 6 CONNECTIONS, 5 TRACES - - AUTOROUTING PHASE 2 END: 7 CONNECTIONS, 7 TRACES - FULL ROUTED CIRCUIT: 1 CONNECTIONS, 13 TRACES - - \ No newline at end of file + // Calculate real coordinates using inverse transformation + const matrix = {"a":21.37404580152672,"c":0,"e":307.17557251908397,"b":0,"d":-21.37404580152672,"f":296.48854961832063}; + // Manually invert and apply the affine transform + // Since we only use translate and scale, we can directly compute: + // x' = (x - tx) / sx + // y' = (y - ty) / sy + const sx = matrix.a; + const sy = matrix.d; + const tx = matrix.e; + const ty = matrix.f; + const realPoint = { + x: (x - tx) / sx, + y: (y - ty) / sy // Flip y back since we used negative scale + } + + coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`; + coords.setAttribute('x', (x + 5).toString()); + coords.setAttribute('y', (y - 5).toString()); + }); + document.currentScript.parentElement.addEventListener('mouseleave', () => { + document.currentScript.parentElement.getElementById('crosshair').style.display = 'none'; + }); + ]]> \ No newline at end of file diff --git a/tests/components/primitive-components/__snapshots__/multilayer-obstacle-route.snap.svg b/tests/components/primitive-components/__snapshots__/multilayer-obstacle-route.snap.svg index b81433247b..bd9795b05a 100644 --- a/tests/components/primitive-components/__snapshots__/multilayer-obstacle-route.snap.svg +++ b/tests/components/primitive-components/__snapshots__/multilayer-obstacle-route.snap.svg @@ -1 +1 @@ -R1R2R_obstacle \ No newline at end of file +R1R2R_obstacle \ No newline at end of file diff --git a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-1.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-1.snap.svg index 4e632979e7..e4450c3a33 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-1.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-1.snap.svg @@ -6,141 +6,117 @@ .component { fill: none; stroke: rgb(132, 0, 0); } .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); } .component-pin { fill: none; stroke: rgb(132, 0, 0); } - /* Basic per-trace hover fallback */ - .trace:hover { - filter: invert(1); - } - .trace:hover .trace-crossing-outline { - opacity: 0; - } - .trace:hover .trace-junction { - filter: invert(1); - } - /* Net-hover highlighting: when a trace or its overlays are hovered, - invert color for all traces (base + overlays) sharing the same - subcircuit connectivity key. Also hide crossing outline during hover. */ - svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net0"] .trace-crossing-outline { opacity: 0; } .text { font-family: sans-serif; fill: rgb(0, 150, 0); } .pin-number { fill: rgb(169, 0, 0); } .port-label { fill: rgb(0, 100, 100); } .component-name { fill: rgb(0, 100, 100); } - -18,-12-18,-11-18,-10-18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-17,-12-17,-11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-12-16,-11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-12-15,-11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-12-14,-11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-12-13,-11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-12-12,-11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-12-11,-11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-12-10,-11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-12-9,-11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-12-8,-11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-12-7,-11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-12-6,-11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-12-5,-11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-12-4,-11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-12-3,-11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-12-2,-11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-12-1,-11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-121,-111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-122,-112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-123,-113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-124,-114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-125,-115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-126,-116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-127,-117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-128,-118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-129,-119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-1210,-1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-1211,-1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-1212,-1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-1213,-1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-1214,-1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-1215,-1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCVCCGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3-18,-10-18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCVCCGNDGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3ADC_INADC_INADC_INADC_INADC_INADC_INSDASDASDASDASDASDASCLSCLSCLSCLTXTXTXTXTXTXRXRXRXRXLED_OUTLED_OUTLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput + " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.593248828334px"/>LED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput diff --git a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-4.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-4.snap.svg index 4a12d5139a..2cb8a9c2dd 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-4.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-section-manual-placement-4.snap.svg @@ -6,146 +6,117 @@ .component { fill: none; stroke: rgb(132, 0, 0); } .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); } .component-pin { fill: none; stroke: rgb(132, 0, 0); } - /* Basic per-trace hover fallback */ - .trace:hover { - filter: invert(1); - } - .trace:hover .trace-crossing-outline { - opacity: 0; - } - .trace:hover .trace-junction { - filter: invert(1); - } - /* Net-hover highlighting: when a trace or its overlays are hovered, - invert color for all traces (base + overlays) sharing the same - subcircuit connectivity key. Also hide crossing outline during hover. */ - svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net1"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net2"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net5"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"], g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="unnamedsubcircuitsubcircuit_source_group_0_connectivity_net8"] .trace-crossing-outline { opacity: 0; } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) :is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]) { filter: invert(1); } -svg:has(:is(g.trace[data-subcircuit-connectivity-map-key="undefined"], g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"]):hover) g.trace-overlays[data-subcircuit-connectivity-map-key="undefined"] .trace-crossing-outline { opacity: 0; } .text { font-family: sans-serif; fill: rgb(0, 150, 0); } .pin-number { fill: rgb(169, 0, 0); } .port-label { fill: rgb(0, 100, 100); } .component-name { fill: rgb(0, 100, 100); } - -18,-11-18,-10-18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-17,-11-17,-10-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-11-16,-10-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-11-15,-10-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-11-14,-10-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-11-13,-10-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-11-12,-10-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-11-11,-10-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-11-10,-10-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-11-9,-10-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-11-8,-10-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-11-7,-10-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-11-6,-10-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-11-5,-10-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-11-4,-10-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-11-3,-10-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-11-2,-10-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-11-1,-10-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-111,-101,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-112,-102,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-113,-103,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-114,-104,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-115,-105,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-116,-106,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-117,-107,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-118,-108,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-119,-109,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-1110,-1010,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-1111,-1011,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-1112,-1012,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-1113,-1013,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-1114,-1014,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-1115,-1015,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1116,-1116,-1016,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,1117,-1117,-1017,-917,-817,-717,-617,-517,-417,-317,-217,-117,017,117,217,317,417,517,617,717,817,917,1017,1118,-1118,-1018,-918,-818,-718,-618,-518,-418,-318,-218,-118,018,118,218,318,418,518,618,718,818,918,1018,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCGNDGNDGNDGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3ADC_INADC_INADC_INSDASDASDASCLSCLTXTXTXRXRXLED_OUTLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput + + -18,-9-18,-8-18,-7-18,-6-18,-5-18,-4-18,-3-18,-2-18,-1-18,0-18,1-18,2-18,3-18,4-18,5-18,6-18,7-18,8-18,9-18,10-18,11-17,-9-17,-8-17,-7-17,-6-17,-5-17,-4-17,-3-17,-2-17,-1-17,0-17,1-17,2-17,3-17,4-17,5-17,6-17,7-17,8-17,9-17,10-17,11-16,-9-16,-8-16,-7-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-16,10-16,11-15,-9-15,-8-15,-7-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-15,10-15,11-14,-9-14,-8-14,-7-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-14,10-14,11-13,-9-13,-8-13,-7-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-13,10-13,11-12,-9-12,-8-12,-7-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-12,10-12,11-11,-9-11,-8-11,-7-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-11,10-11,11-10,-9-10,-8-10,-7-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-10,10-10,11-9,-9-9,-8-9,-7-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-9,10-9,11-8,-9-8,-8-8,-7-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-8,10-8,11-7,-9-7,-8-7,-7-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-7,10-7,11-6,-9-6,-8-6,-7-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-6,10-6,11-5,-9-5,-8-5,-7-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-5,10-5,11-4,-9-4,-8-4,-7-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-4,10-4,11-3,-9-3,-8-3,-7-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-3,10-3,11-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,118,-98,-88,-78,-68,-58,-48,-38,-28,-18,08,18,28,38,48,58,68,78,88,98,108,119,-99,-89,-79,-69,-59,-49,-39,-29,-19,09,19,29,39,49,59,69,79,89,99,109,1110,-910,-810,-710,-610,-510,-410,-310,-210,-110,010,110,210,310,410,510,610,710,810,910,1010,1111,-911,-811,-711,-611,-511,-411,-311,-211,-111,011,111,211,311,411,511,611,711,811,911,1011,1112,-912,-812,-712,-612,-512,-412,-312,-212,-112,012,112,212,312,412,512,612,712,812,912,1012,1113,-913,-813,-713,-613,-513,-413,-313,-213,-113,013,113,213,313,413,513,613,713,813,913,1013,1114,-914,-814,-714,-614,-514,-414,-314,-214,-114,014,114,214,314,414,514,614,714,814,914,1014,1115,-915,-815,-715,-615,-515,-415,-315,-215,-115,015,115,215,315,415,515,615,715,815,915,1015,1116,-916,-816,-716,-616,-516,-416,-316,-216,-116,016,116,216,316,416,516,616,716,816,916,1016,1117,-917,-817,-717,-617,-517,-417,-317,-217,-117,017,117,217,317,417,517,617,717,817,917,1017,11U11VIN2GND3EN4ADJ5FB6NC8VOUTC110uFC2100nFR1100kΩU21VCC2GND3PB04PB15PB26PB37SDA8SCL9TX10RX11ADC012ADC113LED14RST15XTAL116XTAL2C3100nFR210kΩR310kΩU31VCC2GND3SDA4SCL5INT6ADDR7NCC4100nFR41kΩU41VCC2GND3TX4RX5CTS6RTS7NCC5100nFR533ΩPWRD1STATUSD2R6330ΩR7330ΩVCCVCCGNDGNDGNDGNDGNDGNDGNDGNDVCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3VCC_3V3ADC_INADC_INADC_INSDASDASDASCLSCLTXTXTXRXRXLED_OUTLED_OUTPower SupplyMicrocontrollerSensorsCommunicationOutput diff --git a/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles-with-margins.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles-with-margins.snap.svg index 803e08b678..7fcba01ec4 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles-with-margins.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles-with-margins.snap.svg @@ -1,275 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + // Calculate real coordinates using inverse transformation + const matrix = {"a":55.390702274975276,"c":0,"e":189.83184965380812,"b":0,"d":-55.390702274975276,"f":320}; + // Manually invert and apply the affine transform + // Since we only use translate and scale, we can directly compute: + // x' = (x - tx) / sx + // y' = (y - ty) / sy + const sx = matrix.a; + const sy = matrix.d; + const tx = matrix.e; + const ty = matrix.f; + const realPoint = { + x: (x - tx) / sx, + y: (y - ty) / sy // Flip y back since we used negative scale + } + + coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`; + coords.setAttribute('x', (x + 5).toString()); + coords.setAttribute('y', (y - 5).toString()); + }); + document.currentScript.parentElement.addEventListener('mouseleave', () => { + document.currentScript.parentElement.getElementById('crosshair').style.display = 'none'; + }); + ]]> \ No newline at end of file diff --git a/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles.snap.svg index 46f6287fa8..61000c0b69 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-obstacles.snap.svg @@ -1,131 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + // Calculate real coordinates using inverse transformation + const matrix = {"a":69.05055487053022,"c":0,"e":157.731196054254,"b":0,"d":-69.05055487053022,"f":320}; + // Manually invert and apply the affine transform + // Since we only use translate and scale, we can directly compute: + // x' = (x - tx) / sx + // y' = (y - ty) / sy + const sx = matrix.a; + const sy = matrix.d; + const tx = matrix.e; + const ty = matrix.f; + const realPoint = { + x: (x - tx) / sx, + y: (y - ty) / sy // Flip y back since we used negative scale + } + + coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`; + coords.setAttribute('x', (x + 5).toString()); + coords.setAttribute('y', (y - 5).toString()); + }); + document.currentScript.parentElement.addEventListener('mouseleave', () => { + document.currentScript.parentElement.getElementById('crosshair').style.display = 'none'; + }); + ]]> \ No newline at end of file diff --git a/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-schematic.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-schematic.snap.svg index 50d60c50b6..c435d0ba2d 100644 --- a/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-schematic.snap.svg +++ b/tests/components/primitive-components/__snapshots__/schematic-trace-obstacles-1-schematic.snap.svg @@ -1,39 +1,12 @@ --2,-2-2,-1.5-2,-1-2,-0.5-2,0-2,0.5-2,1-2,1.5-2,2-1.5,-2-1.5,-1.5-1.5,-1-1.5,-0.5-1.5,0-1.5,0.5-1.5,1-1.5,1.5-1.5,2-1,-2-1,-1.5-1,-1-1,-0.5-1,0-1,0.5-1,1-1,1.5-1,2-0.5,-2-0.5,-1.5-0.5,-1-0.5,-0.5-0.5,0-0.5,0.5-0.5,1-0.5,1.5-0.5,20,-20,-1.50,-10,-0.50,00,0.50,10,1.50,20.5,-20.5,-1.50.5,-10.5,-0.50.5,00.5,0.50.5,10.5,1.50.5,21,-21,-1.51,-11,-0.51,01,0.51,11,1.51,21.5,-21.5,-1.51.5,-11.5,-0.51.5,01.5,0.51.5,11.5,1.51.5,22,-22,-1.52,-12,-0.52,02,0.52,12,1.52,22.5,-22.5,-1.52.5,-12.5,-0.52.5,02.5,0.52.5,12.5,1.52.5,23,-23,-1.53,-13,-0.53,03,0.53,13,1.53,23.5,-23.5,-1.53.5,-13.5,-0.53.5,03.5,0.53.5,13.5,1.53.5,24,-24,-1.54,-14,-0.54,04,0.54,14,1.54,24.5,-24.5,-1.54.5,-14.5,-0.54.5,04.5,0.54.5,14.5,1.54.5,25,-25,-1.55,-15,-0.55,05,0.55,15,1.55,25.5,-25.5,-1.55.5,-15.5,-0.55.5,05.5,0.55.5,15.5,1.55.5,26,-26,-1.56,-16,-0.56,06,0.56,16,1.56,26.5,-26.5,-1.56.5,-16.5,-0.56.5,06.5,0.56.5,16.5,1.56.5,27,-27,-1.57,-17,-0.57,07,0.57,17,1.57,2U112345678910111213141516R1100Ω \ No newline at end of file diff --git a/tests/components/primitive-components/differential-pair/__snapshots__/differential-pair-routing-phase.snap.svg b/tests/components/primitive-components/differential-pair/__snapshots__/differential-pair-routing-phase.snap.svg index 8d9d1fca67..ee070961b9 100644 --- a/tests/components/primitive-components/differential-pair/__snapshots__/differential-pair-routing-phase.snap.svg +++ b/tests/components/primitive-components/differential-pair/__snapshots__/differential-pair-routing-phase.snap.svg @@ -11,10 +11,22 @@ font-size="18" font-weight="700" text-anchor="middle" - >FULL ROUTED CIRCUIT: 0 CONNECTIONS, 2 TRACES + >AUTOROUTING PHASE 1 START: 2 CONNECTIONS, 0 TRACES -