),\n \"screen uses the OEM STEP-derived GLB assembly rather than a generic slab\")\nassert.ok(nearly(screenCad.position.x, 40.8) \u0026\u0026 nearly(screenCad.position.y, 15),\n \"screen 3D model is anchored to J_LCD\")\nassert.ok(nearly(screenCad.rotation.z, 90),\n \"screen 3D model extends left from the right-side J_LCD cable-entry axis\")\nconst screenGlb = readGlbJson(`assets/${screenModelFile}`)\nconst screenNode = screenGlb.nodes?.find(({ name }) =\u003e name === \"ER-TFT035-6-OEM-installed\")\nassert.ok(screenNode, \"screen GLB contains the named OEM node\")\nconst screenMesh = screenGlb.meshes?.[screenNode.mesh]\nassert.ok(screenMesh, \"screen GLB OEM node references its exported mesh\")\nassert.equal(screenNode.extras?.source, \"ER-TFT035-6.step\",\n \"screen GLB identifies the manufacturer STEP source\")\nassert.equal(screenNode.extras?.rigidGeometry, \"OEM STEP, unscaled\",\n \"screen GLB records unscaled rigid OEM geometry\")\nassert.ok(nearly(screenNode.extras?.rigidPanelWidthMm, 84.96) \u0026\u0026\n nearly(screenNode.extras?.rigidPanelHeightMm, 56.54),\n \"screen GLB records the exact 84.96 x 56.54 mm rigid outline\")\nassert.ok(nearly(screenNode.extras?.flexPathLengthMm, 30),\n \"screen GLB records an exact 30 mm installed FPC path\")\nassert.ok(screenNode.extras?.minimumInstalledBendRadiusMm \u003e= 2.0,\n `installed display flex bend radius is too small: ${screenNode.extras?.minimumInstalledBendRadiusMm}`)\nassert.ok(screenNode.extras?.bendRadiusToThicknessRatio \u003e= 10,\n `installed display flex bend ratio is too small: ${screenNode.extras?.bendRadiusToThicknessRatio}`)\nconst screenPositionAccessors = screenMesh.primitives\n .map(({ attributes }) =\u003e screenGlb.accessors[attributes.POSITION])\nconst screenModelMinLocalX = Math.min(...screenPositionAccessors.map(({ min }) =\u003e min[0]))\nconst screenModelMaxLocalX = Math.max(...screenPositionAccessors.map(({ max }) =\u003e max[0]))\nconst screenInstalledLateralOffsetMm = screenNode.extras.installedPanelLateralOffsetMm\nassert.ok(nearly(screenInstalledLateralOffsetMm, 0),\n \"screen GLB keeps the OEM panel and FPC on the same centerline\")\nassert.ok(nearly(screenModelMinLocalX, -28.27) \u0026\u0026 nearly(screenModelMaxLocalX, 28.27),\n \"screen GLB exported X bounds match the centered 56.54 mm rigid panel\")\nconst previousScreenTopOverhangMm = screenCad.position.y + screenModelMaxLocalX - 41\n// Positive 90-degree Z rotation extends the model's positive local Y to the\n// left of J_LCD, and maps local X onto PCB Y.\nconst screenTopEdgeY = screenCad.position.y + screenModelMaxLocalX\nassert.ok(nearly(screenTopEdgeY, boardTopY),\n \"screen top edge is exactly flush with the PCB top edge\")\n\nconst printedPartNames = [\n \"GBA_CASE_BASE\", \"GBA_CASE_LID\", \"GBA_BATTERY_DOOR\",\n \"LCD_CARRIER\", \"SPK_RETAINER\", \"DPAD_CAP\", \"BUTTON_CAP_A\", \"BUTTON_CAP_B\",\n \"BUTTON_CAP_X\", \"BUTTON_CAP_Y\", \"BUTTON_CAP_SELECT\", \"BUTTON_CAP_START\",\n \"SHOULDER_PADDLE_L\", \"SHOULDER_PADDLE_R\",\n]\nconst printedPartCad = new Map()\nfor (const name of printedPartNames) {\n const source = componentByName.get(name)\n assert.ok(source, `native printed part ${name} exists`)\n assert.equal(source.ftype, \"printedpart\", `${name} uses the native printed-part API`)\n assert.equal(source.material, \"petg\", `${name} has its intended printable material`)\n const models = of(\"cad_component\").filter((cad) =\u003e\n cad.source_component_id === source.source_component_id)\n assert.equal(models.length, 1, `${name} emits exactly one printable solid`)\n assert.equal(models[0].model_jscad?.type, \"rotate\", `${name} has native JSCAD geometry`)\n assert.ok(models[0].model_jscad?.shape, `${name} has a nonempty authored shape`)\n printedPartCad.set(name, models[0])\n}\n\nconst baseShape = printedPartCad.get(\"GBA_CASE_BASE\").model_jscad.shape\nconst lidShape = printedPartCad.get(\"GBA_CASE_LID\").model_jscad.shape\nconst batteryDoorShape = printedPartCad.get(\"GBA_BATTERY_DOOR\").model_jscad.shape\nconst carrierShape = printedPartCad.get(\"LCD_CARRIER\").model_jscad.shape\nconst dpadShape = printedPartCad.get(\"DPAD_CAP\").model_jscad.shape\nassert.equal(baseShape.type, \"subtract\", \"base is a printable shell with authored openings\")\nassert.equal(lidShape.type, \"subtract\", \"lid is a printable bezel with authored openings\")\nassert.equal(batteryDoorShape.type, \"subtract\", \"battery door has an authored panel, tongue, integral latch, and thumb dimple\")\nassert.equal(carrierShape.type, \"subtract\", \"LCD carrier includes blind screw pilots\")\nconst baseOuterPrism = baseShape.shapes[0].shapes[0].shapes[0]\nconst baseInnerPrism = baseShape.shapes[0].shapes[0].shapes[1]\nassert.equal(baseOuterPrism.type, \"translate\", \"base exterior is an extruded board-profile polygon\")\nassert.equal(baseInnerPrism.type, \"translate\", \"base cavity uses an independent inset profile\")\nassert.equal(baseOuterPrism.shape.shape.points.length, board.outline.length,\n \"manual enclosure preserves every rounded/chamfered board-outline segment\")\nassert.ok(nearly(baseOuterPrism.shape.options.height, 29),\n \"continuous base wall reaches the authored lid datum from the two-AA depth\")\nassert.ok(nearly(baseInnerPrism.shape.options.height, 27.8),\n \"continuous base has a 1.6 mm rear floor\")\nconst bottomOuterY = Math.min(...baseOuterPrism.shape.shape.points.map(([, y]) =\u003e y))\nconst bottomInnerY = Math.min(...baseInnerPrism.shape.shape.points.map(([, y]) =\u003e y))\nassert.ok(nearly(bottomInnerY - bottomOuterY, 1.4),\n \"continuous base keeps a 1.4 mm wall after adding 0.8 mm PCB assembly clearance\")\nconst batteryCradleShape = baseShape.shapes[0].shapes.find((shape) =\u003e\n shape.type === \"union\" \u0026\u0026 shape.shapes?.length === 9 \u0026\u0026\n shape.shapes[0]?.shape?.size?.[1] === 58.1)\nconst batteryDoorOpening = baseShape.shapes.find((shape) =\u003e\n shape.type === \"union\" \u0026\u0026 shape.shapes?.[1]?.shape?.size?.[0] === 33.6)\nconst batteryDoorRebate = baseShape.shapes.find((shape) =\u003e\n shape.type === \"union\" \u0026\u0026 shape.shapes?.[1]?.shape?.size?.[0] === 37)\nassert.equal(batteryCradleShape.type, \"union\", \"base includes an integrated two-AA cradle\")\nassert.equal(batteryCradleShape.shapes.length, 9,\n \"two-AA cradle has side rails, center rib, contact bulkheads, shelves, and two wire clips\")\nassert.deepEqual(batteryCradleShape.shapes[0].shape.size, [1.6, 58.1, 6],\n \"two-AA cradle side rails overlap the 57.7 mm inside-wall contact layout\")\nassert.deepEqual(batteryCradleShape.shapes[2].shape.size, [1.2, 58.1, 2.4],\n \"two-AA cradle has a low center separator joined to both contact bulkheads\")\nassert.ok(nearly(batteryCradleShape.shapes[3].shape.size[1], 1.65) \u0026\u0026\n nearly(batteryCradleShape.shapes[4].shape.size[1], 1.65),\n \"battery contact bulkheads stay inside Keystone's 1.52-1.78 mm snap-on wall range\")\nconst batteryInsideWallLengthMm =\n (batteryCradleShape.shapes[4].vector[1] - batteryCradleShape.shapes[4].shape.size[1] / 2) -\n (batteryCradleShape.shapes[3].vector[1] + batteryCradleShape.shapes[3].shape.size[1] / 2)\nassert.ok(nearly(batteryInsideWallLengthMm, 57.7),\n \"209/210 two-cell series contact bulkheads use the specified 57.7 mm inside-wall spacing\")\nassert.equal(batteryDoorOpening.type, \"union\", \"base has a rounded removable-door opening\")\nassert.equal(batteryDoorRebate.type, \"union\", \"base has a shallow flush-door rebate\")\nassert.deepEqual(batteryDoorOpening.shapes[1].shape.size, [33.6, 49.6, 2.4],\n \"battery door opening is 33.6 x 56 mm with rounded corners\")\nassert.deepEqual(batteryDoorRebate.shapes[1].shape.size, [37, 51.4, 1.25],\n \"battery door rebate is 37 x 59.4 mm and 1.25 mm deep\")\nconst batteryDoorPanel = batteryDoorShape.shapes[0].shapes[0]\nassert.equal(batteryDoorPanel.type, \"union\", \"battery door starts with a rounded exterior panel\")\nassert.deepEqual(batteryDoorPanel.shapes[1].shape.size, [36.4, 51.4, 0.9],\n \"battery door perimeter flange is 36.4 x 58.8 mm and 0.9 mm thick\")\nconst batteryDoorReinforcement = batteryDoorShape.shapes[0].shapes[1]\nassert.equal(batteryDoorReinforcement.type, \"union\", \"battery door has an inner central reinforcement\")\nassert.ok(batteryDoorReinforcement.shapes[1].shape.size.every((value, index) =\u003e\n nearly(value, [31.6, 49.6, 0.32][index])),\n\"battery door central doubler restores a 1.2 mm section inside the through-opening\")\nconst batteryDoorUnionMembers = batteryDoorShape.shapes[0].shapes\nconst batteryLatchBeam = batteryDoorUnionMembers.find((shape) =\u003e\n shape.shape?.type === \"cuboid\" \u0026\u0026 shape.shape.size?.[0] === 7.2 \u0026\u0026 shape.shape.size?.[1] === 11.2)\nconst batteryLatchHook = batteryDoorUnionMembers.find((shape) =\u003e\n shape.shape?.type === \"cuboid\" \u0026\u0026 shape.shape.size?.[0] === 8.2 \u0026\u0026 shape.shape.size?.[1] === 2.0)\nassert.ok(batteryLatchBeam \u0026\u0026 batteryLatchHook,\n \"battery door has an integral cantilever beam and positive retaining hook\")\nassert.equal(batteryDoorShape.shapes.filter((shape) =\u003e\n shape.shape?.type === \"cuboid\" \u0026\u0026 shape.shape.size?.[0] === 0.8 \u0026\u0026 shape.shape.size?.[1] === 11.2).length, 2,\n\"battery-door latch is released by two parallel compliance slots, not a loose printed part\")\nconst findBaseCutoutAt = (x, y, z) =\u003e baseShape.shapes.find((shape) =\u003e\n shape.vector \u0026\u0026 nearly(shape.vector[0], x) \u0026\u0026 nearly(shape.vector[1], y) \u0026\u0026 nearly(shape.vector[2], z))\nconst powerSwitchOpening = findBaseCutoutAt(-72, -24, 4.28)\nconst findRoundedShoulderOpening = (x) =\u003e baseShape.shapes.find((shape) =\u003e\n shape.type === \"translate\" \u0026\u0026 shape.shape?.type === \"roundedCuboid\" \u0026\u0026\n nearly(shape.vector[0], x) \u0026\u0026 nearly(shape.vector[1], 44.67) \u0026\u0026 nearly(shape.vector[2], 4.98))\nconst shoulderOpenings = [findRoundedShoulderOpening(-45), findRoundedShoulderOpening(45)]\nassert.deepEqual(powerSwitchOpening.shape.size, [9, 6.8, 4.2],\n \"power-slider opening retains controlled side and vertical clearance\")\nassert.deepEqual(powerSwitchOpening.vector, [-72, -24, 4.28],\n \"power-slider opening is centered on the measured actuator height\")\nfor (const [index, opening] of shoulderOpenings.entries()) {\n assert.ok(opening, `rounded shoulder guide ${index + 1} exists`)\n assert.deepEqual(opening.shape.size, [21.6, 2.4, 6.4],\n `shoulder guide ${index + 1} preserves 0.30 mm lateral/vertical running clearance`)\n assert.ok(nearly(opening.shape.roundRadius, 1.0),\n `shoulder guide ${index + 1} uses a matched radiused profile`)\n}\nconst lidPlatePrism = lidShape.shapes[0].shapes[0]\nassert.equal(lidPlatePrism.type, \"translate\", \"lid follows the same rounded board profile\")\nassert.ok(nearly(lidPlatePrism.shape.options.height, 1.6), \"lid is 1.6 mm thick\")\nconst lidRegistrationKeys = lidShape.shapes[0].shapes.slice(1, 5)\nassert.deepEqual(lidRegistrationKeys.map((key) =\u003e key.shape.size), [\n [20, 0.8, 1.8], [20, 0.8, 1.8], [0.8, 12, 1.8], [0.8, 12, 1.8],\n], \"four broad internal registration keys locate the butt seam without entering the LCD envelope\")\nassert.ok(lidRegistrationKeys.every((key) =\u003e nearly(key.vector[2], 10.7)),\n \"all registration keys engage the rear shell by 1.8 mm below the lid\")\nconst enclosureOuterPoints = baseOuterPrism.shape.shape.points\nconst enclosureOutsideWidthMm = Math.max(...enclosureOuterPoints.map(([x]) =\u003e x)) -\n Math.min(...enclosureOuterPoints.map(([x]) =\u003e x))\nconst enclosureOutsideHeightMm = Math.max(...enclosureOuterPoints.map(([, y]) =\u003e y)) -\n Math.min(...enclosureOuterPoints.map(([, y]) =\u003e y))\nconst enclosureBottomZ = -17.4\nconst enclosureTopZ = 13.2\n\nconst mechanicalHoles = of(\"pcb_hole\").filter((hole) =\u003e hole.pcb_component_id == null)\nconst expectedPcbMountHoles = [\n [-59.5, -34], [55.5, -38], [-66, 14], [62, 34.5],\n]\nconst expectedScreenHoles = [\n [-48.75, 32.75], [51, 33], [-49, -35.5], [66, -31],\n]\nconst findMechanicalHole = (x, y, diameter) =\u003e mechanicalHoles.find((hole) =\u003e\n nearly(hole.x, x) \u0026\u0026 nearly(hole.y, y) \u0026\u0026 nearly(hole.hole_diameter, diameter))\nfor (const [x, y] of expectedPcbMountHoles)\n assert.ok(findMechanicalHole(x, y, 3.3), `M3 PCB support hole exists at ${x}, ${y}`)\nconst batteryPocketBounds = { minX: -40, maxX: -8, minY: -22.25, maxY: 32.25 }\nconst rigidScreenBounds = { minX: -45.16, maxX: 39.8, minY: -13.27, maxY: 43.27 }\nconst circleToRectGap = (x, y, rectangle) =\u003e Math.hypot(\n Math.max(rectangle.minX - x, 0, x - rectangle.maxX),\n Math.max(rectangle.minY - y, 0, y - rectangle.maxY),\n)\nfor (const [x, y] of expectedPcbMountHoles) {\n assert.ok(circleToRectGap(x, y, batteryPocketBounds) \u003e= 3.2,\n `PCB boss at ${x}, ${y} stays outside the battery-holder pocket`)\n assert.ok(circleToRectGap(x, y, rigidScreenBounds) \u003e= 3.2,\n `PCB boss at ${x}, ${y} stays outside the rigid LCD footprint`)\n}\nfor (const [x, y] of expectedScreenHoles) {\n const hole = findMechanicalHole(x, y, 2.7)\n assert.ok(hole, `dedicated M2.5 LCD-carrier hole exists at ${x}, ${y}`)\n let minimumTraceGap = Infinity\n for (const trace of of(\"pcb_trace\")) {\n for (let index = 1; index \u003c (trace.route?.length ?? 0); index++) {\n const start = trace.route[index - 1]\n const end = trace.route[index]\n if (start.route_type !== \"wire\" || end.route_type !== \"wire\") continue\n minimumTraceGap = Math.min(minimumTraceGap,\n pointToSegmentDistance(hole, start, end) - 2.7 / 2 - Math.max(start.width, end.width) / 2)\n }\n }\n assert.ok(minimumTraceGap \u003e= 0.2 - 1e-6,\n `LCD hole at ${x}, ${y} has at least 0.20 mm finished-hole-to-trace clearance`)\n}\nassert.equal(mechanicalHoles.filter((hole) =\u003e nearly(hole.hole_diameter, 3.3)).length, 4,\n \"exactly four PCB-to-base support holes are present\")\nassert.equal(mechanicalHoles.filter((hole) =\u003e nearly(hole.hole_diameter, 2.7)).length, 4,\n \"exactly four independent LCD-carrier holes are present\")\n\n// Guard every previously observed carrier collision. These are the tall\n// controls/connectors whose actual 3D bodies reach the carrier's Z envelope.\nconst carrierMembers = carrierShape.shapes[0].shapes\nconst carrierStandoffs = carrierMembers.filter((member) =\u003e member.shape?.type === \"cylinder\")\nconst carrierBeams = carrierMembers.filter((member) =\u003e member.type === \"translate\" \u0026\u0026\n (member.shape?.type === \"roundedCuboid\" || member.shape?.shape?.type === \"roundedCuboid\"))\nassert.equal(carrierStandoffs.length, 4, \"LCD carrier has four independent screw standoffs\")\nassert.ok(carrierStandoffs.every((standoff) =\u003e standoff.shape.radius \u003e= 3.6),\n \"every LCD-carrier standoff has a reinforced 7.2 mm body\")\nassert.equal(carrierBeams.length, 14,\n \"LCD carrier has two bezel rails and twelve joined rounded load-path beams\")\nconst carrierLoadBeams = carrierBeams\nassert.ok(carrierLoadBeams.every((beam) =\u003e nearly(beam.shape.shape.size[2], 1.8)),\n \"LCD-carrier perimeter arms and ledges are 1.8 mm thick\")\nassert.ok(carrierLoadBeams.every((beam) =\u003e\n nearly(beam.vector[2] + beam.shape.shape.size[2] / 2, 8.2)),\n \"LCD-carrier perimeter has one planar Z=8.20 mm gasket bearing surface\")\nassert.ok(carrierLoadBeams.every((beam) =\u003e beam.shape.shape.size[1] \u003e= 4),\n \"every LCD-carrier rail or bridge is at least 4 mm wide\")\n// The carrier includes rotated and diagonal beams; source-level axis-aligned\n// rectangles are not a safe collision approximation. export-3d-assembly.mjs\n// checks every fitted GLB body against every boss and beam capsule instead.\n\nassert.equal(dpadShape.type, \"union\", \"D-pad combines a hidden socket carrier with a visible crown\")\nconst dpadSocketCarrier = dpadShape.shapes.find((shape) =\u003e shape.type === \"subtract\")\nconst dpadVisibleCrown = dpadShape.shapes.find((shape) =\u003e shape.type === \"union\")\nassert.ok(dpadSocketCarrier, \"D-pad has a subtractive socket/pivot carrier\")\nassert.ok(dpadVisibleCrown \u0026\u0026 dpadVisibleCrown.shapes.length === 2,\n \"D-pad has a complete two-arm visible cross independent of its actuator sockets\")\nconst dpadCarrierMembers = dpadSocketCarrier.shapes[0].shapes\nconst dpadCaptureRings = dpadCarrierMembers.filter((shape) =\u003e shape.type === \"subtract\" \u0026\u0026\n shape.shapes?.every((member) =\u003e member.shape?.type === \"cylinder\"))\nconst dpadCaptureRoof = dpadCarrierMembers.find((shape) =\u003e shape.shape?.type === \"cylinder\" \u0026\u0026\n nearly(shape.shape.radius, 3.4) \u0026\u0026 nearly(shape.shape.height, 0.35))\nassert.equal(dpadCaptureRings.length, 2,\n \"D-pad has two concentric retention rings around the silicone pivot\")\nassert.ok(dpadCaptureRoof, \"D-pad pivot recess has an integral retaining roof\")\nfor (const name of [\"DPAD_PIVOT_PAD\", \"BAT_CONTACT_COMMON_210\", \"BAT_CONTACT_NEG_209\",\n \"BAT_CONTACT_POS_228\", \"BAT_WIRE_NEG\", \"BAT_WIRE_POS\", \"SPK_WIRE_NEG\", \"SPK_WIRE_POS\"]) {\n const source = componentByName.get(name)\n assert.ok(source, `${name} exists in the complete mechanical assembly`)\n assert.ok(of(\"cad_component\").some((cad) =\u003e cad.source_component_id === source.source_component_id),\n `${name} has authored 3D geometry`)\n}\nconst enclosureApertureMarkers = [\n \"CASE_SCREEN_WINDOW\",\n]\nassert.equal(componentByName.has(\"CASE_RESET_ACCESS\"), false,\n \"reset is an internal service control with no front-panel aperture\")\nassert.equal(componentByName.has(\"CASE_BAT_CABLE_EXIT\"), false,\n \"internal battery lead has no exterior enclosure aperture\")\nfor (const name of [\"CASE_UART_ACCESS\", \"CASE_I2C_ACCESS\", \"CASE_SPI_ACCESS\"])\n assert.equal(componentByName.has(name), false,\n `${name} is absent because programming connectors are internal to the enclosure`)\nfor (const name of enclosureApertureMarkers) {\n assert.ok(componentByName.has(name), `${name} aperture marker exists`)\n assert.equal(pcbByName.get(name)?.do_not_place, true, `${name} is excluded from PCB assembly`)\n assert.equal(pcbByName.get(name)?.obstructs_within_bounds, false,\n `${name} cannot perturb PCB placement or routing`)\n}\n\nfor (const traceName of [\"SPK_POS_OUT\", \"SPK_NEG_OUT\"])\n assert.ok(of(\"source_trace\").some((trace) =\u003e trace.name === traceName),\n `J_SPK carries ${traceName} from the PAM8403 bridge output`)\n\nconst traces = of(\"pcb_trace\")\nassert.ok(traces.length \u003e= 250, \"dense routed design contains its expected copper traces\")\nassert.ok(!circuit.some((record) =\u003e /unrouted|trace_missing/i.test(record.type)), \"no unrouted/missing-trace records\")\n\nconst traceEndingWith = (suffix) =\u003e {\n const matches = traces.filter((trace) =\u003e trace.pcb_trace_id.endsWith(suffix))\n assert.equal(matches.length, 1, `one PCB trace ends with ${suffix}`)\n return matches[0]\n}\nconst assertMinimumWireWidth = (trace, width, label) =\u003e {\n assert.ok(trace, `${label} has generated PCB copper`)\n const wireWidths = trace.route.filter((point) =\u003e point.route_type === \"wire\").map((point) =\u003e point.width)\n assert.ok(wireWidths.length \u003e 0 \u0026\u0026 wireWidths.every((actual) =\u003e actual \u003e= width - 1e-6),\n `${label} is physically routed at least ${width.toFixed(2)} mm wide`)\n}\nconst traceById = (id) =\u003e {\n const found = traces.find((trace) =\u003e trace.pcb_trace_id === id)\n assert.ok(found, `${id} exists`)\n return found\n}\nfor (const [id, label] of [\n [\"twoaa_battery_path_0\", \"two-AA battery path\"],\n [\"twoaa_sys_sources_0\", \"USB/battery selected SYS_IN path\"],\n [\"twoaa_sys_input_0\", \"SYS_IN input-capacitor trunk\"],\n [\"twoaa_v3v3_trunk_0\", \"3V3 distribution trunk\"],\n]) assertMinimumWireWidth(traceById(id), 0.5, label)\nfor (const [id, label] of [\n [\"twoaa_input_cap_a_0\", \"buck-boost input capacitor A link\"],\n [\"twoaa_input_cap_b_0\", \"buck-boost input capacitor B link\"],\n [\"twoaa_l1_0\", \"buck-boost L1 switching link\"],\n [\"twoaa_l2_0\", \"buck-boost L2 switching link\"],\n [\"twoaa_output_cap_a_0\", \"buck-boost output capacitor A link\"],\n [\"twoaa_output_cap_b_0\", \"buck-boost output capacitor B link\"],\n [\"twoaa_output_cap_c_0\", \"buck-boost output capacitor C link\"],\n]) {\n const widths = traceById(id).route.filter((point) =\u003e point.route_type === \"wire\").map((point) =\u003e point.width)\n assert.ok(Math.max(...widths) \u003e= 0.5 - 1e-6, `${label} widens to 0.50 mm after the DSJ-package escape`)\n assert.ok(Math.min(...widths) \u003e= 0.12 - 1e-6, `${label} never falls below the 0.12 mm fabrication minimum`)\n}\nconst sourceTraceIdsByName = (name) =\u003e new Set(of(\"source_trace\")\n .filter((trace) =\u003e trace.name === name)\n .map((trace) =\u003e trace.source_trace_id))\nconst pcbTracesForSourceName = (name) =\u003e {\n const ids = sourceTraceIdsByName(name)\n return traces.filter((trace) =\u003e ids.has(trace.source_trace_id))\n}\nconst assertSourceNameWireWidth = (name, width, label = name) =\u003e {\n const matches = pcbTracesForSourceName(name)\n assert.ok(matches.length \u003e 0, `${label} has generated PCB copper`)\n for (const trace of matches) assertMinimumWireWidth(trace, width, label)\n}\nfor (const name of [\n \"LCD_BL_VIN\", \"LCD_BL_INPUT_L\", \"LCD_BL_INPUT_CAP\", \"LCD_BL_SWITCH_L\", \"LCD_BL_SWITCH_D\",\n \"LCD_BL_OUTPUT_CAP\",\n]) assertSourceNameWireWidth(name, 0.5, `${name} backlight power link`)\nassertSourceNameWireWidth(\"I2C_JST_3V3\", 0.5, \"I2C/SPI JST 3V3 branch\")\n// The panel string is regulated to 100 mA. Its board-spanning LED+ feed uses\n// the 0.12 mm fabrication minimum so it can follow the already-verified LCD\n// fanout corridor; even at 60 mm on 1 oz copper this is about 0.25 ohm / 25 mV.\n// The high-di/dt boost input, switch node, diode and local capacitor links\n// remain 0.50 mm above, where width and loop area materially affect EMI.\nassertSourceNameWireWidth(\"LCD_BL_OUTPUT\", 0.12, \"LCD_BL_OUTPUT regulated 100 mA feed\")\nconst usbVbusChainPorts = new Set([\n \"pcb_port_424\", \"pcb_port_425\", \"pcb_port_434\", \"pcb_port_436\", \"pcb_port_450\",\n])\nconst usbVbusChainTraces = traces.filter((trace) =\u003e {\n const endpoints = (trace.connectsTo ?? []).filter((id) =\u003e id?.startsWith(\"pcb_port_\"))\n return endpoints.length === 2 \u0026\u0026 endpoints.every((id) =\u003e usbVbusChainPorts.has(id))\n})\nassert.equal(usbVbusChainTraces.length, 4,\n \"the complete USB-C VBUS chain has four routed branches\")\nconst usbVbusMain = traceEndingWith(\"source_net_1_mst1_0\")\nconst usbVbusDiode = traceEndingWith(\"source_net_1_mst3_0\")\nassertMinimumWireWidth(usbVbusMain, 0.2, \"USB-C VBUS dual-pad escape\")\nassert.ok(Math.max(...usbVbusMain.route.filter((point) =\u003e point.route_type === \"wire\")\n .map((point) =\u003e point.width)) \u003e= 0.5,\n\"USB-C VBUS connector-to-capacitor path reaches 0.50 mm trunk width\")\nassert.ok(usbVbusMain.route.some((point) =\u003e point.route_type === \"wire\" \u0026\u0026\n Math.abs(point.x + 10) \u003c 1e-6 \u0026\u0026 Math.abs(point.y + 31.825) \u003c 1e-6),\n\"USB-C VBUS 0.50 mm trunk passes through the input-capacitor pad\")\nassertMinimumWireWidth(usbVbusDiode, 0.5, \"USB-C VBUS capacitor-to-diode trunk\")\nfor (const suffix of [\"source_net_1_mst0_0\", \"source_net_1_mst2_0\"])\n assertMinimumWireWidth(traceEndingWith(suffix), 0.12, \"USB ESD VBUS reference stub\")\n\nconst batteryRangeText = of(\"pcb_silkscreen_text\").find((text) =\u003e text.text === \"2xAA 1.8-3.2V • NO CHARGE\")\nassert.ok(batteryRangeText, \"battery silkscreen states the two-AA range and explicitly forbids charging\")\n\nconst report = {\n circuitPath,\n generatedAt: new Date().toISOString(),\n board: {\n title: \"F1C100S Linux Game Boy Advance\",\n widthMm: board.width,\n heightMm: board.height,\n copperLayers: board.num_layers,\n },\n routing: {\n pcbTraces: traces.length,\n pcbVias: vias.length,\n viaHoleDiameterMm: 0.3,\n viaPadDiameterMm: 0.45,\n minimumFinishedHoleGapMm: Number(minimumFinishedHoleGap.toFixed(6)),\n closestViaPair,\n reviewedViaHoleToCopperGapMm: Number(reviewedViaCopperGap.toFixed(3)),\n reviewedViaNearestTrace,\n buckBoostPowerLinksMm: 0.5,\n buckBoostFinePitchNeckMm: 0.12,\n backlightSwitchingLinksMm: 0.5,\n backlightRegulatedFeedMm: 0.12,\n usbCToSystemPowerTrunkMm: 0.5,\n usbCConnectorEscapeNeckMm: 0.2,\n },\n mechanical: {\n batteryCableEdgeCut: {\n widthMm: Number((cutoutBounds.maxX - cutoutBounds.minX).toFixed(3)),\n overallLengthMm: Number((cutoutBounds.maxY - cutoutBounds.minY).toFixed(3)),\n depthIntoBoardMm: Number((cutoutBounds.maxY - boardBottomY).toFixed(3)),\n closedEnd: \"rounded\",\n },\n shoulderSwitches: \"TS6695ZJ 022 low-profile right-angle housing, 9.5 mm switch height, 3.03 mm board-edge stem protrusion\",\n volumeControl: {\n center: volumePlacement,\n rotationDeg: volumeRotationDeg,\n side: \"upper-left rounded corner\",\n wheelDirection: \"upper-left corner bisector\",\n wheelProtrusionMm: Number(volumeWheelProtrusionMm.toFixed(3)),\n housingCornerProtrusionMm: Number(volumeHousingCornerProtrusionMm.toFixed(3)),\n mountingSlotCopperToEdgeMm: Number(volumeMountingSlotEdgeClearanceMm.toFixed(3)),\n mountingSlotCopperClearancesMm: volumeSlotCopperClearances.map((clearance) =\u003e Number(clearance.toFixed(3))),\n },\n bootSolderJumper: {\n center: { x: -49.27, y: 18 },\n outsideLandscapeLcdEnvelope: true,\n normallyOpen: true,\n dnp: true,\n enclosureAccessHole: false,\n },\n startSelect: {\n select: { x: -14, y: -26 },\n start: { x: 1, y: -26 },\n arrangement: \"central pair below display\",\n },\n microSdEdge: \"card-entry face flush with the PCB and recessed behind a 2.2 mm right-wall guard tunnel\",\n microSdEntryFaceXmm: Number(microSdEntryFaceX.toFixed(3)),\n powerSwitchEdge: \"straight left edge\",\n powerSwitchBodyInsetMm: Number(powerBodyInsetMm.toFixed(3)),\n powerSwitchActuatorProtrusionMm: Number(powerActuatorProtrusionMm.toFixed(3)),\n batteryConnectorFacesCutout: true,\n batteryCableBendCorridorMm: Number(batteryCableBendCorridorMm.toFixed(3)),\n batteryHolder: {\n reference: \"integrated two-AA bay using IEC/Energizer maximum cell envelope\",\n maximumCellSizeMm: [14.5, 50.5],\n bayClearanceMm: [32, 57.7, 14.5],\n contactMountWallThicknessMm: 1.65,\n contactInsideWallSpacingMm: Number(batteryInsideWallLengthMm.toFixed(3)),\n installation: \"two removable AA cells under the PCB; internal series contacts wire through the PCB slot to J_BAT\",\n exteriorCableOpening: false,\n removableDoor: true,\n },\n powerSwitch: {\n center: { x: powerSwitch.center.x, y: powerSwitch.center.y },\n side: \"straight lower-left side wall, clear of the rounded corner\",\n actuatorDirection: \"left\",\n actuatorProtrusionMm: Number(powerActuatorProtrusionMm.toFixed(3)),\n bodyInsetMm: Number(powerBodyInsetMm.toFixed(3)),\n enclosureActuation: \"direct-access protruding slider\",\n },\n rearServiceConnectors: {\n uart: { center: { x: -18, y: 37 }, layer: \"top\", pinout: [\"RX\", \"GND\", \"TX\"] },\n i2c: { center: { x: -28, y: 37 }, layer: \"top\", pinout: [\"GND\", \"3V3\", \"SDA\", \"SCL\"] },\n spi: { center: { x: 22, y: 37 }, layer: \"top\", pinout: [\"GND\", \"3V3\", \"SCLK\", \"MOSI\", \"MISO\", \"CS\"] },\n },\n },\n display: {\n part: \"ER-TFT035IPS-6\",\n widthMm: 84.96,\n heightMm: 56.54,\n orientation: \"landscape\",\n fpcConnectorSide: \"right\",\n connectorRotationDeg: 270,\n connectorCenter: { x: 40.8, y: 15 },\n installedFlexLateralOffsetMm: screenInstalledLateralOffsetMm,\n boardTopEdgeYmm: boardTopY,\n panelTopEdgeYmm: Number(screenTopEdgeY.toFixed(3)),\n panelTopEdgeOffsetMm: Number((screenTopEdgeY - boardTopY).toFixed(3)),\n correctedPreviousTopOverhangMm: Number(previousScreenTopOverhangMm.toFixed(3)),\n assemblyModel: screenModelFile,\n backlightDriver: \"AP3031KTR-G1\",\n regulatedBacklightCurrentMa: lcdBacklightCurrentMa,\n },\n power: {\n labeledBatteryRangeV: [1.8, 3.2],\n batteryChemistry: \"two removable alkaline or NiMH AA cells in series\",\n batteryCharging: false,\n primaryRegulator: \"TPS63020 buck-boost\",\n usbPorts: [\"J_USB (USB2 D+/D- plus default 5 V Type-C sink power)\"],\n },\n models: {\n f1c100s: \"C1511928\",\n spiFlash: \"C113767\",\n shoulderSwitch: \"C33543618\",\n screen: screenModelFile,\n enclosure: \"serviceable PETG shells with rear M3 closure, captive controls, two-AA door, sealed speaker, and four-point LCD carrier\",\n fittedPartsWithRenderableModels: fitted.length - missingCadModels.length,\n missingRenderableModels: missingCadModels,\n },\n audio: {\n speakerConnector: \"J_SPK\",\n output: \"PAM8403 mono bridge SPK+/SPK- for an internal 4-8 ohm speaker\",\n },\n assembly: {\n fittedComponents: fitted.length,\n uniqueJlcpcbPartNumbers: uniqueJlcpcbParts.size,\n missingJlcpcbPartNumbers: missingJlcpcb,\n enclosure: {\n outsideWidthMm: Number(enclosureOutsideWidthMm.toFixed(3)),\n outsideHeightMm: Number(enclosureOutsideHeightMm.toFixed(3)),\n overallOutsideZMm: Number((enclosureTopZ - enclosureBottomZ).toFixed(3)),\n generalBodyOutsideZMm: Number((enclosureTopZ - enclosureBottomZ).toFixed(3)),\n enclosureBottomZmm: enclosureBottomZ,\n bodies: printedPartNames.length,\n printedParts: printedPartNames,\n wallThicknessMm: 1.4,\n floorThicknessMm: 1.6,\n lidThicknessMm: 1.6,\n boardClearanceMm: 0.8,\n generalPcbUnderbodyClearanceMm: 15,\n batteryHolderPocketDepthMm: 14.5,\n batteryDoorFlangeMm: [36.4, 58.8, 0.9],\n batteryDoorCentralPanelMm: [31.6, 53.8, 1.2],\n batteryDoorOpeningMm: [33.6, 56],\n batteryDoorRebateMm: [37, 59.4, 1.25],\n batteryDoorClosure: \"insertion tongue plus integral cantilever latch with positive hook and exterior thumb dimple\",\n topHeadroomMm: 10.8,\n closure: \"four rear M3x24 screws through PCB into front-shell heat-set inserts and nylon washers\",\n lidRegistration: \"four broad 0.8 x 1.8 mm internal tongues in component-free edge regions\",\n profileVertices: board.outline.length,\n pcbSupportHoles: expectedPcbMountHoles.length,\n lcdCarrierHoles: expectedScreenHoles.length,\n lcdCarrierHoleDiameterMm: 2.7,\n lcdCarrierFastener: \"M2.5 thread-forming screw from PCB underside\",\n lcdPerimeterSupportZmm: 8.2,\n lcdCarrierCenterOpen: true,\n lcdCarrierArmThicknessMm: 1.8,\n lcdCarrierMinimumRailWidthMm: 4,\n fullPanelPocketMm: [86.46, 57.04],\n displayGasketsMm: { front: 0.5, rear: 0.5 },\n speakerCradle: \"Same Sky CMS-2004-18SP 20 mm x 4.2 mm speaker, real terminal pads, snap strain relief, foam gasket, printed retainer, two M2 screws, modeled harness and four 1.6 mm feet\",\n faceControls: \"six captive rear-flanged caps with 0.05 mm silicone anti-rattle preload plus one centrally pivoted D-pad with snap-captured silicone pad\",\n shoulderControls: \"two close-fit rounded sliding keys with twin guide rails, independent retaining tabs and blind TS6695 actuator pockets\",\n apertureMarkers: enclosureApertureMarkers,\n },\n },\n controls: expectedButtons.length,\n schematic: {\n sheets: [...sheetNames],\n standardProgrammerUart: \"RX-GND-TX with 100 ohm RX/TX series isolation\",\n },\n errorsByType: {},\n emittedErrors: 0,\n}\n\nfs.writeFileSync(\"verification.json\", `${JSON.stringify(report, null, 2)}\\n`)\nconsole.log(JSON.stringify(report, null, 2))\n","content_mimetype":"text/javascript","created_at":"2026-10-16T10:00:09.992Z"}; window.SSR_PACKAGE_RELEASES = [{"package_release_id":"905bb00a-aaab-4da0-9f2b-1f7fb8a6d75f","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.124","github_commit_sha":null,"is_locked":false,"is_latest":true,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-16T09:57:20.676Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-85ef8d43408d49266d875e01d5c3701e","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"9a7282cf-4d42-4faa-9a14-5012346a3859","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.123","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-16T04:34:41.653Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-05e053f458167eb81bd058459a4780b6","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=9a7282cf-4d42-4faa-9a14-5012346a3859\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=9a7282cf-4d42-4faa-9a14-5012346a3859\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=9a7282cf-4d42-4faa-9a14-5012346a3859\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"4db1abac-bdec-4223-8582-c88c17a7f8ef","user_code_job_started_at":"2026-10-16T04:36:50.331Z","user_code_job_completed_at":"2026-10-16T04:40:53.871Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=f29ffd8ae8832c893ef9e3fd9278f1a10cd838bd6f4a84fb31f5a4ad3257c957","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"625edce8-c02c-440a-b0b5-fcbbbaf81895","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.122","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T21:16:01.076Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-6797a3f8f6a10be8e36eed5c8bf2e515","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=625edce8-c02c-440a-b0b5-fcbbbaf81895\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=625edce8-c02c-440a-b0b5-fcbbbaf81895\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=625edce8-c02c-440a-b0b5-fcbbbaf81895\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"e19dd522-e38c-4827-88e6-8db540c6f538","user_code_job_started_at":"2026-10-15T21:20:16.799Z","user_code_job_completed_at":"2026-10-15T21:24:20.428Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=d7301454d98af2692e16a991858e695dedcb63fc7f24ab921221ba0b3347b259","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"963fcb4a-ca45-4240-aee6-56251d6a355d","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.121","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T20:26:36.064Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-196ef4489e202e305fea7633abfb8118","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=963fcb4a-ca45-4240-aee6-56251d6a355d\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=963fcb4a-ca45-4240-aee6-56251d6a355d\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=963fcb4a-ca45-4240-aee6-56251d6a355d\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"75999eb4-8106-47a7-b82c-6aad4a8c9d19","user_code_job_started_at":"2026-10-15T20:28:50.904Z","user_code_job_completed_at":"2026-10-15T20:31:24.435Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=3a3a5cde3cef9c358877e84e449dfd9a58aeb3b5ea4c786ac59065c37588cfb3","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"f9adda29-00c1-4421-a016-24a97b0a993e","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.120","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T20:24:17.849Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-ecdd1e28bfea1ad548b56ec282586ce1","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=f9adda29-00c1-4421-a016-24a97b0a993e\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=f9adda29-00c1-4421-a016-24a97b0a993e\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=f9adda29-00c1-4421-a016-24a97b0a993e\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"4feb3a24-63a2-4f3c-91b8-b9df7b0630fb","user_code_job_started_at":"2026-10-15T20:26:19.327Z","user_code_job_completed_at":"2026-10-15T20:28:52.368Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=74adf620041e6bb1c878b52046878d549f651a1e9629c1367ecc3b01ff90e28a","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"4bf76c99-47be-40af-9809-c0a70f013966","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.119","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T19:04:25.419Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-e7153b99abb90002114a961a1edc8edb","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4bf76c99-47be-40af-9809-c0a70f013966\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4bf76c99-47be-40af-9809-c0a70f013966\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4bf76c99-47be-40af-9809-c0a70f013966\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"5dd8ed82-0427-4369-87e8-d33052a800ab","user_code_job_started_at":"2026-10-15T19:06:17.227Z","user_code_job_completed_at":"2026-10-15T19:10:24.327Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=d3c994d8252022255262d06fcba075e118b00a2422b08bc078e163fc59a67d2d","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"dfa2665f-848a-4d75-95f0-b94e22218f2b","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.118","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T18:10:39.532Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-9dd006398695b42a201d35ab8970ad70","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=dfa2665f-848a-4d75-95f0-b94e22218f2b\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=dfa2665f-848a-4d75-95f0-b94e22218f2b\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=dfa2665f-848a-4d75-95f0-b94e22218f2b\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"9eb46203-37f5-4f09-a0cc-3b951bfc0a1d","user_code_job_started_at":"2026-10-15T18:12:42.175Z","user_code_job_completed_at":"2026-10-15T18:15:50.551Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=565c10c65af7b7f4a39b258a3c183b86c781208aa033046a2d5ac0366da4ff44","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"3faaf00f-a94a-4312-acf8-1ac52f6f5c0f","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.117","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T17:39:41.132Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-318a8bbaa07ca812d0c8acbf9e29507f","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3faaf00f-a94a-4312-acf8-1ac52f6f5c0f\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3faaf00f-a94a-4312-acf8-1ac52f6f5c0f\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3faaf00f-a94a-4312-acf8-1ac52f6f5c0f\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"b412c489-4ece-424a-add6-f7f3b305aaed","user_code_job_started_at":"2026-10-15T17:42:09.283Z","user_code_job_completed_at":"2026-10-15T17:45:23.402Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=4daa5616689549c37296b2a4eb877e5be07c4f175c367b5af771a070bce62982","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"0ad6e80b-b648-4a87-9a77-ca59cb9fdedf","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.116","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T16:57:38.334Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-3af5e3e4f5a47c738f14ef48fe92c7e0","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=0ad6e80b-b648-4a87-9a77-ca59cb9fdedf\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=0ad6e80b-b648-4a87-9a77-ca59cb9fdedf\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=0ad6e80b-b648-4a87-9a77-ca59cb9fdedf\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"2c174da9-c3f0-4eb0-be7b-3132a195e8b4","user_code_job_started_at":"2026-10-15T16:59:45.526Z","user_code_job_completed_at":"2026-10-15T17:04:09.350Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=e1b3c5a3e555ba950ae93239af4631d23b881b788575280305824eea23b2cd94","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"4b31b300-58b9-4f66-97be-d16404c1b20a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.115","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T12:08:08.842Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-f93c9280a07c229bcd7c1c892aa72b25","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4b31b300-58b9-4f66-97be-d16404c1b20a\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4b31b300-58b9-4f66-97be-d16404c1b20a\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4b31b300-58b9-4f66-97be-d16404c1b20a\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"7e4abcc5-d309-480b-8753-9b3e52743e2d","user_code_job_started_at":"2026-10-15T12:10:43.379Z","user_code_job_completed_at":"2026-10-15T12:13:11.324Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=fa84d97c01dcd60dda910b08a625da9c5a52365d410c676b89b3b3948a650126","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"44161f48-cef9-4d36-8d4d-eb3588414494","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.114","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T06:42:58.565Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-38ab51848e50f7199df55878c4c3565b","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=44161f48-cef9-4d36-8d4d-eb3588414494\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=44161f48-cef9-4d36-8d4d-eb3588414494\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=44161f48-cef9-4d36-8d4d-eb3588414494\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"da14e1c7-81ec-44f3-8a1c-c9504219547b","user_code_job_started_at":"2026-10-15T06:46:08.231Z","user_code_job_completed_at":"2026-10-15T06:49:31.417Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=ff1987cf003d51f37ace0526fbfe90328bdeb4375e6507ca2277568e52fac809","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"cd808461-8cd4-436e-b675-1ef030bae284","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.113","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T06:31:19.175Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-4dc36f2206c0a08f1c4befefbcf10ba5","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"cd1728bc-4cd2-437b-a7f9-6652bb818f83","user_code_job_started_at":"2026-10-15T06:37:41.601Z","user_code_job_completed_at":"2026-10-15T06:41:04.614Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=983b79cb5f4eaab31806bd71b50583ccb8b6a9ad5940ab73286f555db15b8a08","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"b0f3b341-43ba-49d9-9b36-6f13d4ae02d8","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.112","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-15T06:24:22.863Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-b6377bb41468eb3a849db617466a2f45","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"1a445bb7-cd34-4d9c-97de-5acbcbca7618","user_code_job_started_at":"2026-10-15T06:29:18.981Z","user_code_job_completed_at":"2026-10-15T06:36:39.612Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=ffbab19e64f88eee1bb5ceff89e1d9c072dacc360066aef3b25ae747911c261d","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"6219d87c-6214-4710-878c-4005db928cff","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.111","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T23:05:14.876Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-25a4c6b0e6762e11d15be58b4894a237","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6219d87c-6214-4710-878c-4005db928cff\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6219d87c-6214-4710-878c-4005db928cff\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6219d87c-6214-4710-878c-4005db928cff\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"355fbdda-3f98-4aa8-88a7-5ada8f44e542","user_code_job_started_at":"2026-10-14T23:08:01.369Z","user_code_job_completed_at":"2026-10-14T23:11:55.554Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=c3d3dcccb1864d65d501171f6e960515cbf93ee388f7ae320a4e3fddbaef4d29","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"eaecd2f8-2d7a-4e49-8d40-31dcd39818a0","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.110","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T22:29:13.065Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-519cf31444a5b77943353fc7edc18b19","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=eaecd2f8-2d7a-4e49-8d40-31dcd39818a0\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=eaecd2f8-2d7a-4e49-8d40-31dcd39818a0\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=eaecd2f8-2d7a-4e49-8d40-31dcd39818a0\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"b4cb58d3-adfc-4b3b-ad7a-c3164b6684a7","user_code_job_started_at":"2026-10-14T22:31:49.410Z","user_code_job_completed_at":"2026-10-14T22:34:51.769Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=3ae62417b8806e35f824bf6d928c90a75dac7adc95f5fa7729f0893d6fa0e1bc","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"1270474f-7fee-43bc-b82a-8fce69dea8c4","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.109","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T22:23:48.095Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-e91195570073489ebbb83d702b362675","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"935c8704-9701-4780-a5ca-3634c08fac9d","user_code_job_started_at":"2026-10-14T22:27:00.235Z","user_code_job_completed_at":"2026-10-14T22:28:52.467Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=fd67e6c37fec82c7934fe54cdade6dc708902c3f6a11631627a0774403b5e81d","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"62255555-c28c-4e12-b64a-8f0db3c4bc4b","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.108","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T19:36:10.223Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-05eca586c5447ff56285603346cab107","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=62255555-c28c-4e12-b64a-8f0db3c4bc4b\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=62255555-c28c-4e12-b64a-8f0db3c4bc4b\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=62255555-c28c-4e12-b64a-8f0db3c4bc4b\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"664a97cc-3fd2-4b15-b3ee-bbe034d91d51","user_code_job_started_at":"2026-10-14T19:50:51.103Z","user_code_job_completed_at":"2026-10-14T19:54:56.858Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=156bbd451f8b31a73e3f3362ac6f2b03a0f2dbc03862cd85159592f2fb04e337","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"1adeed66-b629-4260-900c-ebc83f92c0a3","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.107","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T19:32:18.735Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-9f238be1d877db0b2f37af589ef13e45","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e1d22c19-6f94-47f3-9efe-87081e5daf02","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.106","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T19:26:53.092Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-c36a674be6b10717f97aea641768f097","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"dee8388b-397e-4abd-a836-4dc487aa64af","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.105","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T19:12:42.449Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-872a49f27187d3878aa020eb08ad0d55","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"2d1957e7-73d7-4fc6-88a2-7ea0ced89d87","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.104","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T17:35:58.000Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-801e20a1309aa8f4b2c49490c326c4a7","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=2d1957e7-73d7-4fc6-88a2-7ea0ced89d87\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=2d1957e7-73d7-4fc6-88a2-7ea0ced89d87\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=2d1957e7-73d7-4fc6-88a2-7ea0ced89d87\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"9ddd5632-32b1-495e-ace2-fc0b23349c36","user_code_job_started_at":"2026-10-14T17:38:51.906Z","user_code_job_completed_at":"2026-10-14T17:41:24.656Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=25870cbc3e1ac7c37206815ce12c1658fc723aa268efd9ba647c6807dc356cfa","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"97faae2d-df0a-4cfb-874b-485f817415d3","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.103","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T17:21:25.873Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-e124ae92616107de25c2be37e36f7192","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=97faae2d-df0a-4cfb-874b-485f817415d3\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=97faae2d-df0a-4cfb-874b-485f817415d3\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=97faae2d-df0a-4cfb-874b-485f817415d3\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"01d2fbe3-33a9-499a-a7d5-4beb8a15dbcb","user_code_job_started_at":"2026-10-14T17:23:44.743Z","user_code_job_completed_at":"2026-10-14T17:26:09.834Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=d4f687b748c5e1770ecd53c1f5ab6b3066ba099beed4fbc6d9603db5bee9438d","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"4e07a594-a200-4b7b-be54-70029c13073f","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.102","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T17:10:22.846Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-6dea41c378453d2486d2113cb5e3ec2d","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"9b71a558-baef-437f-9b7b-4cc236ffe959","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.101","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T17:06:48.999Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-da567c8cae6163a655c85bf9df6e9039","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"b6fb717c-ad17-437a-8be7-722252d672bd","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.100","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T16:53:37.596Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-03ec097c34e700a72c062fbc1e0a9ec8","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"c51a76a2-9948-4871-b2e0-01af5d88647a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.99","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T15:15:23.068Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-a0787a7c934cfcc09714258ded9b5c35","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c51a76a2-9948-4871-b2e0-01af5d88647a\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c51a76a2-9948-4871-b2e0-01af5d88647a\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c51a76a2-9948-4871-b2e0-01af5d88647a\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"37256c6e-a8b3-4456-83b8-b2eeafab298c","user_code_job_started_at":"2026-10-14T15:18:47.843Z","user_code_job_completed_at":"2026-10-14T15:23:21.373Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=cb7dcc960bf4ee5e9909836e456adeb19da0103882a00ff7c8fce6f82a814226","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"64b3cc4a-e360-4537-9d7c-559a5186982a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.98","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T14:53:15.976Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-d7e79d861b72daf9598d26f43f011c48","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=64b3cc4a-e360-4537-9d7c-559a5186982a\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=64b3cc4a-e360-4537-9d7c-559a5186982a\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=64b3cc4a-e360-4537-9d7c-559a5186982a\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"e73cc78b-7771-4941-b752-f07d08a83dca","user_code_job_started_at":"2026-10-14T14:56:44.832Z","user_code_job_completed_at":"2026-10-14T14:59:21.425Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=01f2b88f1d723b611b56c1db5709f5f655c28850046a64463e04d98899ea72a9","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"a7622c70-98b6-4261-8a5b-3db81de74e6b","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.97","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T14:48:35.523Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-ced5bbe88b52ca6954525af30c5c4f7d","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"7acfef84-fd01-471c-8bd4-613a97486e13","user_code_job_started_at":"2026-10-14T14:49:57.432Z","user_code_job_completed_at":"2026-10-14T14:52:34.070Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=61001ccc59f20b63666728b8aa298f00dc8e01298be61be5a07703dae7709fec","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"2f7707e1-5bc0-45d2-902b-2f9170f58816","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.96","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T14:46:01.989Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-0d35ada7b075f8291d5e975021d1a852","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=2f7707e1-5bc0-45d2-902b-2f9170f58816\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=2f7707e1-5bc0-45d2-902b-2f9170f58816\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=2f7707e1-5bc0-45d2-902b-2f9170f58816\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"8dcc15c4-0f2e-4d83-8348-7948f561b566","user_code_job_started_at":"2026-10-14T14:47:39.159Z","user_code_job_completed_at":"2026-10-14T14:51:23.666Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=895b73c453b4bc1e7c46958294dc3d57e42d5a30b550cd3a1dad9bd918b6a26a","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"582cda1f-2bdd-4fab-bc11-ab54b5bb8078","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.95","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T12:58:39.796Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-2b7a36dbd007a421943f0a6cfb8ff649","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=582cda1f-2bdd-4fab-bc11-ab54b5bb8078\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=582cda1f-2bdd-4fab-bc11-ab54b5bb8078\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=582cda1f-2bdd-4fab-bc11-ab54b5bb8078\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"08253bba-6993-4fcf-9458-cd2b4b2a3edf","user_code_job_started_at":"2026-10-14T13:00:39.801Z","user_code_job_completed_at":"2026-10-14T13:02:22.927Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=60b595dad48863061a7609c1f25252b84b73468a51e2d4909d6598c32c6e488b","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"dfbe5983-5247-4c6b-85e0-f5f9a7ef8f92","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.94","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T12:47:45.832Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-a3ff0e0507323d62d7482cf67be3ee56","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"af225aaa-721f-40a7-a7a0-1d69cf72512d","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.93","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T12:31:18.927Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-4585283ebfdd64eb06b20ef50e4ba16e","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=af225aaa-721f-40a7-a7a0-1d69cf72512d\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=af225aaa-721f-40a7-a7a0-1d69cf72512d\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=af225aaa-721f-40a7-a7a0-1d69cf72512d\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"05812aca-a5e9-47d5-a428-7475151e6b80","user_code_job_started_at":"2026-10-14T12:33:03.288Z","user_code_job_completed_at":"2026-10-14T12:34:51.061Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=78f4925f152ef517f55b7225404ac6bc7ee04970ef23cee127e6ef7c545d5b43","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"3e592ccb-ac90-4191-a624-a1c40100332a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.92","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T12:25:39.896Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-90f1f24aa6a37e18433247817d69281d","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"11efab4b-7e87-4f57-88d5-9adcf1415700","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.91","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T12:18:42.939Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-97d8711ed3439d004d3688a577f48649","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"7442360d-213f-483e-8b6f-03af76b3ca9d","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.90","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T12:14:19.427Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-3ab9160c55a9c570e9452fd99f79ff86","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"1b500bdc-1b9c-44b3-8885-5462c663c5a1","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.89","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T12:09:36.118Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-f7701d3387d9044eef47a0496daa978b","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"46c811db-858a-42ce-8bda-e4276307be75","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.88","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T11:21:36.399Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-36055915a424a34d3b051bd37568b93d","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=46c811db-858a-42ce-8bda-e4276307be75\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=46c811db-858a-42ce-8bda-e4276307be75\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=46c811db-858a-42ce-8bda-e4276307be75\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"4c65d851-e5c7-4765-9dd3-ec7e3426c70d","user_code_job_started_at":"2026-10-14T11:25:36.960Z","user_code_job_completed_at":"2026-10-14T11:32:48.349Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=0c0eec7895858819446295ba228544af5ebafe28160611d413a6a93958c573cc","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"33c826b9-7771-44bc-83da-4460b45424f3","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.87","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T11:17:13.395Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-7212ebc929d4ed7ab7776b5173f3b5cc","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"9a8545e5-41a0-449f-bff8-78814c582603","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.86","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T11:04:11.981Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-5fa3fe507a0734f4e81aa8ad72810143","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e9270fd2-93fc-4ff6-8797-3469264eed8f","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.85","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T10:05:36.925Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-0b51b8e05e6a8dd92118004e5f223232","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e9270fd2-93fc-4ff6-8797-3469264eed8f\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e9270fd2-93fc-4ff6-8797-3469264eed8f\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e9270fd2-93fc-4ff6-8797-3469264eed8f\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"503f6011-0d94-4647-9888-6025eb0e9bad","user_code_job_started_at":"2026-10-14T10:07:44.450Z","user_code_job_completed_at":"2026-10-14T10:09:35.577Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=ba926d2a63a1a7d28adfe9aca1cd4ab9e3818009f13f5051a2748f4d0488b4fc","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e5582b4f-13a1-4cdc-b2aa-e567c64069ab","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.84","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T10:02:27.822Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-bf1b621f83a4777fd5654a6e9a97f072","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e5582b4f-13a1-4cdc-b2aa-e567c64069ab\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e5582b4f-13a1-4cdc-b2aa-e567c64069ab\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e5582b4f-13a1-4cdc-b2aa-e567c64069ab\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"86ff97e2-e856-4511-9f68-b4d9f8a7bed9","user_code_job_started_at":"2026-10-14T10:04:29.234Z","user_code_job_completed_at":"2026-10-14T10:08:13.316Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=85f18e698cd4b90cf0bba51dba0743a05fb314b831d7d589dee1de429af8e1ab","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"09ee178c-2cbb-4d27-8d4c-dac9a279fbf2","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.83","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T09:39:03.097Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-65c7cca50ff8292c514a8f248122fd02","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=09ee178c-2cbb-4d27-8d4c-dac9a279fbf2\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=09ee178c-2cbb-4d27-8d4c-dac9a279fbf2\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=09ee178c-2cbb-4d27-8d4c-dac9a279fbf2\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"beb1ffcf-8287-4b06-93e1-27d8e2e8583e","user_code_job_started_at":"2026-10-14T09:41:19.134Z","user_code_job_completed_at":"2026-10-14T09:43:27.717Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=2e2e4f6d68825b5c8c41a663a390212be88c1475d7af9ce8c1ad9137f5b2af6e","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"55105d64-d4d8-474c-bb0c-fdcbd53869a9","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.82","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T09:36:13.365Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-a5d24f399835e1ee996f52f87bda6c41","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=55105d64-d4d8-474c-bb0c-fdcbd53869a9\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=55105d64-d4d8-474c-bb0c-fdcbd53869a9\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=55105d64-d4d8-474c-bb0c-fdcbd53869a9\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"b9dbc1c0-22cf-4215-bc1a-3bf89cc2f174","user_code_job_started_at":"2026-10-14T09:38:11.705Z","user_code_job_completed_at":"2026-10-14T09:41:46.764Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=40b9fb1c7ed3aa06b198a66da85c85148b8782ba35048502e1de148b9e456f6f","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"8d5e91fd-9dde-4191-85cf-bf00071e907b","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.81","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T09:33:40.369Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-28b4e201997538d1311dfbe24b5750c1","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8d5e91fd-9dde-4191-85cf-bf00071e907b\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8d5e91fd-9dde-4191-85cf-bf00071e907b\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8d5e91fd-9dde-4191-85cf-bf00071e907b\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"c16ec065-4d37-408b-a00c-b85d033decba","user_code_job_started_at":"2026-10-14T09:34:05.431Z","user_code_job_completed_at":"2026-10-14T09:36:06.904Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=66768b61349801518f03c1345d831163c2b00f2c85af8842774abc51509b3ba4","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"60fdcc1f-ff98-44e7-9c24-8ea1912b5ded","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.80","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T09:31:26.486Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-ccbde1218943872c4f3cd0348a884c0e","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"947334af-4cfe-4940-9db9-a1555c3f9134","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.79","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T08:38:40.263Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-84985a7401040658bd161b8d349b1601","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=947334af-4cfe-4940-9db9-a1555c3f9134\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=947334af-4cfe-4940-9db9-a1555c3f9134\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=947334af-4cfe-4940-9db9-a1555c3f9134\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"78f16ffb-d0a5-48a6-8330-332d93137332","user_code_job_started_at":"2026-10-14T08:40:35.204Z","user_code_job_completed_at":"2026-10-14T08:43:15.341Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=b152a802227ec9808c75b69395ea70fdeeedf78f7b9323914125a35985ccafda","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"054d750c-7ed4-4030-9fd5-842246cd16c0","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.78","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-14T05:50:16.879Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-26e9dcb14988000f523696c4d64996cc","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=054d750c-7ed4-4030-9fd5-842246cd16c0\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=054d750c-7ed4-4030-9fd5-842246cd16c0\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=054d750c-7ed4-4030-9fd5-842246cd16c0\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"672452a8-c952-48d3-9bb6-d7ddded84277","user_code_job_started_at":"2026-10-14T05:53:07.019Z","user_code_job_completed_at":"2026-10-14T05:55:22.711Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=f8ed4e919ecd64e0669d3f63f64be94b438da02c4972deb5808731bf8941d0d9","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"ea769c7f-9e09-4b0b-864e-a3ad0a6a0f6b","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.77","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T05:44:36.327Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-53a9aa47bbebd604477adeb053a069ef","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"ef63bf0e-83c1-41a8-b39b-812371c268ba","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.76","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-14T05:27:06.713Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-9a9207af30dc56fbccc93e1c8f1aa761","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e6f558ed-71b9-402e-8d61-42ca9a1f7af1","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.75","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-13T22:40:02.272Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-5f81909aa2f80876344e6d47ae3e313f","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6f558ed-71b9-402e-8d61-42ca9a1f7af1\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6f558ed-71b9-402e-8d61-42ca9a1f7af1\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6f558ed-71b9-402e-8d61-42ca9a1f7af1\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"9ca631d1-680c-4b63-838c-2fea3743439f","user_code_job_started_at":"2026-10-13T22:43:34.915Z","user_code_job_completed_at":"2026-10-13T22:46:06.969Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=94876fa9a3d75eafe138effb6714118fcd75fb9f648f38d330708b7e30be4d60","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"1d72d57a-0bfe-4cae-8196-6ee2f07be81c","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.74","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-13T22:36:06.640Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-39ddec198faba90cc8a64fbe9a89b035","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"65fe9741-fff9-42ca-8350-e7f6a0ee194a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.73","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-13T22:24:59.972Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-d5c3afc4a90228b416b3d524b7f6b589","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"3095230e-1320-49b9-9084-dd080bc2d60c","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.72","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-13T21:23:29.759Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-4262914854756b7214aded5efbe175b0","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3095230e-1320-49b9-9084-dd080bc2d60c\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3095230e-1320-49b9-9084-dd080bc2d60c\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3095230e-1320-49b9-9084-dd080bc2d60c\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"edc51aae-3f6b-4a66-ba14-b23f2ed79bf1","user_code_job_started_at":"2026-10-13T21:26:10.724Z","user_code_job_completed_at":"2026-10-13T21:28:06.467Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=86199b31250b5d1447a473854f6257cb0dadcd6d620e09a456bcd5f84982be7a","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"d0a7597c-1797-42fb-ae04-eea10c034a01","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.71","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-13T21:19:59.649Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-7a1dbaca17923ad770a32446912bf4ed","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"a2a2970c-0642-4269-9942-143ba0edaf6d","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.70","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-13T18:53:13.485Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-0264b432b7406b87bcbb3d8d439d7d70","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=a2a2970c-0642-4269-9942-143ba0edaf6d\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=a2a2970c-0642-4269-9942-143ba0edaf6d\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=a2a2970c-0642-4269-9942-143ba0edaf6d\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"036112be-79ce-491e-93fc-2df8f928f14e","user_code_job_started_at":"2026-10-13T18:56:12.591Z","user_code_job_completed_at":"2026-10-13T18:58:40.226Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=a2b32dcc4da08025321473ef66f40d59ebd5395e24bf7c5814bd7ab489de9f7d","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"3a0f1c0d-2738-4663-934c-f94e13a903ba","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.69","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-13T18:49:09.199Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-f62150d427525124f4b3ead76e1ee2a3","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"edcc33e3-7df9-47a0-a74e-3f85901e8b8f","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.68","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-13T18:33:41.995Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-8bb1c8ac822f3d1a6184520552ee52cf","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"369fa3d1-74c8-4f22-9d84-dcfd7025b7db","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.67","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-07T20:31:21.384Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-16fe994ace60b319d5c9ef4079a4aaa3","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=369fa3d1-74c8-4f22-9d84-dcfd7025b7db\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=369fa3d1-74c8-4f22-9d84-dcfd7025b7db\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=369fa3d1-74c8-4f22-9d84-dcfd7025b7db\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"523af53d-1ffb-427c-be9b-a162e2ce0761","user_code_job_started_at":"2026-10-07T20:41:23.447Z","user_code_job_completed_at":"2026-10-07T20:46:33.461Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=ac243bbc7c15d7231ddc741a4bdd5e3bdf718114d5a39b32296af6f9395330e2","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"6b492103-bd40-42d6-9813-daaeb867ff07","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.66","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-07T17:39:38.808Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-3349dbe5e19452060c26fd9a390c0b94","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6b492103-bd40-42d6-9813-daaeb867ff07\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6b492103-bd40-42d6-9813-daaeb867ff07\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6b492103-bd40-42d6-9813-daaeb867ff07\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"9337d82c-ec04-4e9d-8bba-75d295b42861","user_code_job_started_at":"2026-10-07T17:43:04.636Z","user_code_job_completed_at":"2026-10-07T17:46:38.733Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=bf94b8efd2df6ea7494a5751385634c58f2b39a7f7ed8ba5c95cb6009e5e2841","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"f53d8c08-8520-4205-ae28-ca09c7e1304d","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.65","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-07T17:30:38.361Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-0bac4dd3a3917ec4c2e08c783300fee6","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"cbedab81-6a74-45e0-8e67-0e5484fad08a","user_code_job_started_at":"2026-10-07T17:35:25.355Z","user_code_job_completed_at":"2026-10-07T17:37:49.424Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=d3a97bb38a8cdd3ed2ab7ffb0db88f4021347bec8a02da4057a1a7f2dda1ec8a","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"ef10aa5d-3837-40f0-8502-d9b4c72b9369","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.64","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-07T17:21:36.428Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-a710ff046b21f0cf4e7cfe91c7eb1f72","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e489de83-1128-4fd2-917e-0c679c6e932a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.63","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-07T16:23:13.416Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-3f1c14dc7d9f354140a201989144cf4d","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e489de83-1128-4fd2-917e-0c679c6e932a\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e489de83-1128-4fd2-917e-0c679c6e932a\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e489de83-1128-4fd2-917e-0c679c6e932a\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"641cd708-0db9-4855-a157-6c7023793a19","user_code_job_started_at":"2026-10-07T16:25:34.354Z","user_code_job_completed_at":"2026-10-07T16:27:38.545Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=e0975951b500132e00b2b7edebf5196e6471b50e537b205b1f89814b1ebe3e00","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"fe534919-401d-4d11-b4c3-02b17228a4cb","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.62","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-07T16:15:54.417Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-023d87e1a089f92d429526b8ae404f73","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"ada49339-fa05-446e-8c1c-89f5503901f7","user_code_job_started_at":"2026-10-07T16:19:19.037Z","user_code_job_completed_at":null,"user_code_job_error":{"message":"Failed to add files to user code job: The socket connection was closed unexpectedly. For more information, pass `verbose: true` in the second argument to fetch()","error_code":"failed_to_add_files_to_user_code_job"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"753d79f4-fa2c-4bc6-a6b2-1785b5db5b81","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.61","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-07T16:10:33.512Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-8398f1799cc37fdfd721e6cd4a4b454b","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"83d5c700-8799-488b-9351-22e6cb88ef08","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.60","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-07T16:02:48.144Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-ab098981f7d4f87bc36bbc7873148f03","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"6190f720-00c4-45e2-9284-fc3fd0d2a3f9","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.59","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-07T15:55:11.679Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-df04a90f4860bc484c5c0e8da6224403","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"c06f91ff-9295-45b1-beec-024db3f49564","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.58","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-07T15:10:12.855Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-c7a308a46fd4372704be3d48d9441382","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c06f91ff-9295-45b1-beec-024db3f49564\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c06f91ff-9295-45b1-beec-024db3f49564\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c06f91ff-9295-45b1-beec-024db3f49564\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"42d73068-8663-4ed0-bb35-20a2602c6976","user_code_job_started_at":"2026-10-07T15:19:49.393Z","user_code_job_completed_at":"2026-10-07T15:23:37.228Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=b612a297d957f48a6d12a51c9a66cc62badca64a27abe3ad179bcfb98623109b","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e6a8f984-bd13-4332-8e40-6d8ca1de9879","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.57","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-07T13:59:53.894Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-7909787757a24f938337631ede8ed408","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"d184b3e5-f965-47b8-8dd2-b35419713992","user_code_job_started_at":"2026-10-07T14:07:59.296Z","user_code_job_completed_at":"2026-10-07T14:11:01.986Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=aa7086573df38edf2c2d25648c61a7d9102b7e6e0027927b7b12fb73525dda92","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"258bf70f-f0f4-4a64-8ada-6d4bbb79c4db","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.56","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-07T13:58:42.523Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-cc9a85ade147b5252c1df5026b0b42d4","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"1603de26-8853-4406-8067-73c99aa287f2","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.55","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-07T13:45:43.411Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-f43916ed40b0af22e68fa19ef8465e7b","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"aff14569-f9ba-49e3-88f0-1fe4dfc9de9a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.54","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T20:36:53.448Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-992e397b85434393ca2967ef515e8970","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=aff14569-f9ba-49e3-88f0-1fe4dfc9de9a\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=aff14569-f9ba-49e3-88f0-1fe4dfc9de9a\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=aff14569-f9ba-49e3-88f0-1fe4dfc9de9a\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"dff8b130-4e9a-4c8e-9a94-d155ce246b44","user_code_job_started_at":"2026-10-06T20:57:40.337Z","user_code_job_completed_at":"2026-10-06T21:01:14.159Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=16d012d5c002c72e8967065dfe288e08864e4bd9c65a7c42b3b3c857d63f5888","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"b7d61b8d-9289-46c2-89b9-74be74127630","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.53","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T19:56:09.655Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-c94eb06591f8fedcbadd0ac754f2bd66","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"d85ea71b-6bc4-4639-9ccc-e17ac9d163f4","user_code_job_started_at":"2026-10-06T20:25:48.881Z","user_code_job_completed_at":"2026-10-06T20:30:06.077Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=50440af47cedf17191772b2f2526ce8f3690602e50d0cc1d766eed7f8cf2bf6b","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"315a72a9-f2f2-4c2d-b8f6-43269cda9a2e","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.52","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-06T19:35:33.513Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-4fbcf5f5e277b5aa503e070d18a2e41a","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"224e35ae-af52-44c3-a204-ac3f530564c1","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.51","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T17:20:30.439Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-f96bf1e3f26a2850c0c1800841f4b29f","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=224e35ae-af52-44c3-a204-ac3f530564c1\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=224e35ae-af52-44c3-a204-ac3f530564c1\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=224e35ae-af52-44c3-a204-ac3f530564c1\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"3512ac76-ff90-4601-8d61-9df874efdbba","user_code_job_started_at":"2026-10-06T17:26:30.695Z","user_code_job_completed_at":"2026-10-06T17:28:39.266Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=c65d441c02ef01941d5537efce5c3dc7cc8b4255844a2812824a50a2b1d9e727","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"6fabfb9b-5b0a-4afa-b718-be11e1fe8833","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.50","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T17:08:41.052Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-ec4b4af01d055df2fda6f54411b4f322","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"42b5a14b-2794-48b3-993e-bd821656e951","user_code_job_started_at":"2026-10-06T17:11:03.678Z","user_code_job_completed_at":"2026-10-06T17:15:02.766Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=111c84dc82d7c7f1cec4f2c3f613cc59811cc03c4811cdaa7c3f859615cc8ff2","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e07b8597-c26c-4f92-87ea-02155e82f4a5","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.49","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T16:06:46.417Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-29e69168d17595e5c375c3b929bfd9c9","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e07b8597-c26c-4f92-87ea-02155e82f4a5\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e07b8597-c26c-4f92-87ea-02155e82f4a5\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e07b8597-c26c-4f92-87ea-02155e82f4a5\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"5830704a-f52b-4412-afef-f536fda6fe96","user_code_job_started_at":"2026-10-06T16:08:33.095Z","user_code_job_completed_at":"2026-10-06T16:14:00.169Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=e1502b5438f59394cc50f5a5f76518dea446ff85728d7bf8b491ed6097a4799c","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"c2401a4f-51c6-4e82-8623-65f380f1437d","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.48","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T15:24:45.221Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-36869bcd5730007542c41487b79754a3","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c2401a4f-51c6-4e82-8623-65f380f1437d\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c2401a4f-51c6-4e82-8623-65f380f1437d\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=c2401a4f-51c6-4e82-8623-65f380f1437d\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"de4b5290-f486-4774-a269-54a7b02263dd","user_code_job_started_at":"2026-10-06T15:26:59.384Z","user_code_job_completed_at":"2026-10-06T15:32:53.972Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=2a324ec34db3bb8af1cdc12ac78cbaab844704699a06faa82ec26e2dc3af0049","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"da4b4570-8cdc-44d2-8db2-eeef5531bbef","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.47","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-06T15:21:48.802Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-5a84475822f5501ace9a3b799e52abf7","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"77baa352-2132-4429-ac1e-650d04819bc6","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.46","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T14:54:14.393Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-2fe35181ee7df3aebdfaafed39640494","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=77baa352-2132-4429-ac1e-650d04819bc6\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=77baa352-2132-4429-ac1e-650d04819bc6\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=77baa352-2132-4429-ac1e-650d04819bc6\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"d1e858e7-b252-4e80-bd84-f468acb6810d","user_code_job_started_at":"2026-10-06T14:56:02.564Z","user_code_job_completed_at":"2026-10-06T15:01:00.248Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=7a9cc274fb43dc9d6a848598b5c83df941c64d4c13cfe04ff022184db5453f29","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"63394670-f4d1-42e8-ad4d-d11dc058bbd3","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.45","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T14:40:51.484Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-16a1e038391abe90817d5dceb1afc8a7","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=63394670-f4d1-42e8-ad4d-d11dc058bbd3\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=63394670-f4d1-42e8-ad4d-d11dc058bbd3\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=63394670-f4d1-42e8-ad4d-d11dc058bbd3\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"00ecb754-b629-4c97-a552-5e7a36441f3c","user_code_job_started_at":"2026-10-06T14:42:52.257Z","user_code_job_completed_at":"2026-10-06T14:45:03.544Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=3aa28f0c13654f5a09199b1b518eb698a33938b1425bd37f8bffb901ab461429","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"79a4f1c5-cc13-4376-9f27-a0f614a0afbd","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.44","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T13:40:27.556Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-62a299a6dc450c7684a1199e8832b49b","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=79a4f1c5-cc13-4376-9f27-a0f614a0afbd\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=79a4f1c5-cc13-4376-9f27-a0f614a0afbd\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=79a4f1c5-cc13-4376-9f27-a0f614a0afbd\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"972a0ce6-2512-4eec-8db6-43c843225b58","user_code_job_started_at":"2026-10-06T13:42:47.051Z","user_code_job_completed_at":"2026-10-06T13:45:00.479Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=f3758f854629357c925e120ea432479285e1a35324cc06d047e167bd2146bd09","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"f54095dc-a9f3-4ab6-ae62-f16e0cc697ad","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.43","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T13:35:05.371Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-95ab9d46047e2723a580f0588d6174df","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"754e094d-67ba-4f2e-a959-5f1de4ae9772","user_code_job_started_at":"2026-10-06T13:37:19.215Z","user_code_job_completed_at":"2026-10-06T13:38:54.957Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=86a3ee9b44319949bc5752b0aa6694afe555230a3cbe24b02d48b234203b8cab","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e004283b-cf02-4f2c-9a8b-8c4d5b454eab","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.42","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T13:27:16.872Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-d800ae85d7e69327542bf9df44099ce7","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"00f97f34-ad72-43fb-890c-3a2a107a851b","user_code_job_started_at":"2026-10-06T13:30:38.384Z","user_code_job_completed_at":"2026-10-06T13:32:14.230Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=779fa4af184bc0faf8118d9b5a6548ccf29e3854d09fedfeb79e2b722310e2b2","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"6c08c3c0-2d09-43ee-be38-3292f948b2b0","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.41","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-06T12:11:57.589Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-8d37574115ef543ae5ba7072ed315c68","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6c08c3c0-2d09-43ee-be38-3292f948b2b0\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6c08c3c0-2d09-43ee-be38-3292f948b2b0\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=6c08c3c0-2d09-43ee-be38-3292f948b2b0\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"5e370988-66f0-45d0-bac9-9c1cf3abb93d","user_code_job_started_at":"2026-10-06T12:20:26.829Z","user_code_job_completed_at":"2026-10-06T12:27:21.622Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=631904c06f6705b12a911da8cec459f3070ec3a26fd4a151c1093e1055410deb","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"6f66871e-0075-467c-8c27-de64019967bb","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.40","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-06T12:09:44.406Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-21fe4e78936797a34588539b0f871315","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"f79efeab-032e-4a5c-9605-1fc5651c6171","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.39","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-06T11:54:57.820Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-458b9c52065ab33909745a5d4c4cf92a","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"a94bf220-28d3-45c8-bf1b-1efc04c4efd9","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.38","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T23:38:26.100Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-14fce3cea6f0b53345a1ae5f1ef0e4cc","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=a94bf220-28d3-45c8-bf1b-1efc04c4efd9\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=a94bf220-28d3-45c8-bf1b-1efc04c4efd9\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=a94bf220-28d3-45c8-bf1b-1efc04c4efd9\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"09711fd6-76a3-4c73-a2a9-fb1b600f0abd","user_code_job_started_at":"2026-10-05T23:41:21.210Z","user_code_job_completed_at":"2026-10-05T23:45:27.486Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=3f806de1ac050a20db121d28a0d959e46a95a970cd5bbd628643669667f3bd22","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"4909809b-0bfc-4098-ae46-b52e7d9c835b","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.37","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T23:36:05.543Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-9d09f56ea5e69955607394712054c6c5","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"821cb7f7-0af5-4996-8c8b-6bd906c935c1","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.36","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T23:26:29.210Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-3ff2890a4feb3422d1217c0e4a5e65d3","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"4126ae93-35eb-45c2-9249-9f9d0d452e9e","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.35","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T23:05:44.463Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-f718a06cbb39757fdb1765ee07b163c6","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4126ae93-35eb-45c2-9249-9f9d0d452e9e\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4126ae93-35eb-45c2-9249-9f9d0d452e9e\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=4126ae93-35eb-45c2-9249-9f9d0d452e9e\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"99bc89aa-688f-4929-b2e3-8efedda2aa30","user_code_job_started_at":"2026-10-05T23:19:22.571Z","user_code_job_completed_at":"2026-10-05T23:25:09.007Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=f775eb8de4dec1ff3f6eccced7784728dcd1eaa351222b0bc53d264dec4b31cd","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"84535ff7-d25a-466f-a42d-572466df8c8c","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.34","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T22:01:20.618Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-ecad7796605ced35d3b5f4c0ed623854","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=84535ff7-d25a-466f-a42d-572466df8c8c\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=84535ff7-d25a-466f-a42d-572466df8c8c\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=84535ff7-d25a-466f-a42d-572466df8c8c\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"c0cb643e-3e6a-4d77-b23f-673ad02113e2","user_code_job_started_at":"2026-10-05T22:13:12.962Z","user_code_job_completed_at":"2026-10-05T22:19:11.211Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=11f1b37b28ad901382054dd6c19c073e0b2e6b882f3a7ffcee99ba6d6428029b","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"8f03be90-31ed-401f-a7e4-ef10de0ffb7a","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.33","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T20:34:05.962Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-e527e6bea026a27145d6a029765ce9fe","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8f03be90-31ed-401f-a7e4-ef10de0ffb7a\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8f03be90-31ed-401f-a7e4-ef10de0ffb7a\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8f03be90-31ed-401f-a7e4-ef10de0ffb7a\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"d4f7f642-e264-4b81-af2e-b39829988088","user_code_job_started_at":"2026-10-05T20:35:51.451Z","user_code_job_completed_at":"2026-10-05T20:37:54.464Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=9dfc3af45e43c1f6a04c4980e782c9a0b7d6bfe8967b21db11f6642e7402dbea","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e6b3a4da-b700-410f-9865-bed3fc1a7fba","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.32","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T18:53:06.604Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-a851e2f5e9055556cbb646bd24d9c694","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6b3a4da-b700-410f-9865-bed3fc1a7fba\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6b3a4da-b700-410f-9865-bed3fc1a7fba\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6b3a4da-b700-410f-9865-bed3fc1a7fba\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"7376ce52-b82c-4d40-b0c3-e2f27172a4c5","user_code_job_started_at":"2026-10-05T19:46:09.095Z","user_code_job_completed_at":"2026-10-05T19:50:54.970Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=fa4fa45e5214887c262a092639cf06118541df0c8b7ca0eebbd086cc0a373fd9","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"2cb7ea2e-ebdb-4065-aa65-37af7566ca0f","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.31","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T18:40:37.738Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-ec90dcbcc54dee8eed247f0490796e0e","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"36e3f5fa-260c-420f-8fed-fa121fe7c5cb","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.30","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T12:36:02.226Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-cdcf54e68fe80da4ed8e790f24fab931","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=36e3f5fa-260c-420f-8fed-fa121fe7c5cb\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=36e3f5fa-260c-420f-8fed-fa121fe7c5cb\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=36e3f5fa-260c-420f-8fed-fa121fe7c5cb\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"0ac4de84-e7e7-4522-bfc0-940dac20a451","user_code_job_started_at":"2026-10-05T12:43:08.371Z","user_code_job_completed_at":"2026-10-05T12:46:32.224Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=b4a2d717aff07526c4728e3393f603bd26772be63d7346fa32e4ac46d3010abd","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"cd38b3ce-c046-401e-8fac-5acf45859277","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.29","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T12:26:57.564Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-6cf8f79af30e6b02445f7b24f356b2c1","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"3f5da31a-efaa-4d07-a9c0-b6c323894348","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.28","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T11:53:33.809Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-85b9600536c437dfdd49ca6e042aacad","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3f5da31a-efaa-4d07-a9c0-b6c323894348\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3f5da31a-efaa-4d07-a9c0-b6c323894348\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3f5da31a-efaa-4d07-a9c0-b6c323894348\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"1fbaae94-cb87-4b76-8ab5-6558f5276d9e","user_code_job_started_at":"2026-10-05T11:56:36.947Z","user_code_job_completed_at":"2026-10-05T12:05:43.892Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=a16b6ada7fd8811ce14aea8b1682425fe4a94d8215ff6e07485880ae37f704a9","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"d2885c05-9871-415a-b56b-1f8be9118eee","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.27","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T11:50:18.619Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-69e8a3903582d67906515060daa11d73","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"365faac2-f874-4ff7-91ef-3a2742187b58","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.26","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T11:46:12.832Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-5a1028a09d992b901d8bd636a1b0ce68","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"4cc9a1b2-4d46-476c-8ec0-57c757319ec2","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.25","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T11:28:33.621Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-f056541f69f502e1e3b04392be81d2b3","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"675770b0-b606-4cbe-b72d-b2aaa80f90db","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.24","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T10:01:53.855Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-dce118f7d8207370b0f8c92cdbd5e6a5","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=675770b0-b606-4cbe-b72d-b2aaa80f90db\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=675770b0-b606-4cbe-b72d-b2aaa80f90db\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=675770b0-b606-4cbe-b72d-b2aaa80f90db\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"b131a18d-c3b4-4e07-bb5e-3592202b469c","user_code_job_started_at":"2026-10-05T10:17:17.768Z","user_code_job_completed_at":"2026-10-05T10:26:56.483Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=0d7dec9f735ba9937b5b2dd8153edb3eb58b14cce3165bc1490668930afae169","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"f0fc25e3-0104-4bb4-8c73-8407ab634541","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.23","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T09:38:25.684Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-326151f63a5609ee8d2ebb82b8906a63","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"3b931487-803b-4b7a-abdb-57e9df26afa7","user_code_job_started_at":"2026-10-05T09:41:42.623Z","user_code_job_completed_at":"2026-10-05T09:46:36.732Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=0910c430f7e5f28ac2a1d03c2ba8c740ae8eac3367ef2f3befa751dab3036b5d","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"95d80230-a40b-445f-a850-5fd1f8328456","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.22","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-05T09:21:07.434Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-5c1eb1cf49f98c6256bbac6854a21e47","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=95d80230-a40b-445f-a850-5fd1f8328456\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=95d80230-a40b-445f-a850-5fd1f8328456\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"bfe7607b-2f65-4809-9a0f-0e4832ea0e1a","user_code_job_started_at":"2026-10-05T09:21:51.304Z","user_code_job_completed_at":"2026-10-05T09:37:52.060Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=133149f8463f16087347a5381b9a3b2d17b341e4e217fca0939d31a393f04819","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"26642768-083c-4e1d-8e9a-40be2c3b9610","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.21","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-05T09:06:24.047Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-b56b339475586bc6e1ac2b3ad2de33d5","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"66c5fb4e-874c-47f9-bb6c-c2e0cc3af6e1","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.20","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-04T21:17:18.347Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-e4d50315f0f796286d2500f59e9fbdb1","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"49ba840e-1a96-43e2-bd83-a7d3d7547e39","user_code_job_started_at":"2026-10-05T05:28:58.608Z","user_code_job_completed_at":"2026-10-05T05:59:06.640Z","user_code_job_error":{"message":"Build timed out after 30 minutes","error_code":"user_code_job_timeout"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=57de14c7af47917910ab19f77c9d4dd357bc03523eff169498c481db9ac2232c","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"073b45e4-02fc-4ef7-b4a2-276f897b6fca","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.19","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-04T16:06:25.417Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-954142a910e16ec37dca1f3df339b932","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=073b45e4-02fc-4ef7-b4a2-276f897b6fca\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=073b45e4-02fc-4ef7-b4a2-276f897b6fca\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=073b45e4-02fc-4ef7-b4a2-276f897b6fca\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"4f6f808e-44c5-4592-af13-4808a1dee8bc","user_code_job_started_at":"2026-10-04T16:12:18.843Z","user_code_job_completed_at":"2026-10-04T16:21:18.483Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=d1fed23103bfa293185b0576301c58d913e39b9062362a1a92e15227f3420eba","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"45293b24-fa68-4ee2-a866-5cb6e34c2c86","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.18","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-04T15:58:51.371Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-6a189ec687243c0a6b622dde2646fbc3","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e6ac90a9-3da9-425f-8e8c-b3f0264e6a54","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.17","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-02T19:58:05.381Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-16753a3ae52a5c4043b237d776477bea","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6ac90a9-3da9-425f-8e8c-b3f0264e6a54\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6ac90a9-3da9-425f-8e8c-b3f0264e6a54\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e6ac90a9-3da9-425f-8e8c-b3f0264e6a54\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"37c9f684-cfe3-472a-8357-53895e5531e5","user_code_job_started_at":"2026-10-04T15:08:25.373Z","user_code_job_completed_at":"2026-10-04T15:20:13.704Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=1ee861e09e99d71873e4d4a9c4576eca203f7af8c258e51f84dc8d6c86ef2620","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"86cece99-7ad0-4f19-9c25-9ff405152717","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.16","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-02T19:50:32.876Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-217f3485c1a5147f742a007926ded3da","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"eedbf6b4-b0fc-47f0-882c-8efb8c41a8e3","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.15","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-02T18:28:08.523Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-723d7a2a17d28773dbf27837cd619104","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=eedbf6b4-b0fc-47f0-882c-8efb8c41a8e3\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=eedbf6b4-b0fc-47f0-882c-8efb8c41a8e3\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=eedbf6b4-b0fc-47f0-882c-8efb8c41a8e3\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"1dedb5be-2b5c-4621-b3eb-525189c2a7f9","user_code_job_started_at":"2026-10-02T18:34:39.002Z","user_code_job_completed_at":"2026-10-02T18:48:03.404Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=5d1a3af44b756f3c5148173e86992895f814e7f62bbaccaff5ae3e947aeff95a","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"fe53dbb6-c20b-4002-a864-7d5ab00c970e","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.14","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-02T18:02:44.259Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-da0f9aa989edb179960972b3ad89072d","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"3b3faf20-0e99-4180-816f-3dd584081dfc","user_code_job_started_at":"2026-10-02T18:09:09.985Z","user_code_job_completed_at":"2026-10-02T18:24:34.006Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=698ceadf4a86ce9892bae64ef38f8673ce88d1c3d1c684f5b18c2bd145e55941","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"7c801a2b-8d14-4926-9010-0260244d5f59","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.13","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-02T17:34:12.037Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-f83ca8b02febab32b5cb097bb01efcc8","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"f2f621e4-67c7-4689-9ee8-37c1a15d045d","user_code_job_started_at":"2026-10-02T17:42:16.301Z","user_code_job_completed_at":"2026-10-02T17:55:43.184Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=9434143c0c90b6140561f347467928da829ac916c6a93cac5cfa9e2ec556bb72","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"d1878735-dbc7-4743-9c81-2e65b33d62ff","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.11","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-01T18:36:15.014Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-433342c1c8cf28bfdea0ec820aab1318","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=d1878735-dbc7-4743-9c81-2e65b33d62ff\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=d1878735-dbc7-4743-9c81-2e65b33d62ff\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=d1878735-dbc7-4743-9c81-2e65b33d62ff\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"4ebf010b-1cb3-4c67-a481-c679479e9e22","user_code_job_started_at":"2026-10-01T18:42:12.581Z","user_code_job_completed_at":"2026-10-01T18:50:36.908Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=7d998484307cfcd6c23d8fd4e44a80926ea957504fb7a6db5e9073943f12289b","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"8897ae51-2827-4dd6-b60a-1e3e165b5f42","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.10","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-01T17:23:14.912Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-c4ccbf59caae6a616c43d96e1e15e6ef","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8897ae51-2827-4dd6-b60a-1e3e165b5f42\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8897ae51-2827-4dd6-b60a-1e3e165b5f42\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8897ae51-2827-4dd6-b60a-1e3e165b5f42\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"a6ed638e-bf10-42e3-b89e-fd28ce309346","user_code_job_started_at":"2026-10-01T17:31:20.384Z","user_code_job_completed_at":"2026-10-01T17:44:37.474Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=2c02094c35e5a7a308b95f678789cc775646bf433d6ce8dbd2af4af428fcd3e5","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"8899c9c3-5374-4f95-864b-7a4b3499bd25","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.9","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-01T16:12:02.680Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-3567d66fdba9a5dfff22244ea3cd7133","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8899c9c3-5374-4f95-864b-7a4b3499bd25\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8899c9c3-5374-4f95-864b-7a4b3499bd25\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8899c9c3-5374-4f95-864b-7a4b3499bd25\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"afd61352-3d4b-4014-a7ae-a405b8f55868","user_code_job_started_at":"2026-10-01T16:23:03.633Z","user_code_job_completed_at":"2026-10-01T16:31:04.811Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=2e680a8297c55a96f04e6d0bdfe61196d744613bd804ed4f00767d4f172cfc97","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"7373da57-b74f-4fd8-a919-7bba7737dfb5","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.8","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-10-01T16:04:32.170Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-32aac27e06230aa255923001453434b2","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"3279672d-3a8b-4317-b0cd-a5cccf903c40","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.7","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-01T15:58:18.076Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-a00f45b388955e32d6cb70564e3839f9","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3279672d-3a8b-4317-b0cd-a5cccf903c40\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3279672d-3a8b-4317-b0cd-a5cccf903c40\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=3279672d-3a8b-4317-b0cd-a5cccf903c40\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"08d6f3c5-af95-42bd-96ed-4b218073b00c","user_code_job_started_at":"2026-10-01T16:17:48.247Z","user_code_job_completed_at":"2026-10-01T16:27:53.246Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=fe38cf55776fc8863bf5adb7bbebde83786aa418b198d7c138031a28e0d26eec","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"b808114b-bc19-45f3-9e6a-24e97746eba9","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.6","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-01T12:56:42.250Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-5e3042a150f264ee035d0123d591dd5b","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=b808114b-bc19-45f3-9e6a-24e97746eba9\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=b808114b-bc19-45f3-9e6a-24e97746eba9\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=b808114b-bc19-45f3-9e6a-24e97746eba9\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"142b2528-472e-4539-9335-387046f4e220","user_code_job_started_at":"2026-10-01T12:58:26.879Z","user_code_job_completed_at":"2026-10-01T13:13:31.340Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=6260310164cf88f72941f587ccf2f6e307428a27f14905b472b893816af86636","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"e0e7c82a-fa30-4b22-9509-571e837fa3da","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.5","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-01T12:44:41.574Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-5bb9f279de90941350ce3ce6cdc86137","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"6a3ea5fe-6b20-49c4-b076-5ce4259e5cf9","user_code_job_started_at":"2026-10-01T12:46:26.747Z","user_code_job_completed_at":"2026-10-01T12:53:11.686Z","user_code_job_error":{"message":"There was an error running the job on our infrastructure, this is probably not your code, see build logs","error_code":"user_code_job_infrastructure_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=a728e33192916cd26ebfe7b502c9f0f9169a8385fa013dacf0ce32bbaaba99b0","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"067b260a-5ead-4ec1-bf8b-01d32d8a2cd0","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.4","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-10-01T05:33:08.319Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-c9120b413caa56972a3e5a3c269ebd3e","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"55b2a169-7ec7-4234-b348-fd3c9b3d2e11","user_code_job_started_at":"2026-10-01T12:00:11.697Z","user_code_job_completed_at":"2026-10-01T12:15:45.951Z","user_code_job_error":{"message":"There was an error running the job on our infrastructure, this is probably not your code, see build logs","error_code":"user_code_job_infrastructure_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=f748b78e6c3c6b868243fffc546187d2bd8852ff6593a75b3eb14b8d753e93a3","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"f307972c-5d9d-4a9b-b863-6350d0fa6068","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.3","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-09-30T23:12:37.573Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-725e3307ff585e7707fbb49e0f47e11a","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=f307972c-5d9d-4a9b-b863-6350d0fa6068\u0026file_path=dist%2Findex%2Fpcb.svg","sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=f307972c-5d9d-4a9b-b863-6350d0fa6068\u0026file_path=dist%2Findex%2Fschematic.svg","cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=f307972c-5d9d-4a9b-b863-6350d0fa6068\u0026file_path=dist%2Findex%2F3d.png","package_release_website_url":null,"display_status":"pending","latest_package_build_id":"8a2a2fe5-0831-4696-8e6b-b575a9718699","user_code_job_started_at":"2026-09-30T23:16:28.551Z","user_code_job_completed_at":"2026-09-30T23:26:42.816Z","user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=a05b23425ccf2f5b25f52f657529d001ec13f7e544edb0737616ddb7758f8bd0","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"6bf18fb2-52fc-48fc-b29a-3fab93bad7f7","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.2","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":true,"is_pr_preview":false,"created_at":"2026-09-30T23:09:28.400Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":true,"transpilation_display_status":"pending","fs_sha":"md5-9591b99390b49f037552f3da683fda5a","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":true,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":true,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":"7ffdbc40-dbba-47ef-b513-5bfdaf591439","user_code_job_started_at":"2026-09-30T23:12:47.396Z","user_code_job_completed_at":"2026-09-30T23:24:22.417Z","user_code_job_error":{"message":"Your code failed to build (exit code 1), see build logs for the error details","error_code":"user_code_build_error"},"user_code_job_completed_logs":null,"user_code_job_log_stream_url":"https://usercode.tscircuit.com/user_code_jobs/view_log_stream?user_code_job_id=46b62a4f5c64a5292fbb3b54efb077fa1eec5b488c878c6983adf014942460ad","ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"bee88c24-a984-4313-9d1a-19c787c59e3c","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.1","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-09-30T22:57:12.122Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-d7fd24fb40171142ac55779401985aaf","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null},{"package_release_id":"12fca4e0-38e0-4884-9108-c26c28368399","package_id":"8d33bdc3-aed3-402c-a597-4096ab10fff3","version":"1.0.0","github_commit_sha":null,"is_locked":false,"is_latest":false,"ready_to_build":false,"is_pr_preview":false,"created_at":"2026-09-30T22:56:15.338Z","circuit_json_build_error":null,"circuit_json_build_error_last_updated_at":null,"has_transpiled":false,"transpilation_error":null,"transpilation_logs":null,"transpilation_in_progress":false,"transpilation_started_at":null,"transpilation_completed_at":null,"transpilation_is_stale":false,"transpilation_display_status":"pending","fs_sha":"md5-3ff194afef1be5e147c4ced30c88a417","circuit_json_build_logs":null,"circuit_json_build_in_progress":false,"circuit_json_build_started_at":null,"circuit_json_build_completed_at":null,"circuit_json_build_is_stale":false,"circuit_json_build_display_status":"pending","image_generation_error":null,"image_generation_error_last_updated_at":null,"image_generation_logs":null,"image_generation_in_progress":false,"image_generation_started_at":null,"image_generation_completed_at":null,"image_generation_is_stale":false,"image_generation_display_status":"pending","pcb_preview_image_url":null,"sch_preview_image_url":null,"cad_preview_image_url":null,"package_release_website_url":null,"display_status":"pending","latest_package_build_id":null,"user_code_job_started_at":null,"user_code_job_completed_at":null,"user_code_job_error":null,"user_code_job_completed_logs":null,"user_code_job_log_stream_url":null,"ai_review_requested":false,"github_pr_number":null,"github_pr_title":null,"github_branch_name":null}]; window.SSR_PACKAGE_BUILDS = []; window.SSR_RELATED_PACKAGES = [{"package_id":"486fb9f1-0aba-4bf5-b67d-b0c235c3ef51","creator_account_id":"63586009-ac32-446c-b5aa-a60ea81a44bf","latest_package_release_id":"e762c166-aeca-4a4c-8db9-a98979f4f6c6","last_built_release_id":"e762c166-aeca-4a4c-8db9-a98979f4f6c6","latest_package_release_fs_sha":"md5-a27f13ce7e9faa6e8ed222edd43371f6","latest_pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e762c166-aeca-4a4c-8db9-a98979f4f6c6\u0026file_path=dist%2Findex%2Fpcb.svg","latest_sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e762c166-aeca-4a4c-8db9-a98979f4f6c6\u0026file_path=dist%2Findex%2Fschematic.svg","latest_cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=e762c166-aeca-4a4c-8db9-a98979f4f6c6\u0026file_path=dist%2Findex%2F3d.png","latest_version":"0.0.1","license":"unset","owner_org_id":"e4b51b30-273d-4e29-92ed-981078150dff","org_owner_tscircuit_handle":"ShiboSoftwareDev","owner_github_username":"ShiboSoftwareDev","github_repo_full_name":null,"is_source_from_github":false,"description":null,"name":"ShiboSoftwareDev/muse-reterminal-e1001-replacement","unscoped_name":"muse-reterminal-e1001-replacement","star_count":0,"created_at":"2026-10-02T21:16:20.644Z","updated_at":"2026-10-02T21:21:04.552Z","ai_description":"A four-layer ESP32-S3 e-paper carrier board with USB-C power, AMS1117 3.3V regulation, 24-pin FFC interface, reset/boot and user buttons, status LED, decoupling passives, test points, mounting holes, and ground/power planes.","ai_usage_instructions":null,"is_private":false,"is_unlisted":false,"is_public":true,"public_dist_enabled":false,"has_public_dist":true,"starred_at":null,"default_view":"files","website":null,"github_installation_id":null,"allow_pr_previews":false,"related_type":"same_author","thumbnail_url":"https://api.tscircuit.com/package_files/view?package_release_id=e762c166-aeca-4a4c-8db9-a98979f4f6c6\u0026file_path=dist%2Findex%2Fpcb.svg"},{"package_id":"f0155dc4-d5c4-4924-b98c-5be0ca6b6bb6","creator_account_id":"97843ce3-26e5-402d-91aa-1f68763ad2dc","latest_package_release_id":"94dedd5a-1e4f-43e5-8594-dcea6c0910a3","last_built_release_id":"94dedd5a-1e4f-43e5-8594-dcea6c0910a3","latest_package_release_fs_sha":"md5-efd10d0b86b12b98e66e69930acfc1e3","latest_pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=94dedd5a-1e4f-43e5-8594-dcea6c0910a3\u0026file_path=dist%2Findex%2Fpcb.svg","latest_sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=94dedd5a-1e4f-43e5-8594-dcea6c0910a3\u0026file_path=dist%2Findex%2Fschematic.svg","latest_cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=94dedd5a-1e4f-43e5-8594-dcea6c0910a3\u0026file_path=dist%2Findex%2F3d.png","latest_version":"0.1.4","license":"unset","owner_org_id":"e6032e13-003f-41f1-b84f-6adfc66f838b","org_owner_tscircuit_handle":"gokul","owner_github_username":null,"github_repo_full_name":null,"is_source_from_github":false,"description":"Engineering draft: four-layer, computer-powered USB 3 hub with one USB-C host socket, two USB-C and two USB-A accessory sockets, and a full-size SD slot. Board and three schematic previews are available. Routing and production checks are incomplete; not fabrication ready.","name":"gokul/usb3-sd-hub","unscoped_name":"usb3-sd-hub","star_count":0,"created_at":"2026-10-11T02:10:47.315Z","updated_at":"2026-10-13T17:48:32.725Z","ai_description":"Four-layer PCB implementing a USB 5Gbps hub with one upstream USB‑C host, two USB‑C and two USB‑A downstream ports, integrated full-size SD/SDHC/SDXC reader, regulated 1.2/3.3V power, per-port current limiting, USB‑C orientation control, ESD protection, EEPROM/flash configuration, status LEDs, and controlled-impedance high-speed routing.","ai_usage_instructions":null,"is_private":false,"is_unlisted":false,"is_public":true,"public_dist_enabled":false,"has_public_dist":true,"starred_at":null,"default_view":"files","website":null,"github_installation_id":null,"allow_pr_previews":false,"related_type":"similar_ai_description","thumbnail_url":"https://api.tscircuit.com/package_files/view?package_release_id=94dedd5a-1e4f-43e5-8594-dcea6c0910a3\u0026file_path=dist%2Findex%2Fpcb.svg"},{"package_id":"ea8b9377-d570-4b77-a415-b62250dbc7ff","creator_account_id":"97843ce3-26e5-402d-91aa-1f68763ad2dc","latest_package_release_id":"8a89486b-fc6d-4334-9548-406cbe74c314","last_built_release_id":"8a89486b-fc6d-4334-9548-406cbe74c314","latest_package_release_fs_sha":"md5-6f05fd76cc2016dc1e0bfd03a44d1d23","latest_pcb_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8a89486b-fc6d-4334-9548-406cbe74c314\u0026file_path=dist%2Ffabrication%2Ffieldkit-usb-0.4.2%2Fpcb.svg","latest_sch_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8a89486b-fc6d-4334-9548-406cbe74c314\u0026file_path=dist%2Ffabrication%2Ffieldkit-usb-0.4.2%2Fschematic.svg","latest_cad_preview_image_url":"https://api.tscircuit.com/package_files/view?package_release_id=8a89486b-fc6d-4334-9548-406cbe74c314\u0026file_path=dist%2Findex%2F3d.png","latest_version":"0.4.2","license":"UNLICENSED","owner_org_id":"e6032e13-003f-41f1-b84f-6adfc66f838b","org_owner_tscircuit_handle":"gokul","owner_github_username":null,"github_repo_full_name":null,"is_source_from_github":false,"description":"USB-C-powered ESP32-S3 Wi-Fi/Bluetooth handheld with an SMD 128x32 OLED, six navigation buttons, USB-C power/data, complete checked routing, and four native schematic sheets.","name":"gokul/fieldkit-usb","unscoped_name":"fieldkit-usb","star_count":0,"created_at":"2026-10-02T14:09:54.196Z","updated_at":"2026-10-03T19:40:30.013Z","ai_description":"USB-C-powered ESP32-S3 handheld featuring Wi‑Fi/Bluetooth, a 128×32 SMD OLED, six navigation buttons, protected 1 A power input, and status LEDs.","ai_usage_instructions":null,"is_private":false,"is_unlisted":false,"is_public":true,"public_dist_enabled":false,"has_public_dist":true,"starred_at":null,"default_view":"files","website":null,"github_installation_id":null,"allow_pr_previews":false,"related_type":"random","thumbnail_url":"https://api.tscircuit.com/package_files/view?package_release_id=8a89486b-fc6d-4334-9548-406cbe74c314\u0026file_path=dist%2Ffabrication%2Ffieldkit-usb-0.4.2%2Fpcb.svg"}]; window.SSR_PACKAGE_ROUTE = {"author":"ShiboSoftwareDev","packageName":"linux-gameboy-advance","packageNameWithScope":"ShiboSoftwareDev/linux-gameboy-advance","version":null,"isLegacyRoute":false,"kind":"file","filePath":"scripts/verify.mjs"};
ShiboSoftwareDev/linux-gameboy-advance
A four-layer Linux handheld game-console carrier PCB built around an F1C100S SoC, USB-C and 2×AA power, LCD/microSD interfaces, flash, audio amplifier/speaker, controls, service headers, and RGB status LED.
Version
1.0.124
License
unset
Stars
0
scripts/verify.mjs
import assert from "node:assert/strict"
import fs from "node:fs"
const circuitPath = "dist/index/circuit.json"
const circuit = JSON.parse(fs.readFileSync(circuitPath, "utf8"))
const of = (type) => circuit.filter((record) => record.type === type)
const nearly = (actual, expected, tolerance = 1e-6) =>
Math.abs(actual - expected) <= tolerance
const pointToSegmentDistance = (point, start, end) => {
const dx = end.x - start.x
const dy = end.y - start.y
const lengthSquared = dx * dx + dy * dy
const position = lengthSquared === 0 ? 0 : Math.max(0, Math.min(1,
((point.x - start.x) * dx + (point.y - start.y) * dy) / lengthSquared))
return Math.hypot(point.x - (start.x + position * dx), point.y - (start.y + position * dy))
}
const readGlbJson = (path) => {
const bytes = fs.readFileSync(path)
assert.equal(bytes.toString("ascii", 0, 4), "glTF", `${path} is a binary glTF file`)
assert.equal(bytes.readUInt32LE(4), 2, `${path} uses glTF 2.0`)
assert.equal(bytes.readUInt32LE(8), bytes.length, `${path} has a valid declared length`)
let offset = 12
while (offset + 8 <= bytes.length) {
const length = bytes.readUInt32LE(offset)
const type = bytes.readUInt32LE(offset + 4)
const start = offset + 8
if (type === 0x4e4f534a) {
return JSON.parse(bytes.toString("utf8", start, start + length).trimEnd())
}
offset = start + length
}
throw new Error(`${path} has no JSON chunk`)
}
const errors = circuit.filter((record) => record.type.endsWith("_error"))
assert.equal(errors.length, 0, `expected zero emitted DRC/electrical errors; got ${errors.length}`)
for (const warningType of [
"schematic_sheet_styling_warning",
"schematic_element_outside_sheet_warning",
]) assert.equal(of(warningType).length, 0, `${warningType} count is zero`)
const board = of("pcb_board")[0]
assert.ok(board, "PCB board exists")
assert.equal(board.num_layers, 4, "four copper layers")
assert.ok(board.outline?.length >= 4, "custom board outline is present")
assert.ok(nearly(board.width, 144.5) && nearly(board.height, 84.27), "144.5 x 84.27 mm envelope")
assert.ok(nearly(board.min_via_hole_diameter, 0.3), "board via drill rule is 0.30 mm")
assert.ok(nearly(board.min_via_pad_diameter, 0.45), "board via pad rule is 0.45 mm")
assert.ok(nearly(board.min_via_hole_edge_to_via_hole_edge_clearance, 0.2), "finished-hole spacing rule is 0.20 mm")
const cutouts = of("pcb_cutout")
assert.equal(cutouts.length, 1, "one battery-cable edge cutout exists")
const batteryCableCutout = cutouts[0]
assert.equal(batteryCableCutout.shape, "polygon", "battery-cable cutout uses fabrication-safe outline geometry")
assert.ok(batteryCableCutout.points.length >= 15, "battery-cable cutout has a rounded closed end")
const cutoutXs = batteryCableCutout.points.map(({ x }) => x)
const cutoutYs = batteryCableCutout.points.map(({ y }) => y)
const cutoutBounds = {
minX: Math.min(...cutoutXs), maxX: Math.max(...cutoutXs),
minY: Math.min(...cutoutYs), maxY: Math.max(...cutoutYs),
}
assert.ok(nearly(cutoutBounds.maxX - cutoutBounds.minX, 5), "battery-cable cutout is 5 mm wide")
assert.ok(nearly(cutoutBounds.maxY - cutoutBounds.minY, 11), "battery-cable cutout is 11 mm long")
const boardBottomY = Math.min(...board.outline.map(({ y }) => y))
const boardTopY = Math.max(...board.outline.map(({ y }) => y))
assert.ok(cutoutBounds.minY < boardBottomY && nearly(cutoutBounds.maxY - boardBottomY, 9.5),
"battery-cable cutout opens through the bottom edge and extends 9.5 mm into the PCB")
const vias = of("pcb_via")
assert.ok(vias.length > 0, "routed board contains vias")
for (const via of vias) {
assert.ok(nearly(via.hole_diameter, 0.3), `${via.pcb_via_id}: drill is exactly 0.30 mm`)
assert.ok(nearly(via.outer_diameter, 0.45), `${via.pcb_via_id}: pad is exactly 0.45 mm`)
assert.deepEqual([...via.layers].sort(), ["bottom", "inner1", "inner2", "top"],
`${via.pcb_via_id}: physical via is a four-layer through-via`)
}
let minimumFinishedHoleGap = Infinity
let closestViaPair = []
for (let index = 0; index < vias.length; index++) {
for (let other = index + 1; other < vias.length; other++) {
const a = vias[index]
const b = vias[other]
const centerDistance = Math.hypot(a.x - b.x, a.y - b.y)
const gap = centerDistance - a.hole_diameter / 2 - b.hole_diameter / 2
if (gap < minimumFinishedHoleGap) {
minimumFinishedHoleGap = gap
closestViaPair = [a.pcb_via_id, b.pcb_via_id]
}
}
}
assert.ok(minimumFinishedHoleGap >= 0.2 - 1e-6,
`minimum via finished-hole gap ${minimumFinishedHoleGap.toFixed(6)} mm is at least 0.20 mm`)
// Regression for the fabrication review's exact failure: the former via at
// (8.399, 11.013) had only 0.177 mm from its finished-hole edge to an inner2
// module trace. Its repaired position must retain JLCPCB's 0.20 mm minimum.
// IDs are allocation-order dependent and change whenever another routed branch
// gains or loses a via. Identify the repaired transition by its stable route
// suffix and reviewed coordinate instead of pinning the check to a stale ID.
const reviewedVia = vias.find((via) =>
via.pcb_trace_id?.endsWith("source_net_6_mst40_0") &&
nearly(via.x, 8.399) && nearly(via.y, 10.65))
assert.ok(reviewedVia, "reviewed V3V3 transition via exists")
let reviewedViaCopperGap = Infinity
let reviewedViaNearestTrace = null
for (const trace of of("pcb_trace")) {
if (trace.pcb_trace_id === reviewedVia.pcb_trace_id ||
trace.subcircuit_connectivity_map_key === reviewedVia.subcircuit_connectivity_map_key) continue
for (let index = 1; index < (trace.route?.length ?? 0); index++) {
const start = trace.route[index - 1]
const end = trace.route[index]
if (start.route_type !== "wire" || end.route_type !== "wire") continue
const gap = pointToSegmentDistance(reviewedVia, start, end) -
reviewedVia.hole_diameter / 2 - Math.max(start.width, end.width) / 2
if (gap < reviewedViaCopperGap) {
reviewedViaCopperGap = gap
reviewedViaNearestTrace = trace.pcb_trace_id
}
}
}
assert.ok(reviewedViaCopperGap >= 0.2 - 1e-6,
`reviewed via finished-hole-to-copper gap ${reviewedViaCopperGap.toFixed(3)} mm is at least 0.20 mm`)
const sourceComponents = of("source_component")
const sourceById = new Map(sourceComponents.map((component) => [component.source_component_id, component]))
const pcbComponents = of("pcb_component")
const missingCourtyardWarnings = of("pcb_component_missing_courtyard_warning")
assert.deepEqual(missingCourtyardWarnings, [],
`every PCB component has courtyard geometry: ${missingCourtyardWarnings.map((warning) => warning.message).join(", ")}`)
const courtyardComponentIds = new Set([
...of("pcb_courtyard_rect"),
...of("pcb_courtyard_outline"),
].map((courtyard) => courtyard.pcb_component_id))
const fitted = pcbComponents
.map((pcb) => ({ pcb, source: sourceById.get(pcb.source_component_id) }))
.filter(({ pcb, source }) => source && !pcb.do_not_place && source.ftype !== "simple_test_point")
const missingJlcpcb = fitted
.filter(({ source }) => !source.supplier_part_numbers?.jlcpcb?.some((id) => /^C\d+$/.test(id)))
.map(({ source }) => source.name)
assert.deepEqual(missingJlcpcb, [], `all fitted parts have explicit JLCPCB/LCSC IDs: ${missingJlcpcb.join(", ")}`)
const uniqueJlcpcbParts = new Set(fitted.flatMap(({ source }) => source.supplier_part_numbers.jlcpcb))
const componentByName = new Map(sourceComponents.map((component) => [component.name, component]))
const pcbByName = new Map(pcbComponents.map((pcb) => [sourceById.get(pcb.source_component_id)?.name, pcb]))
const cadByName = new Map(of("cad_component").map((cad) => [sourceById.get(cad.source_component_id)?.name, cad]))
const schematicByName = new Map(of("schematic_component")
.map((schematic) => [sourceById.get(schematic.source_component_id)?.name, schematic]))
for (const name of ["C_TV_REF", "Y1", "FB_SPK_POS", "FB_SPK_NEG", "J_SPK", "CASE_SCREEN_WINDOW"])
assert.ok(courtyardComponentIds.has(pcbByName.get(name)?.pcb_component_id),
`${name} has explicit courtyard geometry`)
for (const name of [
"U1", "J_LCD", "J_SD", "U_FLASH", "U_IO", "J_USB", "J_BAT",
"U_BUCK_3V3", "L_BUCK_3V3", "Q_BAT_IDEAL", "U_2V5", "U_1V2", "U_2V8", "U_SPK_AMP", "J_SPK",
"J_UART", "J_I2C", "J_SPI", "R_UART_RX_SER", "R_UART_TX_SER", "JP_BOOT",
"U_LCD_BL", "L_LCD_BL", "D_LCD_BL", "C_LCD_BL_IN", "C_LCD_BL_OUT",
"R_LCD_BL_SET_A", "R_LCD_BL_SET_B",
"D_STATUS", "R_STATUS_R", "R_STATUS_G", "R_STATUS_B",
]) assert.ok(componentByName.has(name), `critical component ${name} exists`)
assert.equal(componentByName.get("D_STATUS").manufacturer_part_number,
"F.1615.00026/P4-1615G2B2R4TS2-06T-001-24",
"status indicator uses the exact low-forward-voltage common-anode RGB LED")
assert.deepEqual(componentByName.get("D_STATUS").supplier_part_numbers.jlcpcb, ["C7496855"],
"status RGB LED has an explicit JLCPCB part")
assert.ok(nearly(pcbByName.get("D_STATUS").center.x, -6.5) && nearly(pcbByName.get("D_STATUS").center.y, -18.5),
"status LED stays centered between the display and Start/Select")
for (const [name, resistance, jlc] of [
["R_STATUS_R", 330, "C23138"],
["R_STATUS_G", 100, "C22775"],
["R_STATUS_B", 100, "C22775"],
]) {
assert.ok(nearly(componentByName.get(name).resistance, resistance), `${name} has the intended current limit`)
assert.deepEqual(componentByName.get(name).supplier_part_numbers.jlcpcb, [jlc],
`${name} uses the audited JLCPCB resistor`)
}
for (const traceName of [
"STATUS_RED_IO", "STATUS_GREEN_IO", "STATUS_BLUE_IO",
"STATUS_LED_CA", "STATUS_RED_LIMIT", "STATUS_GREEN_LIMIT", "STATUS_BLUE_LIMIT",
]) assert.ok(of("source_trace").some((trace) => trace.name === traceName),
`${traceName} is present in the final source netlist`)
assert.equal(componentByName.get("U_BUCK_3V3").manufacturer_part_number, "TPS63020DSJR",
"two-AA input uses a true buck-boost regulator")
assert.deepEqual(componentByName.get("U_BUCK_3V3").supplier_part_numbers.jlcpcb, ["C15483"],
"TPS63020 has an explicit JLCPCB part")
assert.equal(componentByName.get("L_BUCK_3V3").manufacturer_part_number, "YHNR4020-1R5M",
"buck-boost uses the datasheet-class 1.5 uH inductor")
assert.deepEqual(componentByName.get("L_BUCK_3V3").supplier_part_numbers.jlcpcb, ["C18199423"],
"buck-boost inductor has an explicit JLCPCB part")
assert.equal(componentByName.get("Q_BAT_IDEAL").manufacturer_part_number, "AO3401A",
"battery source selection avoids a low-voltage Schottky drop")
assert.equal(componentByName.get("J_USB").manufacturer_part_number, "TYPE-C-31-M-12",
"the original USB-C receptacle remains the USB2/FEL data port")
assert.equal(componentByName.get("J_USB").ftype, "simple_connector",
"the USB2/FEL port uses the standard USB-C connector schematic symbol")
assert.ok(nearly(schematicByName.get("J_USB")?.size.width, 1.575),
"J_USB uses the schematic analyzer's accepted standard USB-C box width")
assert.equal(sourceComponents.filter((component) => component.name?.startsWith("J_USB")).length, 1,
"the handheld has exactly one USB-C receptacle")
for (const removedName of [
"J_USB_PD", "U_PD", "R_PD_VDD", "R_PD_VBUS", "C_PD_VDD",
"D_PD_TVS", "C_PD_BULK", "C_PD_HF", "D_PD_OR",
]) assert.equal(componentByName.has(removedName), false, `${removedName} was removed with the PD island`)
assert.equal(pcbByName.get("JP_BOOT").do_not_place, true,
"JP_BOOT is a copper-only DNP solder bridge")
assert.equal(cadByName.has("JP_BOOT"), false,
"JP_BOOT has no 3D model")
for (const name of ["R_UART_RX_SER", "R_UART_TX_SER"]) {
assert.ok(nearly(componentByName.get(name).resistance, 100), `${name} is 100 ohms`)
assert.deepEqual(componentByName.get(name).supplier_part_numbers.jlcpcb, ["C25076"],
`${name} uses the audited JLCPCB resistor`)
}
for (const traceName of [
"UART_JST_RX", "UART_JST_TX",
"UART_RX_SER_MCU", "UART_TX_SER_MCU",
]) assert.ok(of("source_trace").some((trace) => trace.name === traceName),
`${traceName} is present in the final source netlist`)
assert.equal(of("source_trace").filter((trace) => trace.name?.startsWith("PD_")).length, 0,
"no obsolete USB-PD traces remain")
const sheetNames = new Set(of("schematic_sheet").map((sheet) => sheet.name))
for (const name of [
"soc_interfaces", "soc_power", "soc_support", "display", "storage", "controls_service", "usb_power",
"secondary_rails", "audio", "backlight", "status",
]) assert.ok(sheetNames.has(name), `schematic sheet ${name} exists`)
for (const name of ["R_FLASH_WP", "R_FLASH_HOLD", "R_FLASH_CS"])
assert.equal(schematicByName.get(name)?.symbol_name, "boxresistor_up",
`${name} pull-up symbol faces the positive rail`)
const hasRenderableCad = (cad) => Boolean(cad && (
cad.model_step_url || cad.model_obj_url || cad.model_glb_url ||
cad.model_gltf_url || cad.model_stl_url || cad.jscad || cad.footprinter_string
)) && !cad.show_as_bounding_box
const missingCadModels = fitted
.filter(({ source }) => !hasRenderableCad(cadByName.get(source.name)))
.map(({ source }) => source.name)
assert.deepEqual(missingCadModels, [],
`every fitted PCB part has a renderable non-placeholder 3D model: ${missingCadModels.join(", ")}`)
assert.equal(componentByName.get("U_LCD_BL").manufacturer_part_number, "AP3031KTR-G1",
"LCD uses a regulated AP3031 boost/current driver")
assert.deepEqual(componentByName.get("U_LCD_BL").supplier_part_numbers.jlcpcb, ["C82636"],
"LCD current driver has an explicit JLCPCB part")
assert.deepEqual(componentByName.get("L_LCD_BL").supplier_part_numbers.jlcpcb, ["C2997603"],
"LCD boost inductor has an explicit JLCPCB part")
assert.deepEqual(componentByName.get("D_LCD_BL").supplier_part_numbers.jlcpcb, ["C2909920"],
"LCD boost diode has an explicit JLCPCB part")
for (const name of ["R_LCD_BL_SET_A", "R_LCD_BL_SET_B"]) {
assert.ok(nearly(componentByName.get(name).resistance, 1), `${name} is 1 ohm`)
assert.deepEqual(componentByName.get(name).supplier_part_numbers.jlcpcb, ["C137355"],
`${name} has an explicit JLCPCB part`)
assert.equal(pcbByName.get(name).layer, "top", `${name} is on the top side`)
}
for (const name of [
"U_LCD_BL", "L_LCD_BL", "D_LCD_BL", "C_LCD_BL_IN", "C_LCD_BL_OUT",
"R_LCD_BL_SET_A", "R_LCD_BL_SET_B",
]) assert.equal(pcbByName.get(name).layer, "top", `${name} is on the top side`)
const lcdBacklightCurrentMa = 0.2 / (1 + 1) * 1000
assert.ok(nearly(lcdBacklightCurrentMa, 100), "AP3031 sense network regulates the LCD backlight to 100 mA")
const expectedButtons = ["UP", "DOWN", "LEFT", "RIGHT", "A", "B", "X", "Y", "SELECT", "START", "L", "R"]
for (const label of expectedButtons)
assert.ok(componentByName.has(`SW_${label}`), `${label} control exists`)
assert.equal(sourceComponents.filter((component) => component.name?.startsWith("SW_")).length, 13,
"twelve game controls plus reset switch")
const placement = (name, x, y, rotation) => {
const pcb = pcbByName.get(name)
assert.ok(pcb, `${name} has a PCB placement`)
// Imported footprints can have an asymmetric copper centroid. Their
// display offset is the component origin set by pcbX/pcbY; fall back to the
// geometric center for symmetric/native footprints.
const placedX = pcb.display_offset_x ?? pcb.center.x
const placedY = pcb.display_offset_y ?? pcb.center.y
assert.ok(nearly(placedX, x) && nearly(placedY, y), `${name} placement is ${x}, ${y}`)
assert.ok(nearly(pcb.rotation, rotation), `${name} rotation is ${rotation} degrees`)
}
placement("SW_SELECT", -14, -26, 0)
placement("SW_START", 1, -26, 0)
for (const name of ["SW_SELECT", "SW_START"])
assert.deepEqual(componentByName.get(name).supplier_part_numbers.jlcpcb, ["C18186519"],
`${name} uses the same long-plunger JLC button as the reference Game Boy`)
placement("SW_L", -45, 39.32595785, 0)
placement("SW_R", 45, 39.32595785, 0)
for (const name of ["SW_L", "SW_R"]) {
assert.deepEqual(componentByName.get(name).supplier_part_numbers.jlcpcb, ["C33543618"],
`${name} is the mid-length variant of the original low-profile shoulder-switch family`)
assert.match(cadByName.get(name)?.model_step_url ?? "", /C33543618\.step/,
`${name} has the real JLC 3D model`)
}
const shoulderBoardEdgeY = 43.27
const shoulderBodyEdgeY = 39.32595785 + 3.94404215
const shoulderActuatorTipY = 39.32595785 + 6.97499875
assert.ok(Math.abs(shoulderBodyEdgeY - shoulderBoardEdgeY) < 0.01,
"shoulder switch housings finish flush with the top board edge")
assert.ok(shoulderActuatorTipY - shoulderBoardEdgeY >= 3.03,
"mid-length shoulder actuators project about 3.03 mm beyond the top board edge")
const volumePlacement = { x: -63.1291306297, y: 26.0729869550 }
const volumeRotationDeg = 46.7780905471
placement("RV_VOLUME", volumePlacement.x, volumePlacement.y, volumeRotationDeg)
const volumeCad = cadByName.get("RV_VOLUME")
assert.ok(volumeCad, "volume control has its real C231765 CAD model")
assert.ok(nearly(volumeCad.rotation.z, volumeRotationDeg),
"volume wheel faces diagonally toward the upper-left corner")
const volumeRotationRad = volumeRotationDeg * Math.PI / 180
const volumeOutward = {
x: -Math.sin(volumeRotationRad),
y: Math.cos(volumeRotationRad),
}
const volumeInward = { x: -volumeOutward.x, y: -volumeOutward.y }
assert.ok(volumeOutward.x < -0.70 && volumeOutward.y > 0.65,
"volume wheel points outward along the rounded-corner bisector")
// The wheel points at the vertex joining the two upper-left edge segments.
// Project the real CAD extents and placement onto that same corner bisector.
const volumeCorner = { x: -70.5, y: 33 }
const volumeCenterInsetMm =
(volumePlacement.x - volumeCorner.x) * volumeInward.x +
(volumePlacement.y - volumeCorner.y) * volumeInward.y
const volumeModelOriginY = -2.8229947
const volumeWheelMaxY = 7
const volumeHousingMaxY = 5.066803
const volumeCadOffsetAlongOutward =
(volumeCad.position.x - volumePlacement.x) * volumeOutward.x +
(volumeCad.position.y - volumePlacement.y) * volumeOutward.y
const volumeWheelReachMm = volumeCadOffsetAlongOutward + volumeWheelMaxY - volumeModelOriginY
const volumeHousingReachMm = volumeCadOffsetAlongOutward + volumeHousingMaxY - volumeModelOriginY
const volumeWheelProtrusionMm = volumeWheelReachMm - volumeCenterInsetMm
const volumeHousingCornerProtrusionMm = volumeHousingReachMm - volumeCenterInsetMm
assert.ok(volumeWheelProtrusionMm >= 0.89,
"volume thumbwheel remains exposed at least 0.89 mm through the corner aperture")
const volumePcb = pcbByName.get("RV_VOLUME")
const volumeMountingSlots = of("pcb_plated_hole")
.filter((hole) => hole.pcb_component_id === volumePcb.pcb_component_id && hole.shape === "pill")
assert.equal(volumeMountingSlots.length, 2, "volume control has both plated mounting slots")
const boardEdges = board.outline.map((start, index) => ({
start,
end: board.outline[(index + 1) % board.outline.length],
}))
for (const point of board.outline) {
assert.ok(board.outline.some((candidate) => nearly(candidate.x, -point.x) && nearly(candidate.y, point.y)),
`board outline point (${point.x}, ${point.y}) has a mirrored counterpart`)
}
const slotCopperEdgeClearance = (slot) => {
const rotation = (slot.ccw_rotation ?? 0) * Math.PI / 180
const longAxis = { x: -Math.sin(rotation), y: Math.cos(rotation) }
const radius = slot.outer_width / 2
const halfStraight = (slot.outer_height - slot.outer_width) / 2
return Math.min(...boardEdges.map(({ start, end }) => {
const dx = end.x - start.x
const dy = end.y - start.y
const length = Math.hypot(dx, dy)
const inward = { x: -dy / length, y: dx / length }
const centerDistance = (slot.x - start.x) * inward.x + (slot.y - start.y) * inward.y
const copperSupport = radius + halfStraight * Math.abs(
inward.x * longAxis.x + inward.y * longAxis.y)
return centerDistance - copperSupport
}))
}
const volumeSlotCopperClearances = volumeMountingSlots.map(slotCopperEdgeClearance)
const volumeMountingSlotEdgeClearanceMm = Math.min(...volumeSlotCopperClearances)
assert.ok(volumeMountingSlotEdgeClearanceMm >= 0.549,
"both volume-control mounting-slot copper features retain 0.55 mm board-edge clearance")
placement("J_LCD", 40.8, 15, 270)
placement("J_SD", 62.74868915, 22, 90)
placement("JP_BOOT", -49.27, 18, 0)
placement("J_BAT", -40, -37.4, 270)
placement("J_PWR_SW", -68.983, -24, 180)
placement("J_UART", -18, 37, 180)
placement("J_I2C", -28, 37, 180)
placement("J_SPI", 22, 37, 180)
for (const name of ["J_UART", "J_I2C", "J_SPI"])
assert.equal(pcbByName.get(name).layer, "top", `${name} stays at its intentional rear-edge position on the top side`)
const boardRightX = Math.max(...board.outline.map(({ x }) => x))
const microSd = pcbByName.get("J_SD")
const microSdCad = cadByName.get("J_SD")
assert.ok(microSdCad, "microSD socket has its real C91145 CAD model")
assert.ok(nearly(microSdCad.rotation.z, 90), "microSD card mouth faces the right edge")
// Exact bounds measured from the C91145 OBJ used by the board. At 90 degrees,
// the model's minimum local Y becomes the rightmost card-entry face and its
// local X bounds become the installed vertical housing bounds.
const microSdModelMinY = -4.4
const microSdModelMinX = -8.052222
const microSdModelMaxX = 8.047777
const microSdEntryFaceX = microSd.center.x + microSdCad.model_origin_position.y - microSdModelMinY
const microSdHousingMinY = microSd.center.y + microSdModelMinX - microSdCad.model_origin_position.x
const microSdHousingMaxY = microSd.center.y + microSdModelMaxX - microSdCad.model_origin_position.x
assert.ok(nearly(microSdEntryFaceX, boardRightX),
"microSD card-entry face finishes exactly flush with the uninterrupted right PCB edge")
const straightRightEdgeYs = board.outline
.filter(({ x }) => nearly(x, boardRightX))
.map(({ y }) => y)
assert.ok(Math.min(...straightRightEdgeYs) <= microSdHousingMinY &&
Math.max(...straightRightEdgeYs) >= microSdHousingMaxY,
"the full rigid microSD housing is backed by the straight PCB edge")
assert.ok(!board.outline.some(({ x, y }) => nearly(x, 65) && (nearly(y, 12) || nearly(y, 30))),
"the former microSD access recess is removed")
// The component's 180-degree PCB rotation plus the CAD model's 90-degree
// offset points the real C136720 actuator toward global -X. The housing is
// deliberately inset from the straight left edge; only the actuator projects.
const powerSwitch = pcbByName.get("J_PWR_SW")
const powerSwitchCad = cadByName.get("J_PWR_SW")
assert.ok(powerSwitchCad, "power switch has its real C136720 CAD model")
assert.ok(nearly(powerSwitchCad.rotation.z, 270), "power-switch CAD actuator faces global -X")
const powerCadOriginY = powerSwitchCad.model_origin_position.y
const boardLeftX = Math.min(...board.outline.map(({ x }) => x))
const powerActuatorTipX = powerSwitch.center.x - 7.4 - powerCadOriginY
const powerBodyLeftX = powerSwitch.center.x - 2.4 - powerCadOriginY
const powerActuatorProtrusionMm = boardLeftX - powerActuatorTipX
const powerBodyInsetMm = powerBodyLeftX - boardLeftX
assert.ok(powerActuatorProtrusionMm >= 4.49,
"real power-switch CAD actuator extends at least 4.49 mm beyond the left PCB edge")
assert.ok(powerBodyInsetMm >= 0.49,
"real power-switch CAD housing face remains at least 0.49 mm inside the left PCB edge")
const powerHousingMinY = powerSwitch.center.y - 6.45
const powerHousingMaxY = powerSwitch.center.y + 6.45
const straightLeftEdgeYs = board.outline
.filter(({ x }) => nearly(x, boardLeftX))
.map(({ y }) => y)
assert.ok(Math.min(...straightLeftEdgeYs) <= powerHousingMinY &&
Math.max(...straightLeftEdgeYs) >= powerHousingMaxY,
"the power-switch housing is centered on the straight left edge, not a rounded corner")
assert.ok(Math.abs(pcbByName.get("J_BAT").center.y - boardBottomY) < 5,
"battery connector is beside the bottom cable cutout")
const landscapePanelHalfWidthMm = 84.96 / 2
const bootJumperRightEdge = pcbByName.get("JP_BOOT").center.x + pcbByName.get("JP_BOOT").width / 2
assert.ok(bootJumperRightEdge < -landscapePanelHalfWidthMm,
"boot solder bridge is fully outside the landscape LCD module envelope")
const batteryConnectorCourtyardRightX = pcbByName.get("J_BAT").center.x + 6.5492
const batteryCableBendCorridorMm = cutoutBounds.minX - batteryConnectorCourtyardRightX
assert.ok(batteryCableBendCorridorMm >= 5.9,
"battery connector leaves at least 5.9 mm for the cable to bend before the cutout")
assert.match(cadByName.get("U1")?.model_step_url ?? "", /C1511928\.step/,
"F1C100S uses the real JLC 3D model")
assert.match(cadByName.get("U_FLASH")?.model_step_url ?? "", /C97521\.step/,
"SPI flash uses the real JLC 3D model")
assert.equal(cadByName.get("U1")?.show_as_bounding_box, undefined, "F1C100S is not a placeholder box")
assert.equal(cadByName.get("U_FLASH")?.show_as_bounding_box, undefined, "SPI flash is not a placeholder box")
const screenComponent = componentByName.get("ER_TFT035IPS_6")
const screenCad = cadByName.get("ER_TFT035IPS_6")
const screenModelFile = "er-tft035ips-6-oem-installed-v5.glb"
assert.ok(screenComponent, "ER-TFT035IPS-6 assembly screen exists")
assert.ok(screenCad, "ER-TFT035IPS-6 has a 3D assembly model")
assert.match(screenCad.model_glb_url ?? "", new RegExp(`${screenModelFile}$`),
"screen uses the OEM STEP-derived GLB assembly rather than a generic slab")
assert.ok(nearly(screenCad.position.x, 40.8) && nearly(screenCad.position.y, 15),
"screen 3D model is anchored to J_LCD")
assert.ok(nearly(screenCad.rotation.z, 90),
"screen 3D model extends left from the right-side J_LCD cable-entry axis")
const screenGlb = readGlbJson(`assets/${screenModelFile}`)
const screenNode = screenGlb.nodes?.find(({ name }) => name === "ER-TFT035-6-OEM-installed")
assert.ok(screenNode, "screen GLB contains the named OEM node")
const screenMesh = screenGlb.meshes?.[screenNode.mesh]
assert.ok(screenMesh, "screen GLB OEM node references its exported mesh")
assert.equal(screenNode.extras?.source, "ER-TFT035-6.step",
"screen GLB identifies the manufacturer STEP source")
assert.equal(screenNode.extras?.rigidGeometry, "OEM STEP, unscaled",
"screen GLB records unscaled rigid OEM geometry")
assert.ok(nearly(screenNode.extras?.rigidPanelWidthMm, 84.96) &&
nearly(screenNode.extras?.rigidPanelHeightMm, 56.54),
"screen GLB records the exact 84.96 x 56.54 mm rigid outline")
assert.ok(nearly(screenNode.extras?.flexPathLengthMm, 30),
"screen GLB records an exact 30 mm installed FPC path")
assert.ok(screenNode.extras?.minimumInstalledBendRadiusMm >= 2.0,
`installed display flex bend radius is too small: ${screenNode.extras?.minimumInstalledBendRadiusMm}`)
assert.ok(screenNode.extras?.bendRadiusToThicknessRatio >= 10,
`installed display flex bend ratio is too small: ${screenNode.extras?.bendRadiusToThicknessRatio}`)
const screenPositionAccessors = screenMesh.primitives
.map(({ attributes }) => screenGlb.accessors[attributes.POSITION])
const screenModelMinLocalX = Math.min(...screenPositionAccessors.map(({ min }) => min[0]))
const screenModelMaxLocalX = Math.max(...screenPositionAccessors.map(({ max }) => max[0]))
const screenInstalledLateralOffsetMm = screenNode.extras.installedPanelLateralOffsetMm
assert.ok(nearly(screenInstalledLateralOffsetMm, 0),
"screen GLB keeps the OEM panel and FPC on the same centerline")
assert.ok(nearly(screenModelMinLocalX, -28.27) && nearly(screenModelMaxLocalX, 28.27),
"screen GLB exported X bounds match the centered 56.54 mm rigid panel")
const previousScreenTopOverhangMm = screenCad.position.y + screenModelMaxLocalX - 41
// Positive 90-degree Z rotation extends the model's positive local Y to the
// left of J_LCD, and maps local X onto PCB Y.
const screenTopEdgeY = screenCad.position.y + screenModelMaxLocalX
assert.ok(nearly(screenTopEdgeY, boardTopY),
"screen top edge is exactly flush with the PCB top edge")
const printedPartNames = [
"GBA_CASE_BASE", "GBA_CASE_LID", "GBA_BATTERY_DOOR",
"LCD_CARRIER", "SPK_RETAINER", "DPAD_CAP", "BUTTON_CAP_A", "BUTTON_CAP_B",
"BUTTON_CAP_X", "BUTTON_CAP_Y", "BUTTON_CAP_SELECT", "BUTTON_CAP_START",
"SHOULDER_PADDLE_L", "SHOULDER_PADDLE_R",
]
const printedPartCad = new Map()
for (const name of printedPartNames) {
const source = componentByName.get(name)
assert.ok(source, `native printed part ${name} exists`)
assert.equal(source.ftype, "printedpart", `${name} uses the native printed-part API`)
assert.equal(source.material, "petg", `${name} has its intended printable material`)
const models = of("cad_component").filter((cad) =>
cad.source_component_id === source.source_component_id)
assert.equal(models.length, 1, `${name} emits exactly one printable solid`)
assert.equal(models[0].model_jscad?.type, "rotate", `${name} has native JSCAD geometry`)
assert.ok(models[0].model_jscad?.shape, `${name} has a nonempty authored shape`)
printedPartCad.set(name, models[0])
}
const baseShape = printedPartCad.get("GBA_CASE_BASE").model_jscad.shape
const lidShape = printedPartCad.get("GBA_CASE_LID").model_jscad.shape
const batteryDoorShape = printedPartCad.get("GBA_BATTERY_DOOR").model_jscad.shape
const carrierShape = printedPartCad.get("LCD_CARRIER").model_jscad.shape
const dpadShape = printedPartCad.get("DPAD_CAP").model_jscad.shape
assert.equal(baseShape.type, "subtract", "base is a printable shell with authored openings")
assert.equal(lidShape.type, "subtract", "lid is a printable bezel with authored openings")
assert.equal(batteryDoorShape.type, "subtract", "battery door has an authored panel, tongue, integral latch, and thumb dimple")
assert.equal(carrierShape.type, "subtract", "LCD carrier includes blind screw pilots")
const baseOuterPrism = baseShape.shapes[0].shapes[0].shapes[0]
const baseInnerPrism = baseShape.shapes[0].shapes[0].shapes[1]
assert.equal(baseOuterPrism.type, "translate", "base exterior is an extruded board-profile polygon")
assert.equal(baseInnerPrism.type, "translate", "base cavity uses an independent inset profile")
assert.equal(baseOuterPrism.shape.shape.points.length, board.outline.length,
"manual enclosure preserves every rounded/chamfered board-outline segment")
assert.ok(nearly(baseOuterPrism.shape.options.height, 29),
"continuous base wall reaches the authored lid datum from the two-AA depth")
assert.ok(nearly(baseInnerPrism.shape.options.height, 27.8),
"continuous base has a 1.6 mm rear floor")
const bottomOuterY = Math.min(...baseOuterPrism.shape.shape.points.map(([, y]) => y))
const bottomInnerY = Math.min(...baseInnerPrism.shape.shape.points.map(([, y]) => y))
assert.ok(nearly(bottomInnerY - bottomOuterY, 1.4),
"continuous base keeps a 1.4 mm wall after adding 0.8 mm PCB assembly clearance")
const batteryCradleShape = baseShape.shapes[0].shapes.find((shape) =>
shape.type === "union" && shape.shapes?.length === 9 &&
shape.shapes[0]?.shape?.size?.[1] === 58.1)
const batteryDoorOpening = baseShape.shapes.find((shape) =>
shape.type === "union" && shape.shapes?.[1]?.shape?.size?.[0] === 33.6)
const batteryDoorRebate = baseShape.shapes.find((shape) =>
shape.type === "union" && shape.shapes?.[1]?.shape?.size?.[0] === 37)
assert.equal(batteryCradleShape.type, "union", "base includes an integrated two-AA cradle")
assert.equal(batteryCradleShape.shapes.length, 9,
"two-AA cradle has side rails, center rib, contact bulkheads, shelves, and two wire clips")
assert.deepEqual(batteryCradleShape.shapes[0].shape.size, [1.6, 58.1, 6],
"two-AA cradle side rails overlap the 57.7 mm inside-wall contact layout")
assert.deepEqual(batteryCradleShape.shapes[2].shape.size, [1.2, 58.1, 2.4],
"two-AA cradle has a low center separator joined to both contact bulkheads")
assert.ok(nearly(batteryCradleShape.shapes[3].shape.size[1], 1.65) &&
nearly(batteryCradleShape.shapes[4].shape.size[1], 1.65),
"battery contact bulkheads stay inside Keystone's 1.52-1.78 mm snap-on wall range")
const batteryInsideWallLengthMm =
(batteryCradleShape.shapes[4].vector[1] - batteryCradleShape.shapes[4].shape.size[1] / 2) -
(batteryCradleShape.shapes[3].vector[1] + batteryCradleShape.shapes[3].shape.size[1] / 2)
assert.ok(nearly(batteryInsideWallLengthMm, 57.7),
"209/210 two-cell series contact bulkheads use the specified 57.7 mm inside-wall spacing")
assert.equal(batteryDoorOpening.type, "union", "base has a rounded removable-door opening")
assert.equal(batteryDoorRebate.type, "union", "base has a shallow flush-door rebate")
assert.deepEqual(batteryDoorOpening.shapes[1].shape.size, [33.6, 49.6, 2.4],
"battery door opening is 33.6 x 56 mm with rounded corners")
assert.deepEqual(batteryDoorRebate.shapes[1].shape.size, [37, 51.4, 1.25],
"battery door rebate is 37 x 59.4 mm and 1.25 mm deep")
const batteryDoorPanel = batteryDoorShape.shapes[0].shapes[0]
assert.equal(batteryDoorPanel.type, "union", "battery door starts with a rounded exterior panel")
assert.deepEqual(batteryDoorPanel.shapes[1].shape.size, [36.4, 51.4, 0.9],
"battery door perimeter flange is 36.4 x 58.8 mm and 0.9 mm thick")
const batteryDoorReinforcement = batteryDoorShape.shapes[0].shapes[1]
assert.equal(batteryDoorReinforcement.type, "union", "battery door has an inner central reinforcement")
assert.ok(batteryDoorReinforcement.shapes[1].shape.size.every((value, index) =>
nearly(value, [31.6, 49.6, 0.32][index])),
"battery door central doubler restores a 1.2 mm section inside the through-opening")
const batteryDoorUnionMembers = batteryDoorShape.shapes[0].shapes
const batteryLatchBeam = batteryDoorUnionMembers.find((shape) =>
shape.shape?.type === "cuboid" && shape.shape.size?.[0] === 7.2 && shape.shape.size?.[1] === 11.2)
const batteryLatchHook = batteryDoorUnionMembers.find((shape) =>
shape.shape?.type === "cuboid" && shape.shape.size?.[0] === 8.2 && shape.shape.size?.[1] === 2.0)
assert.ok(batteryLatchBeam && batteryLatchHook,
"battery door has an integral cantilever beam and positive retaining hook")
assert.equal(batteryDoorShape.shapes.filter((shape) =>
shape.shape?.type === "cuboid" && shape.shape.size?.[0] === 0.8 && shape.shape.size?.[1] === 11.2).length, 2,
"battery-door latch is released by two parallel compliance slots, not a loose printed part")
const findBaseCutoutAt = (x, y, z) => baseShape.shapes.find((shape) =>
shape.vector && nearly(shape.vector[0], x) && nearly(shape.vector[1], y) && nearly(shape.vector[2], z))
const powerSwitchOpening = findBaseCutoutAt(-72, -24, 4.28)
const findRoundedShoulderOpening = (x) => baseShape.shapes.find((shape) =>
shape.type === "translate" && shape.shape?.type === "roundedCuboid" &&
nearly(shape.vector[0], x) && nearly(shape.vector[1], 44.67) && nearly(shape.vector[2], 4.98))
const shoulderOpenings = [findRoundedShoulderOpening(-45), findRoundedShoulderOpening(45)]
assert.deepEqual(powerSwitchOpening.shape.size, [9, 6.8, 4.2],
"power-slider opening retains controlled side and vertical clearance")
assert.deepEqual(powerSwitchOpening.vector, [-72, -24, 4.28],
"power-slider opening is centered on the measured actuator height")
for (const [index, opening] of shoulderOpenings.entries()) {
assert.ok(opening, `rounded shoulder guide ${index + 1} exists`)
assert.deepEqual(opening.shape.size, [21.6, 2.4, 6.4],
`shoulder guide ${index + 1} preserves 0.30 mm lateral/vertical running clearance`)
assert.ok(nearly(opening.shape.roundRadius, 1.0),
`shoulder guide ${index + 1} uses a matched radiused profile`)
}
const lidPlatePrism = lidShape.shapes[0].shapes[0]
assert.equal(lidPlatePrism.type, "translate", "lid follows the same rounded board profile")
assert.ok(nearly(lidPlatePrism.shape.options.height, 1.6), "lid is 1.6 mm thick")
const lidRegistrationKeys = lidShape.shapes[0].shapes.slice(1, 5)
assert.deepEqual(lidRegistrationKeys.map((key) => key.shape.size), [
[20, 0.8, 1.8], [20, 0.8, 1.8], [0.8, 12, 1.8], [0.8, 12, 1.8],
], "four broad internal registration keys locate the butt seam without entering the LCD envelope")
assert.ok(lidRegistrationKeys.every((key) => nearly(key.vector[2], 10.7)),
"all registration keys engage the rear shell by 1.8 mm below the lid")
const enclosureOuterPoints = baseOuterPrism.shape.shape.points
const enclosureOutsideWidthMm = Math.max(...enclosureOuterPoints.map(([x]) => x)) -
Math.min(...enclosureOuterPoints.map(([x]) => x))
const enclosureOutsideHeightMm = Math.max(...enclosureOuterPoints.map(([, y]) => y)) -
Math.min(...enclosureOuterPoints.map(([, y]) => y))
const enclosureBottomZ = -17.4
const enclosureTopZ = 13.2
const mechanicalHoles = of("pcb_hole").filter((hole) => hole.pcb_component_id == null)
const expectedPcbMountHoles = [
[-59.5, -34], [55.5, -38], [-66, 14], [62, 34.5],
]
const expectedScreenHoles = [
[-48.75, 32.75], [51, 33], [-49, -35.5], [66, -31],
]
const findMechanicalHole = (x, y, diameter) => mechanicalHoles.find((hole) =>
nearly(hole.x, x) && nearly(hole.y, y) && nearly(hole.hole_diameter, diameter))
for (const [x, y] of expectedPcbMountHoles)
assert.ok(findMechanicalHole(x, y, 3.3), `M3 PCB support hole exists at ${x}, ${y}`)
const batteryPocketBounds = { minX: -40, maxX: -8, minY: -22.25, maxY: 32.25 }
const rigidScreenBounds = { minX: -45.16, maxX: 39.8, minY: -13.27, maxY: 43.27 }
const circleToRectGap = (x, y, rectangle) => Math.hypot(
Math.max(rectangle.minX - x, 0, x - rectangle.maxX),
Math.max(rectangle.minY - y, 0, y - rectangle.maxY),
)
for (const [x, y] of expectedPcbMountHoles) {
assert.ok(circleToRectGap(x, y, batteryPocketBounds) >= 3.2,
`PCB boss at ${x}, ${y} stays outside the battery-holder pocket`)
assert.ok(circleToRectGap(x, y, rigidScreenBounds) >= 3.2,
`PCB boss at ${x}, ${y} stays outside the rigid LCD footprint`)
}
for (const [x, y] of expectedScreenHoles) {
const hole = findMechanicalHole(x, y, 2.7)
assert.ok(hole, `dedicated M2.5 LCD-carrier hole exists at ${x}, ${y}`)
let minimumTraceGap = Infinity
for (const trace of of("pcb_trace")) {
for (let index = 1; index < (trace.route?.length ?? 0); index++) {
const start = trace.route[index - 1]
const end = trace.route[index]
if (start.route_type !== "wire" || end.route_type !== "wire") continue
minimumTraceGap = Math.min(minimumTraceGap,
pointToSegmentDistance(hole, start, end) - 2.7 / 2 - Math.max(start.width, end.width) / 2)
}
}
assert.ok(minimumTraceGap >= 0.2 - 1e-6,
`LCD hole at ${x}, ${y} has at least 0.20 mm finished-hole-to-trace clearance`)
}
assert.equal(mechanicalHoles.filter((hole) => nearly(hole.hole_diameter, 3.3)).length, 4,
"exactly four PCB-to-base support holes are present")
assert.equal(mechanicalHoles.filter((hole) => nearly(hole.hole_diameter, 2.7)).length, 4,
"exactly four independent LCD-carrier holes are present")
// Guard every previously observed carrier collision. These are the tall
// controls/connectors whose actual 3D bodies reach the carrier's Z envelope.
const carrierMembers = carrierShape.shapes[0].shapes
const carrierStandoffs = carrierMembers.filter((member) => member.shape?.type === "cylinder")
const carrierBeams = carrierMembers.filter((member) => member.type === "translate" &&
(member.shape?.type === "roundedCuboid" || member.shape?.shape?.type === "roundedCuboid"))
assert.equal(carrierStandoffs.length, 4, "LCD carrier has four independent screw standoffs")
assert.ok(carrierStandoffs.every((standoff) => standoff.shape.radius >= 3.6),
"every LCD-carrier standoff has a reinforced 7.2 mm body")
assert.equal(carrierBeams.length, 14,
"LCD carrier has two bezel rails and twelve joined rounded load-path beams")
const carrierLoadBeams = carrierBeams
assert.ok(carrierLoadBeams.every((beam) => nearly(beam.shape.shape.size[2], 1.8)),
"LCD-carrier perimeter arms and ledges are 1.8 mm thick")
assert.ok(carrierLoadBeams.every((beam) =>
nearly(beam.vector[2] + beam.shape.shape.size[2] / 2, 8.2)),
"LCD-carrier perimeter has one planar Z=8.20 mm gasket bearing surface")
assert.ok(carrierLoadBeams.every((beam) => beam.shape.shape.size[1] >= 4),
"every LCD-carrier rail or bridge is at least 4 mm wide")
// The carrier includes rotated and diagonal beams; source-level axis-aligned
// rectangles are not a safe collision approximation. export-3d-assembly.mjs
// checks every fitted GLB body against every boss and beam capsule instead.
assert.equal(dpadShape.type, "union", "D-pad combines a hidden socket carrier with a visible crown")
const dpadSocketCarrier = dpadShape.shapes.find((shape) => shape.type === "subtract")
const dpadVisibleCrown = dpadShape.shapes.find((shape) => shape.type === "union")
assert.ok(dpadSocketCarrier, "D-pad has a subtractive socket/pivot carrier")
assert.ok(dpadVisibleCrown && dpadVisibleCrown.shapes.length === 2,
"D-pad has a complete two-arm visible cross independent of its actuator sockets")
const dpadCarrierMembers = dpadSocketCarrier.shapes[0].shapes
const dpadCaptureRings = dpadCarrierMembers.filter((shape) => shape.type === "subtract" &&
shape.shapes?.every((member) => member.shape?.type === "cylinder"))
const dpadCaptureRoof = dpadCarrierMembers.find((shape) => shape.shape?.type === "cylinder" &&
nearly(shape.shape.radius, 3.4) && nearly(shape.shape.height, 0.35))
assert.equal(dpadCaptureRings.length, 2,
"D-pad has two concentric retention rings around the silicone pivot")
assert.ok(dpadCaptureRoof, "D-pad pivot recess has an integral retaining roof")
for (const name of ["DPAD_PIVOT_PAD", "BAT_CONTACT_COMMON_210", "BAT_CONTACT_NEG_209",
"BAT_CONTACT_POS_228", "BAT_WIRE_NEG", "BAT_WIRE_POS", "SPK_WIRE_NEG", "SPK_WIRE_POS"]) {
const source = componentByName.get(name)
assert.ok(source, `${name} exists in the complete mechanical assembly`)
assert.ok(of("cad_component").some((cad) => cad.source_component_id === source.source_component_id),
`${name} has authored 3D geometry`)
}
const enclosureApertureMarkers = [
"CASE_SCREEN_WINDOW",
]
assert.equal(componentByName.has("CASE_RESET_ACCESS"), false,
"reset is an internal service control with no front-panel aperture")
assert.equal(componentByName.has("CASE_BAT_CABLE_EXIT"), false,
"internal battery lead has no exterior enclosure aperture")
for (const name of ["CASE_UART_ACCESS", "CASE_I2C_ACCESS", "CASE_SPI_ACCESS"])
assert.equal(componentByName.has(name), false,
`${name} is absent because programming connectors are internal to the enclosure`)
for (const name of enclosureApertureMarkers) {
assert.ok(componentByName.has(name), `${name} aperture marker exists`)
assert.equal(pcbByName.get(name)?.do_not_place, true, `${name} is excluded from PCB assembly`)
assert.equal(pcbByName.get(name)?.obstructs_within_bounds, false,
`${name} cannot perturb PCB placement or routing`)
}
for (const traceName of ["SPK_POS_OUT", "SPK_NEG_OUT"])
assert.ok(of("source_trace").some((trace) => trace.name === traceName),
`J_SPK carries ${traceName} from the PAM8403 bridge output`)
const traces = of("pcb_trace")
assert.ok(traces.length >= 250, "dense routed design contains its expected copper traces")
assert.ok(!circuit.some((record) => /unrouted|trace_missing/i.test(record.type)), "no unrouted/missing-trace records")
const traceEndingWith = (suffix) => {
const matches = traces.filter((trace) => trace.pcb_trace_id.endsWith(suffix))
assert.equal(matches.length, 1, `one PCB trace ends with ${suffix}`)
return matches[0]
}
const assertMinimumWireWidth = (trace, width, label) => {
assert.ok(trace, `${label} has generated PCB copper`)
const wireWidths = trace.route.filter((point) => point.route_type === "wire").map((point) => point.width)
assert.ok(wireWidths.length > 0 && wireWidths.every((actual) => actual >= width - 1e-6),
`${label} is physically routed at least ${width.toFixed(2)} mm wide`)
}
const traceById = (id) => {
const found = traces.find((trace) => trace.pcb_trace_id === id)
assert.ok(found, `${id} exists`)
return found
}
for (const [id, label] of [
["twoaa_battery_path_0", "two-AA battery path"],
["twoaa_sys_sources_0", "USB/battery selected SYS_IN path"],
["twoaa_sys_input_0", "SYS_IN input-capacitor trunk"],
["twoaa_v3v3_trunk_0", "3V3 distribution trunk"],
]) assertMinimumWireWidth(traceById(id), 0.5, label)
for (const [id, label] of [
["twoaa_input_cap_a_0", "buck-boost input capacitor A link"],
["twoaa_input_cap_b_0", "buck-boost input capacitor B link"],
["twoaa_l1_0", "buck-boost L1 switching link"],
["twoaa_l2_0", "buck-boost L2 switching link"],
["twoaa_output_cap_a_0", "buck-boost output capacitor A link"],
["twoaa_output_cap_b_0", "buck-boost output capacitor B link"],
["twoaa_output_cap_c_0", "buck-boost output capacitor C link"],
]) {
const widths = traceById(id).route.filter((point) => point.route_type === "wire").map((point) => point.width)
assert.ok(Math.max(...widths) >= 0.5 - 1e-6, `${label} widens to 0.50 mm after the DSJ-package escape`)
assert.ok(Math.min(...widths) >= 0.12 - 1e-6, `${label} never falls below the 0.12 mm fabrication minimum`)
}
const sourceTraceIdsByName = (name) => new Set(of("source_trace")
.filter((trace) => trace.name === name)
.map((trace) => trace.source_trace_id))
const pcbTracesForSourceName = (name) => {
const ids = sourceTraceIdsByName(name)
return traces.filter((trace) => ids.has(trace.source_trace_id))
}
const assertSourceNameWireWidth = (name, width, label = name) => {
const matches = pcbTracesForSourceName(name)
assert.ok(matches.length > 0, `${label} has generated PCB copper`)
for (const trace of matches) assertMinimumWireWidth(trace, width, label)
}
for (const name of [
"LCD_BL_VIN", "LCD_BL_INPUT_L", "LCD_BL_INPUT_CAP", "LCD_BL_SWITCH_L", "LCD_BL_SWITCH_D",
"LCD_BL_OUTPUT_CAP",
]) assertSourceNameWireWidth(name, 0.5, `${name} backlight power link`)
assertSourceNameWireWidth("I2C_JST_3V3", 0.5, "I2C/SPI JST 3V3 branch")
// The panel string is regulated to 100 mA. Its board-spanning LED+ feed uses
// the 0.12 mm fabrication minimum so it can follow the already-verified LCD
// fanout corridor; even at 60 mm on 1 oz copper this is about 0.25 ohm / 25 mV.
// The high-di/dt boost input, switch node, diode and local capacitor links
// remain 0.50 mm above, where width and loop area materially affect EMI.
assertSourceNameWireWidth("LCD_BL_OUTPUT", 0.12, "LCD_BL_OUTPUT regulated 100 mA feed")
const usbVbusChainPorts = new Set([
"pcb_port_424", "pcb_port_425", "pcb_port_434", "pcb_port_436", "pcb_port_450",
])
const usbVbusChainTraces = traces.filter((trace) => {
const endpoints = (trace.connectsTo ?? []).filter((id) => id?.startsWith("pcb_port_"))
return endpoints.length === 2 && endpoints.every((id) => usbVbusChainPorts.has(id))
})
assert.equal(usbVbusChainTraces.length, 4,
"the complete USB-C VBUS chain has four routed branches")
const usbVbusMain = traceEndingWith("source_net_1_mst1_0")
const usbVbusDiode = traceEndingWith("source_net_1_mst3_0")
assertMinimumWireWidth(usbVbusMain, 0.2, "USB-C VBUS dual-pad escape")
assert.ok(Math.max(...usbVbusMain.route.filter((point) => point.route_type === "wire")
.map((point) => point.width)) >= 0.5,
"USB-C VBUS connector-to-capacitor path reaches 0.50 mm trunk width")
assert.ok(usbVbusMain.route.some((point) => point.route_type === "wire" &&
Math.abs(point.x + 10) < 1e-6 && Math.abs(point.y + 31.825) < 1e-6),
"USB-C VBUS 0.50 mm trunk passes through the input-capacitor pad")
assertMinimumWireWidth(usbVbusDiode, 0.5, "USB-C VBUS capacitor-to-diode trunk")
for (const suffix of ["source_net_1_mst0_0", "source_net_1_mst2_0"])
assertMinimumWireWidth(traceEndingWith(suffix), 0.12, "USB ESD VBUS reference stub")
const batteryRangeText = of("pcb_silkscreen_text").find((text) => text.text === "2xAA 1.8-3.2V • NO CHARGE")
assert.ok(batteryRangeText, "battery silkscreen states the two-AA range and explicitly forbids charging")
const report = {
circuitPath,
generatedAt: new Date().toISOString(),
board: {
title: "F1C100S Linux Game Boy Advance",
widthMm: board.width,
heightMm: board.height,
copperLayers: board.num_layers,
},
routing: {
pcbTraces: traces.length,
pcbVias: vias.length,
viaHoleDiameterMm: 0.3,
viaPadDiameterMm: 0.45,
minimumFinishedHoleGapMm: Number(minimumFinishedHoleGap.toFixed(6)),
closestViaPair,
reviewedViaHoleToCopperGapMm: Number(reviewedViaCopperGap.toFixed(3)),
reviewedViaNearestTrace,
buckBoostPowerLinksMm: 0.5,
buckBoostFinePitchNeckMm: 0.12,
backlightSwitchingLinksMm: 0.5,
backlightRegulatedFeedMm: 0.12,
usbCToSystemPowerTrunkMm: 0.5,
usbCConnectorEscapeNeckMm: 0.2,
},
mechanical: {
batteryCableEdgeCut: {
widthMm: Number((cutoutBounds.maxX - cutoutBounds.minX).toFixed(3)),
overallLengthMm: Number((cutoutBounds.maxY - cutoutBounds.minY).toFixed(3)),
depthIntoBoardMm: Number((cutoutBounds.maxY - boardBottomY).toFixed(3)),
closedEnd: "rounded",
},
shoulderSwitches: "TS6695ZJ 022 low-profile right-angle housing, 9.5 mm switch height, 3.03 mm board-edge stem protrusion",
volumeControl: {
center: volumePlacement,
rotationDeg: volumeRotationDeg,
side: "upper-left rounded corner",
wheelDirection: "upper-left corner bisector",
wheelProtrusionMm: Number(volumeWheelProtrusionMm.toFixed(3)),
housingCornerProtrusionMm: Number(volumeHousingCornerProtrusionMm.toFixed(3)),
mountingSlotCopperToEdgeMm: Number(volumeMountingSlotEdgeClearanceMm.toFixed(3)),
mountingSlotCopperClearancesMm: volumeSlotCopperClearances.map((clearance) => Number(clearance.toFixed(3))),
},
bootSolderJumper: {
center: { x: -49.27, y: 18 },
outsideLandscapeLcdEnvelope: true,
normallyOpen: true,
dnp: true,
enclosureAccessHole: false,
},
startSelect: {
select: { x: -14, y: -26 },
start: { x: 1, y: -26 },
arrangement: "central pair below display",
},
microSdEdge: "card-entry face flush with the PCB and recessed behind a 2.2 mm right-wall guard tunnel",
microSdEntryFaceXmm: Number(microSdEntryFaceX.toFixed(3)),
powerSwitchEdge: "straight left edge",
powerSwitchBodyInsetMm: Number(powerBodyInsetMm.toFixed(3)),
powerSwitchActuatorProtrusionMm: Number(powerActuatorProtrusionMm.toFixed(3)),
batteryConnectorFacesCutout: true,
batteryCableBendCorridorMm: Number(batteryCableBendCorridorMm.toFixed(3)),
batteryHolder: {
reference: "integrated two-AA bay using IEC/Energizer maximum cell envelope",
maximumCellSizeMm: [14.5, 50.5],
bayClearanceMm: [32, 57.7, 14.5],
contactMountWallThicknessMm: 1.65,
contactInsideWallSpacingMm: Number(batteryInsideWallLengthMm.toFixed(3)),
installation: "two removable AA cells under the PCB; internal series contacts wire through the PCB slot to J_BAT",
exteriorCableOpening: false,
removableDoor: true,
},
powerSwitch: {
center: { x: powerSwitch.center.x, y: powerSwitch.center.y },
side: "straight lower-left side wall, clear of the rounded corner",
actuatorDirection: "left",
actuatorProtrusionMm: Number(powerActuatorProtrusionMm.toFixed(3)),
bodyInsetMm: Number(powerBodyInsetMm.toFixed(3)),
enclosureActuation: "direct-access protruding slider",
},
rearServiceConnectors: {
uart: { center: { x: -18, y: 37 }, layer: "top", pinout: ["RX", "GND", "TX"] },
i2c: { center: { x: -28, y: 37 }, layer: "top", pinout: ["GND", "3V3", "SDA", "SCL"] },
spi: { center: { x: 22, y: 37 }, layer: "top", pinout: ["GND", "3V3", "SCLK", "MOSI", "MISO", "CS"] },
},
},
display: {
part: "ER-TFT035IPS-6",
widthMm: 84.96,
heightMm: 56.54,
orientation: "landscape",
fpcConnectorSide: "right",
connectorRotationDeg: 270,
connectorCenter: { x: 40.8, y: 15 },
installedFlexLateralOffsetMm: screenInstalledLateralOffsetMm,
boardTopEdgeYmm: boardTopY,
panelTopEdgeYmm: Number(screenTopEdgeY.toFixed(3)),
panelTopEdgeOffsetMm: Number((screenTopEdgeY - boardTopY).toFixed(3)),
correctedPreviousTopOverhangMm: Number(previousScreenTopOverhangMm.toFixed(3)),
assemblyModel: screenModelFile,
backlightDriver: "AP3031KTR-G1",
regulatedBacklightCurrentMa: lcdBacklightCurrentMa,
},
power: {
labeledBatteryRangeV: [1.8, 3.2],
batteryChemistry: "two removable alkaline or NiMH AA cells in series",
batteryCharging: false,
primaryRegulator: "TPS63020 buck-boost",
usbPorts: ["J_USB (USB2 D+/D- plus default 5 V Type-C sink power)"],
},
models: {
f1c100s: "C1511928",
spiFlash: "C113767",
shoulderSwitch: "C33543618",
screen: screenModelFile,
enclosure: "serviceable PETG shells with rear M3 closure, captive controls, two-AA door, sealed speaker, and four-point LCD carrier",
fittedPartsWithRenderableModels: fitted.length - missingCadModels.length,
missingRenderableModels: missingCadModels,
},
audio: {
speakerConnector: "J_SPK",
output: "PAM8403 mono bridge SPK+/SPK- for an internal 4-8 ohm speaker",
},
assembly: {
fittedComponents: fitted.length,
uniqueJlcpcbPartNumbers: uniqueJlcpcbParts.size,
missingJlcpcbPartNumbers: missingJlcpcb,
enclosure: {
outsideWidthMm: Number(enclosureOutsideWidthMm.toFixed(3)),
outsideHeightMm: Number(enclosureOutsideHeightMm.toFixed(3)),
overallOutsideZMm: Number((enclosureTopZ - enclosureBottomZ).toFixed(3)),
generalBodyOutsideZMm: Number((enclosureTopZ - enclosureBottomZ).toFixed(3)),
enclosureBottomZmm: enclosureBottomZ,
bodies: printedPartNames.length,
printedParts: printedPartNames,
wallThicknessMm: 1.4,
floorThicknessMm: 1.6,
lidThicknessMm: 1.6,
boardClearanceMm: 0.8,
generalPcbUnderbodyClearanceMm: 15,
batteryHolderPocketDepthMm: 14.5,
batteryDoorFlangeMm: [36.4, 58.8, 0.9],
batteryDoorCentralPanelMm: [31.6, 53.8, 1.2],
batteryDoorOpeningMm: [33.6, 56],
batteryDoorRebateMm: [37, 59.4, 1.25],
batteryDoorClosure: "insertion tongue plus integral cantilever latch with positive hook and exterior thumb dimple",
topHeadroomMm: 10.8,
closure: "four rear M3x24 screws through PCB into front-shell heat-set inserts and nylon washers",
lidRegistration: "four broad 0.8 x 1.8 mm internal tongues in component-free edge regions",
profileVertices: board.outline.length,
pcbSupportHoles: expectedPcbMountHoles.length,
lcdCarrierHoles: expectedScreenHoles.length,
lcdCarrierHoleDiameterMm: 2.7,
lcdCarrierFastener: "M2.5 thread-forming screw from PCB underside",
lcdPerimeterSupportZmm: 8.2,
lcdCarrierCenterOpen: true,
lcdCarrierArmThicknessMm: 1.8,
lcdCarrierMinimumRailWidthMm: 4,
fullPanelPocketMm: [86.46, 57.04],
displayGasketsMm: { front: 0.5, rear: 0.5 },
speakerCradle: "Same Sky CMS-2004-18SP 20 mm x 4.2 mm speaker, real terminal pads, snap strain relief, foam gasket, printed retainer, two M2 screws, modeled harness and four 1.6 mm feet",
faceControls: "six captive rear-flanged caps with 0.05 mm silicone anti-rattle preload plus one centrally pivoted D-pad with snap-captured silicone pad",
shoulderControls: "two close-fit rounded sliding keys with twin guide rails, independent retaining tabs and blind TS6695 actuator pockets",
apertureMarkers: enclosureApertureMarkers,
},
},
controls: expectedButtons.length,
schematic: {
sheets: [...sheetNames],
standardProgrammerUart: "RX-GND-TX with 100 ohm RX/TX series isolation",
},
errorsByType: {},
emittedErrors: 0,
}
fs.writeFileSync("verification.json", `${JSON.stringify(report, null, 2)}\n`)
console.log(JSON.stringify(report, null, 2))