Skip to content

Releases

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 20:25
18d3a2b

Added

  • The per-call OpenTelemetry log record now also carries enduser.id (mirroring the resource attribute) and, when OTEL_CAPTURE_TOOL_ARGS is enabled, tool.args (the same JSON already recorded on the span) as log-record attributes. Log/label-based backends index only log-record attributes (resource attributes are dropped and span attributes are never carried), so per-user and per-input analytics are now possible from logs alone. Args stay opt-in behind the existing OTEL_CAPTURE_TOOL_ARGS flag; enduser.id mirrors a value already exported on every signal (#56)

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 23 Jun 18:30
63320d4

Added

  • get_pcb_net with detail="full" now returns a segments array of per-trace centerline routing geometry alongside the existing per-via coordinates. Each entry is one <Polyline>/<Line> conductor primitive: { layer, width, points } (vertices in microns), plus arcs carrying full <PolyStepCurve> curvature (index, centerX, centerY, clockwise) when the trace is curved. The array is stratified across layers and capped at MAX_COORD_ROWS = 300 with truncated: true when sampled; the per-layer routing rollup still reports the true Set-level totals. detail="full" must be set explicitly — summary (the default) output is unchanged and emits no segments. Poured <Contour> copper has no centerline and is excluded from segments; the rollup still reports it routed. segments.length is per-primitive and intentionally differs from totalSegments / routing[].segmentCount, which are Set-level (#55)

Changed

  • get_pcb_net reports each trace's own width from its <LineDescRef>/<LineDesc> rather than a single set-level value, so two <Line> (or <Polyline>) conductors of differing width inside one <Set> keep their distinct widths instead of collapsing to the last descriptor seen; a primitive falls back to the set/feature-level width only when it carries none of its own. The summary routing[].traceWidths rollup is tightened the same way and now lists every distinct conductor width a <Set> uses. <PolyStepCurve> (curved) vertices, previously dropped, are now parsed for the geometry export (#55)

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v1.0.4

Choose a tag to compare

@github-actions github-actions released this 18 Jun 23:29
2431c5a

Changed

  • detail="full" via-row truncation is now stratified across drill spans. When the MAX_COORD_ROWS = 300 cap applies, the returned rows are apportioned across drill spans in proportion to each span's share of totalVias (largest-remainder / Hamilton method) instead of head-slicing the first span, so the truncated sample is representative of the whole net. truncated: true and the per-span viaCounts totals are unchanged; a span whose proportional share rounds below one row can still get zero sampled rows, but its true count is always preserved in viaCounts (#49, #41 follow-up)
  • get_pcb_net tool description and docs no longer advertise trace widths/lengths/segment counts unconditionally. Routing is read from conductor-layer copper geometry; an IPC-2581 export generated without conductor/etch (cline) feature output carries no conductor geometry, so routing is empty even though pins, vias, and layersUsed still populate. The fix on such files is to re-export with conductor features enabled. <PhyNetPoint> is documented as a deliberately-unused connection-point set (no edges or width reference), so it is not used to synthesize segment counts, lengths, or widths (#39)

Added

  • An OpenTelemetry integration guide under docs/; the README was simplified alongside it (#51)

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 18 Jun 03:18
d188cee

Fixed

  • get_pcb_net now reports routing for nets routed as filled copper shapes (<Contour>/<Polygon>), not just centerline conductors (<Polyline>/<Line>). Modern Cadence/Allegro pours even short signal traces and all planes as filled copper, so those nets previously returned empty routing (only layersUsed populated) despite being fully routed. A poured shape is now recorded as routing presence on its layer (the layer plus a per-<Set> segment count); a filled shape has no centerline, so traceWidths/traceLength are left empty rather than fabricated, and a <Contour> inside a <Pad> is not counted as routing (#39)

Changed

  • The opt-in detail="full" coordinate cap is tightened so even a full response stays within a typical tool-response budget (#41 follow-up). The single MAX_DETAIL_ROWS = 2000 cap was split into MAX_COORD_ROWS = 300 for the heavy per-coordinate arrays (viaRows/padRows) and MAX_PIN_ROWS = 2000 for the connectivity pin list. A detail="full" query on the largest net now returns at most 300 coordinate rows (~18 KB) instead of 2000 (~93 KB), with truncated: true and the true totals preserved, while high-fanout connectivity (e.g. a 1265-pin GND) is kept under the separate, higher pin cap

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 18 Jun 00:36
3ab2b0e

Fixed

  • get_pcb_component no longer reports a wrong parsed.pinCount for two-terminal chip passives. The count was derived from the digits after the family prefix in the package name, which for RES/CAP/IND/INDP chip parts is the imperial case-size code (so RES0402 reported 402 instead of 2). Pin count is now derived authoritatively from pad/net geometry; the package name is trusted only for families where the number genuinely encodes a pin count. parsed is also emitted consistently, including when the package name has no trailing digits (#38)
  • get_pcb_component now returns pad geometry for chip-passive and other footprints that previously came back empty. extractShapes handles oval, rounded/chamfered/cornered rectangle, and polygon/contour pad primitives (contours reported by bounding box), and pads can resolve their shape through a padstackDefRef when there is no inline primitive (#40)
  • get_pcb_net now returns trace routing for nets routed with <Line> conductor segments, not just <Polyline>. Previously a net routed entirely with <Line> elements returned no per-layer trace widths, lengths, or segment counts at all (#39)

Changed

  • Tool responses are now token-bounded, which changes the default output shape (#41). Per-coordinate arrays are summarized by default so a single query can no longer blow the caller's context:
    • get_pcb_net returns a compact viaCounts rollup (count per drill type + layer) by default; the raw per-via viaRows/viaColumns are now returned only with detail="full". The redundant viaDrills field was removed — a viaRows entry's drillIndex references viaCounts by position. A pinCount total is now included.
    • get_pcb_component returns padCount + deduped padShapes by default; the per-pin padRows/padColumns are now returned only with detail="full".
    • Both tools accept a new detail parameter ("summary" default, or "full"). Even in full mode the raw coordinate arrays are capped and the response is flagged truncated: true, so no response can exceed a safe size.

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 17 Jun 23:07
b6cf800

Fixed

  • Documentation now matches the registered tool names. Five tool docs were renamed and rewritten field-by-field against the actual schemas and result types: export_cadence_board → export_cadence_ipc2581, get_design_overview → get_pcb_metadata, query_components → get_pcb_component, query_net → get_pcb_net, query_constraints → get_constraints. Corrected drifted response schemas (notably get_pcb_net via geometry and get_pcb_component lookup model) and error strings, and updated both README indexes
  • Removed the render_net reference from the server's MCP instructions, since that tool is not registered (it remains dormant in source)

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Jun 20:26
38a67d5

First stable release.

Added

  • OpenTelemetry instrumentation: every tool call emits a span (tool/<tool_name>), metrics (tool.calls, tool.duration, tool.errors), and a structured log correlated by trace/span id, exported to any OTLP-compatible backend purely via the standard OTEL_* environment variables. Disabled and zero-overhead unless an OTLP endpoint is configured
  • enduser.id resource attribute set from the host OS account name, attributing telemetry to the per-session user across traces, metrics, and logs
  • Opt-in raw tool-argument capture on spans via OTEL_CAPTURE_TOOL_ARGS=1 (off by default)

Changed

  • Consolidated telemetry into src/telemetry/: local JSONL usage analytics (local) and OpenTelemetry (otel) behind a single barrel

Fixed

  • Self-update now runs only for the compiled standalone binary; running from source (tsx/node) no longer performs a GitHub update check or re-execs into a downloaded binary

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Mar 22:54
dc86142

Added

  • Per-pin pad geometry in get_pcb_component output (positions and shapes with deduplication)
  • Net connectivity in get_pcb_component output (connected nets with pin names and total pin counts)
  • Structured package parsing from Cadence footprint naming (packageFamily, pinCount, bodySize_mm, pitch_mm)
  • Shared geometry extraction module (lib/geometry.ts) for pad, shape, and via utilities

Changed

  • Renamed get_pcb_components to get_pcb_component: single exact-refdes lookup instead of regex multi-match
  • Switched pads to columnar format with deduplicated shapes (padShapes[] + padRows[] of [pin, x, y, shapeIndex])
  • Switched component nets to columnar format (netColumns + netRows[] of [netName, pins, pinCount])
  • Switched vias in get_pcb_net to columnar format with deduplicated drill types (viaDrills[] + viaRows[] of [x, y, drillIndex])
  • Rounded all micron coordinate and dimension values to integers

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v0.0.10

Choose a tag to compare

@github-actions github-actions released this 03 Mar 20:00
dadba50

Changed

  • CLI update command no longer prompts for confirmation before installing
  • Moved internal architecture docs from CLAUDE.md into source files as inline comments

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.

v0.0.9

Choose a tag to compare

@github-actions github-actions released this 02 Mar 04:22
d7209c1

Added

  • Library exports for programmatic use from TypeScript codebases (@intelligentelectron/pcb-lens/service)
  • New src/service.ts barrel file re-exporting all tool functions and public types
  • Package exports map with ./service and ./types subpath entry points

Installation

See Setup Instructions for installation and configuration.

Checksums

See checksums.txt for SHA256 checksums.