Skip to content

Changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

[0.20.0] - 2026-10-02

Changed

  • chore(deps): bump soupsieve from 2.8 to 2.8.4 (https://github.com/nordstad/PinViz/pull/286)
  • chore(deps-dev): bump mkdocstrings from 1.0.4 to 1.0.6 (https://github.com/nordstad/PinViz/pull/291)
  • chore(deps-dev): bump mypy from 2.1.0 to 2.2.0 (https://github.com/nordstad/PinViz/pull/290)
  • chore(deps-dev): bump hypothesis from 6.155.7 to 6.156.6 (https://github.com/nordstad/PinViz/pull/289)
  • chore(deps-dev): bump zensical from 0.0.46 to 0.0.50 (https://github.com/nordstad/PinViz/pull/288)
  • chore(deps-dev): bump ruff from 0.15.20 to 0.15.21 (https://github.com/nordstad/PinViz/pull/287)
  • chore(deps-dev): bump zensical from 0.0.50 to 0.0.51 (https://github.com/nordstad/PinViz/pull/295)
  • chore(deps-dev): bump ruff from 0.15.21 to 0.15.22 (https://github.com/nordstad/PinViz/pull/294)
  • chore(deps-dev): bump platformdirs from 4.10.0 to 4.10.1 (https://github.com/nordstad/PinViz/pull/293)
  • chore(deps-dev): bump mypy from 2.2.0 to 2.3.0 (https://github.com/nordstad/PinViz/pull/292)
  • chore(deps): bump typer from 0.26.8 to 0.27.0 (https://github.com/nordstad/PinViz/pull/296)
  • chore(deps-dev): bump platformdirs from 4.10.1 to 4.11.0 (https://github.com/nordstad/PinViz/pull/298)
  • chore(deps): bump pymdown-extensions from 10.21.3 to 11.0 (https://github.com/nordstad/PinViz/pull/300)
  • chore(deps-dev): bump hypothesis from 6.156.6 to 6.161.6 (https://github.com/nordstad/PinViz/pull/297)
  • chore(deps-dev): bump ruff from 0.15.22 to 0.16.0 (https://github.com/nordstad/PinViz/pull/299)
  • chore(deps-dev): bump hypothesis from 6.161.6 to 6.164.0 (https://github.com/nordstad/PinViz/pull/305)
  • chore(deps): bump mcp from 1.28.1 to 2.0.0 (https://github.com/nordstad/PinViz/pull/304)
  • chore(deps-dev): update uv-build requirement from <0.12.0,>=0.8.20 to >=0.8.20,<0.13.0 (https://github.com/nordstad/PinViz/pull/301)
  • chore(deps-dev): bump twine from 6.2.0 to 7.0.0 (https://github.com/nordstad/PinViz/pull/302)
  • chore(deps-dev): bump zensical from 0.0.51 to 0.0.52 (https://github.com/nordstad/PinViz/pull/303)
  • chore(deps): bump typer from 0.27.0 to 0.27.1 (https://github.com/nordstad/PinViz/pull/310)
  • chore(deps-dev): bump ruff from 0.16.0 to 0.16.1 (https://github.com/nordstad/PinViz/pull/309)
  • chore(deps-dev): bump zensical from 0.0.52 to 0.0.53 (https://github.com/nordstad/PinViz/pull/308)
  • chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (https://github.com/nordstad/PinViz/pull/307)
  • chore(deps): bump cryptography from 48.0.1 to 50.0.0 (https://github.com/nordstad/PinViz/pull/306)
  • chore(deps): bump drawsvg from 2.4.1 to 2.4.2 (https://github.com/nordstad/PinViz/pull/315)
  • chore(deps): bump pydantic-settings from 2.14.2 to 2.15.0 (https://github.com/nordstad/PinViz/pull/314)
  • chore(deps-dev): bump platformdirs from 4.11.0 to 4.11.3 (https://github.com/nordstad/PinViz/pull/313)
  • chore(deps-dev): bump hypothesis from 6.164.0 to 6.165.7 (https://github.com/nordstad/PinViz/pull/312)
  • chore(deps-dev): bump zensical from 0.0.53 to 0.0.54 (https://github.com/nordstad/PinViz/pull/311)
  • chore(deps-dev): bump hypothesis from 6.165.7 to 6.165.10 (https://github.com/nordstad/PinViz/pull/320)
  • chore(deps-dev): bump pygments from 2.20.0 to 2.21.0 (https://github.com/nordstad/PinViz/pull/319)
  • chore(deps-dev): bump mypy from 2.3.0 to 2.3.1 (https://github.com/nordstad/PinViz/pull/318)
  • chore(deps-dev): bump zensical from 0.0.54 to 0.0.56 (https://github.com/nordstad/PinViz/pull/317)
  • chore(deps-dev): bump mkdocstrings-python from 2.0.5 to 2.0.7 (https://github.com/nordstad/PinViz/pull/316)
  • chore(deps-dev): bump zensical from 0.0.56 to 0.0.57 (https://github.com/nordstad/PinViz/pull/324)
  • chore(deps-dev): bump ruff from 0.16.1 to 0.16.5 (https://github.com/nordstad/PinViz/pull/323)
  • chore(deps-dev): bump platformdirs from 4.11.3 to 4.11.5 (https://github.com/nordstad/PinViz/pull/322)
  • chore(deps): bump mcp from 2.0.0 to 2.1.1 (https://github.com/nordstad/PinViz/pull/321)
  • chore(deps): bump pydantic from 2.13.4 to 2.13.5 (https://github.com/nordstad/PinViz/pull/329)
  • chore(deps-dev): bump zensical from 0.0.57 to 0.0.59 (https://github.com/nordstad/PinViz/pull/328)
  • chore(deps-dev): bump platformdirs from 4.11.5 to 4.11.7 (https://github.com/nordstad/PinViz/pull/327)
  • chore(deps-dev): bump hypothesis from 6.165.10 to 6.167.1 (https://github.com/nordstad/PinViz/pull/326)
  • chore(deps): bump typer from 0.27.1 to 0.27.2 (https://github.com/nordstad/PinViz/pull/325)
  • chore(deps): bump httpcore2 from 2.9.1 to 2.10.0 (https://github.com/nordstad/PinViz/pull/331)
  • chore(deps): bump httpx2 from 2.10.0 to 2.12.0 (https://github.com/nordstad/PinViz/pull/330)
  • chore(deps-dev): bump platformdirs from 4.11.7 to 4.11.8 (https://github.com/nordstad/PinViz/pull/336)
  • chore(deps-dev): bump ruff from 0.16.5 to 0.16.7 (https://github.com/nordstad/PinViz/pull/335)
  • chore(deps-dev): bump zensical from 0.0.59 to 0.0.60 (https://github.com/nordstad/PinViz/pull/334)
  • chore(deps): bump soupsieve from 2.8.4 to 2.9 (https://github.com/nordstad/PinViz/pull/337)
  • chore(deps-dev): bump hypothesis from 6.167.1 to 6.168.0 (https://github.com/nordstad/PinViz/pull/333)
  • chore(deps-dev): bump mkdocstrings-python from 2.0.7 to 2.0.8 (https://github.com/nordstad/PinViz/pull/332)
  • chore(deps): bump anyio from 4.11.0 to 4.14.2 (https://github.com/nordstad/PinViz/pull/338)
  • chore(deps): bump mcp from 2.1.1 to 2.2.0 (https://github.com/nordstad/PinViz/pull/342)
  • chore(deps-dev): bump platformdirs from 4.11.8 to 4.11.10 (https://github.com/nordstad/PinViz/pull/341)
  • chore(deps-dev): bump zensical from 0.0.60 to 0.0.62 (https://github.com/nordstad/PinViz/pull/340)
  • chore(deps-dev): bump ruff from 0.16.7 to 0.16.8 (https://github.com/nordstad/PinViz/pull/339)
  • chore(deps-dev): bump zensical from 0.0.62 to 0.0.65 (https://github.com/nordstad/PinViz/pull/347)
  • chore(deps-dev): bump ruff from 0.16.8 to 0.16.9 (https://github.com/nordstad/PinViz/pull/346)
  • chore(deps-dev): bump mkdocstrings-python from 2.0.8 to 2.0.9 (https://github.com/nordstad/PinViz/pull/345)
  • chore(deps-dev): bump platformdirs from 4.11.10 to 4.11.13 (https://github.com/nordstad/PinViz/pull/344)
  • chore(deps-dev): bump hypothesis from 6.168.0 to 6.168.1 (https://github.com/nordstad/PinViz/pull/343)
  • chore(deps): bump urllib3 from 2.7.0 to 2.8.0 (https://github.com/nordstad/PinViz/pull/349)
  • chore(deps): bump pyjwt from 2.13.0 to 2.15.0 (https://github.com/nordstad/PinViz/pull/348)
  • Breadboard layout and stepper parts (builds on #350) (https://github.com/nordstad/PinViz/pull/351)

[0.20.0] - 2026-10-02

Added

  • Breadboard layout (layout: breadboard) draws the board artwork beside an upright solderless breadboard with plug-in modules seated on its holes, and colored jumper wires. Schematic layout is unchanged. Contributed by @r2DoesInc (https://github.com/nordstad/PinViz/pull/350).
  • Modules stack top to bottom in YAML order, so listing them in header order keeps their wire ribbons from crossing.
  • Each module's header wires travel as one parallel ribbon, with a white halo and a fixed lane spacing. A wire whose pin sits above pins that leave the header before it (the stepstick's EN) lands below the ribbon and climbs the left edge of the board, so the only crossing is that one visible hop. A white wire is drawn with a thin dark edge so it stays visible on the white page.
  • Rail power is drawn as short stubs (MS1, MS2, VM, both GNDs) or a lane under the module (VDD); motors sit beside their own module with straight coil leads; a polarized capacitor plugs into two rails with its stripe marked.
  • Logic and motor ground rails are tied at the bottom of the board when motor ground is used.
  • Rendering fails when any device has no connection, so a floating part cannot be drawn.
  • Experimental: supports a TMC2209 on a Raspberry Pi 4 or 5; other boards and module types fail with a clear error. theme and show_legend are honored.
  • EXT_POWER pin role for external/motor supplies. Validation reports an error when it is connected to a board 3V3 or 5V pin.
  • power device category.
  • CI runs pinviz validate-devices.
  • Devices: tmc2209 (16-pin stepstick seated as the BIGTREETECH pinout card reads from above: EN, MS1, MS2, PDN, PDN, CLK, STEP, DIR down the left and VM, GND, A2, A1, B1, B2, VDD, GND down the right), nema17 (four leads), psu_24v (two-terminal motor supply), electrolytic (polarized capacitor), and breadboard_rail (GND, +3V3, MGND, and +24V strips). A device opts in with a breadboard seat (role: module, motor, supply, capacitor, or rail, plus an optional first row).

[0.19.0] - 2026-07-07

Added

  • ESP32-S3-DevKitC-1 board - full 2Γ—22 (44-pin) J1/J3 header, in two variants:
  • esp32_s3_devkitc1 (default): realistic board artwork (black PCB, USB-C, ESP32-S3-WROOM module, BOOT/RST buttons, per-pin silkscreen GPIO labels) so the diagram maps onto the physical board at a glance. Aliases: esp32s3, esp32_s3, esp32_s3_devkit (https://github.com/nordstad/PinViz/pull/282)
  • esp32_s3_devkitc1_schematic: lightweight artwork-free rendering with GPIO names drawn directly on the pin bubbles. Aliases: esp32s3_schematic, esp32_s3_schematic
  • Board artwork is generated by scripts/gen_esp32_s3_devkitc1_svg.py (reproducible; pad coordinates match the config)
  • New show_pin_names board option: draws each pin's short name (GPIO number / power rail) on the bubble instead of the physical index. Backwards compatible (default false, existing boards unchanged)
  • SN65HVD230 CAN transceiver device (io category) with logic-side (3V3/GND/CTX/CRX) and bus-side (CANH/CANL) pins
  • πŸ“ New example: examples/esp32_s3_can_transceiver.yaml (ESP32-S3 TWAI β†’ SN65HVD230) (https://github.com/nordstad/PinViz/pull/284)

Changed

  • chore(deps): bump typer from 0.25.1 to 0.26.8, mcp from 1.27.1 to 1.28.1, starlette from 0.50.0 to 1.3.1, cryptography from 46.0.7 to 48.0.1, structlog from 25.5.0 to 26.1.0, pydantic-settings, beautifulsoup4, python-multipart, pyjwt, and dev tooling (ruff, pytest, hypothesis, zensical, mkdocstrings-python, platformdirs, pytest-asyncio)
  • chore: gitignore local PR-review comparison artifacts (https://github.com/nordstad/PinViz/pull/285)

Fixed

  • Wires no longer kink where they join device pins β€” the curve's exit tangent is now aligned collinear with the straight lead-in into the pin, so wireβ†’pin joins are smooth (https://github.com/nordstad/PinViz/pull/283)

[0.18.1] - 2026-05-31

Changed

  • chore(deps-dev): bump hypothesis from 6.152.4 to 6.152.5 (https://github.com/nordstad/PinViz/pull/240)
  • chore(deps): bump mcp from 1.27.0 to 1.27.1 (https://github.com/nordstad/PinViz/pull/239)
  • chore(deps-dev): bump mypy from 1.20.2 to 2.0.0 (https://github.com/nordstad/PinViz/pull/238)
  • chore(deps): bump pydantic from 2.13.3 to 2.13.4 (https://github.com/nordstad/PinViz/pull/237)
  • chore(deps): bump python-multipart from 0.0.26 to 0.0.27 (https://github.com/nordstad/PinViz/pull/236)
  • chore(deps): bump urllib3 from 2.6.3 to 2.7.0 (https://github.com/nordstad/PinViz/pull/241)
  • chore(deps): bump pydantic-settings from 2.14.0 to 2.14.1 (https://github.com/nordstad/PinViz/pull/246)
  • chore(deps-dev): bump mypy from 2.0.0 to 2.1.0 (https://github.com/nordstad/PinViz/pull/245)
  • chore(deps-dev): bump ruff from 0.15.12 to 0.15.13 (https://github.com/nordstad/PinViz/pull/244)
  • chore(deps-dev): bump hypothesis from 6.152.5 to 6.152.7 (https://github.com/nordstad/PinViz/pull/243)
  • chore(deps-dev): bump zensical from 0.0.39 to 0.0.42 (https://github.com/nordstad/PinViz/pull/242)
  • chore(deps): bump idna from 3.11 to 3.15 (https://github.com/nordstad/PinViz/pull/248)
  • chore(deps): bump pymdown-extensions from 10.21.2 to 10.21.3 (https://github.com/nordstad/PinViz/pull/247)
  • chore(deps-dev): bump hypothesis from 6.152.7 to 6.152.9 (https://github.com/nordstad/PinViz/pull/251)
  • chore(deps-dev): bump ruff from 0.15.13 to 0.15.14 (https://github.com/nordstad/PinViz/pull/250)
  • chore(deps-dev): bump zensical from 0.0.42 to 0.0.43 (https://github.com/nordstad/PinViz/pull/249)

[0.18.1] - 2026-05-31

Changed

  • chore: bump dependencies (ruff, hypothesis, mypy, zensical, mcp, pydantic, urllib3, pymdown-extensions, idna, python-multipart)

[0.18.0] - 2026-05-04

Added

  • fix: add cross-validation to both assembly paths (https://github.com/nordstad/PinViz/pull/234)

Changed

  • refactor: extract board pin knowledge to Board.pins_by_role() (https://github.com/nordstad/PinViz/pull/232)
  • refactor: extract PinAssigner to shared top-level module (https://github.com/nordstad/PinViz/pull/233)
  • refactor: decompose WireRouter into focused internal classes (https://github.com/nordstad/PinViz/pull/235)

[0.18.0] - 2026-05-04

Changed

  • WireRouter: Decomposed into focused internal classes for improved maintainability (#235)
  • PinAssigner: Extracted to shared top-level module, used by all assembly paths (#233)
  • Board: Extracted pin knowledge to Board.pins_by_role() (#232)

Fixed

  • Assembly: Added cross-validation to both assembly paths to catch pin mismatches (#234)

[0.17.7] - 2026-05-04

Changed

  • chore(deps-dev): bump mypy from 1.20.0 to 1.20.2 (https://github.com/nordstad/PinViz/pull/224)
  • chore(deps-dev): bump zensical from 0.0.34 to 0.0.36 (https://github.com/nordstad/PinViz/pull/223)
  • chore(deps): bump typer from 0.24.1 to 0.25.0 (https://github.com/nordstad/PinViz/pull/222)
  • chore(deps-dev): bump hypothesis from 6.152.1 to 6.152.3 (https://github.com/nordstad/PinViz/pull/221)
  • chore(deps): bump pydantic-settings from 2.13.1 to 2.14.0 (https://github.com/nordstad/PinViz/pull/220)
  • chore(deps-dev): bump ruff from 0.15.11 to 0.15.12 (https://github.com/nordstad/PinViz/pull/230)
  • chore(deps-dev): bump zensical from 0.0.36 to 0.0.39 (https://github.com/nordstad/PinViz/pull/229)
  • chore(deps-dev): bump hypothesis from 6.152.3 to 6.152.4 (https://github.com/nordstad/PinViz/pull/228)
  • chore(deps): bump pydantic from 2.13.2 to 2.13.3 (https://github.com/nordstad/PinViz/pull/227)
  • chore(deps): bump typer from 0.25.0 to 0.25.1 (https://github.com/nordstad/PinViz/pull/226)

Fixed

  • fix(legend): dynamic name column width to prevent overlap with description (https://github.com/nordstad/PinViz/pull/231)

[0.17.7] - 2026-05-04

Fixed

  • Legend: Device name column width is now dynamic, preventing long names from overlapping the description column

[0.17.6] - 2026-04-22

Changed

  • chore(deps-dev): bump pytest-cov from 7.0.0 to 7.1.0 (https://github.com/nordstad/PinViz/pull/194)
  • chore(deps-dev): bump zensical from 0.0.27 to 0.0.28 (https://github.com/nordstad/PinViz/pull/193)
  • chore(deps-dev): bump ruff from 0.15.6 to 0.15.7 (https://github.com/nordstad/PinViz/pull/192)
  • chore(deps): bump requests from 2.32.5 to 2.33.0 (https://github.com/nordstad/PinViz/pull/195)
  • chore(deps): bump cryptography from 46.0.5 to 46.0.6 (https://github.com/nordstad/PinViz/pull/196)
  • chore(deps-dev): bump ruff from 0.15.7 to 0.15.8 (https://github.com/nordstad/PinViz/pull/200)
  • chore(deps-dev): bump zensical from 0.0.28 to 0.0.30 (https://github.com/nordstad/PinViz/pull/199)
  • chore(deps-dev): update uv-build requirement from <0.11.0,>=0.8.20 to >=0.8.20,<0.12.0 (https://github.com/nordstad/PinViz/pull/198)
  • chore(deps-dev): bump hypothesis from 6.151.9 to 6.151.10 (https://github.com/nordstad/PinViz/pull/197)
  • chore(deps): bump pygments from 2.19.2 to 2.20.0 (https://github.com/nordstad/PinViz/pull/201)
  • chore(deps): bump mcp from 1.26.0 to 1.27.0 (https://github.com/nordstad/PinViz/pull/206)
  • chore(deps-dev): bump ruff from 0.15.8 to 0.15.9 (https://github.com/nordstad/PinViz/pull/205)
  • chore(deps-dev): bump hypothesis from 6.151.10 to 6.151.11 (https://github.com/nordstad/PinViz/pull/204)
  • chore(deps-dev): bump zensical from 0.0.30 to 0.0.31 (https://github.com/nordstad/PinViz/pull/202)
  • chore(deps): bump cryptography from 46.0.6 to 46.0.7 (https://github.com/nordstad/PinViz/pull/207)
  • chore(deps-dev): bump mypy from 1.19.1 to 1.20.0 (https://github.com/nordstad/PinViz/pull/203)
  • chore(deps): bump python-multipart from 0.0.22 to 0.0.26 (https://github.com/nordstad/PinViz/pull/213)
  • chore(deps): bump rich from 14.3.3 to 15.0.0 (https://github.com/nordstad/PinViz/pull/212)
  • chore(deps-dev): bump ruff from 0.15.9 to 0.15.10 (https://github.com/nordstad/PinViz/pull/211)
  • chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 (https://github.com/nordstad/PinViz/pull/208)
  • chore(deps-dev): bump platformdirs from 4.9.4 to 4.9.6 (https://github.com/nordstad/PinViz/pull/209)
  • chore(deps-dev): bump ruff from 0.15.10 to 0.15.11 (https://github.com/nordstad/PinViz/pull/214)
  • chore(deps): bump pydantic from 2.12.5 to 2.13.2 (https://github.com/nordstad/PinViz/pull/216)
  • chore(deps-dev): bump mkdocstrings from 1.0.3 to 1.0.4 (https://github.com/nordstad/PinViz/pull/217)
  • chore(deps-dev): bump hypothesis from 6.151.11 to 6.152.1 (https://github.com/nordstad/PinViz/pull/215)
  • chore(deps-dev): bump pygments from 2.19.2 to 2.20.0 (https://github.com/nordstad/PinViz/pull/218)
  • chore(deps): bump python-dotenv from 1.2.1 to 1.2.2 (https://github.com/nordstad/PinViz/pull/219)

[0.17.6] - 2026-04-22

Fixed

  • Docs site 404 caused by pygments 2.20 incompatibility with zensical; upgraded zensical to 0.0.34

Dependencies

  • Bump pydantic from 2.12.5 to 2.13.2
  • Bump python-dotenv from 1.2.1 to 1.2.2
  • Bump rich from 14.3.3 to 15.0.0
  • Bump mcp from 1.26.0 to 1.27.0
  • Bump python-multipart from 0.0.22 to 0.0.26
  • Bump cryptography from 46.0.6 to 46.0.7

[0.17.5] - 2026-03-18

[0.17.5] - 2026-03-18

Fixed

  • Homebrew formula now pushed directly to tap main instead of opening a PR
  • Brew publish workflow now triggers on release: published event instead of workflow_run, eliminating ambiguous head_branch resolution
  • Brew publish workflow no longer fires on non-tag publish runs

[0.17.4] - 2026-03-18

Fixed

  • Homebrew formula update now uses inline shell instead of a separate Python script, removing it from ruff's scope
  • CHANGELOG push no longer fails when commits land on main between tag push and publish completion

[0.17.3] - 2026-03-18

Changed

  • Homebrew workflow now triggers via workflow_run after PyPI publish completes, ensuring correct ordering and independent re-runnability

[0.17.2] - 2026-03-18

Changed

  • Homebrew formula update moved to dedicated brew-publish.yml workflow; can be re-run independently from the PyPI publish step

[0.17.1] - 2026-03-18

Changed

  • Homebrew tap migrated to dedicated nordstad/homebrew-pinviz repository; users can now tap with brew tap nordstad/pinviz (no custom URL required)
  • Formula auto-update on release now opens a PR on the tap repo instead of committing directly to main

[0.17.0] - 2026-03-17

Added

  • Shared BoardSelectionStrategy protocol and AliasBoardSelectionStrategy β€” centralises board alias resolution across config and MCP flows (https://github.com/nordstad/PinViz/pull/190)
  • DiagramBuilder β€” step-by-step builder shared by config and MCP assembly paths (https://github.com/nordstad/PinViz/pull/190)
  • McpDeviceAdapter β€” typed adapter from MCP device records to core Device model objects (https://github.com/nordstad/PinViz/pull/190)
  • Protocol-specific PinAssignmentStrategy classes (I2CPinAssignmentStrategy, SPIPinAssignmentStrategy, DefaultPinAssignmentStrategy) (https://github.com/nordstad/PinViz/pull/190)
  • Golden SVG snapshot tests for representative rendered diagrams (https://github.com/nordstad/PinViz/pull/190)
  • FIXED_ROLE_PINS and PWM_PINS class constants on PinAssigner (https://github.com/nordstad/PinViz/pull/190)

Changed

  • ConfigLoader now reads validated Pydantic schema fields instead of raw dict keys (https://github.com/nordstad/PinViz/pull/190)
  • ConnectionBuilder delegates device adaptation to McpDeviceAdapter and board resolution to AliasBoardSelectionStrategy (https://github.com/nordstad/PinViz/pull/190)
  • show_legend schema default changed from true to false (https://github.com/nordstad/PinViz/pull/190)
  • ci: update GitHub Actions to Node.js 24-compatible versions (checkout v6, setup-uv v7, upload-artifact v7, download-artifact v8, github-script v8, upload-pages-artifact v4)

Fixed

  • PWM pin list corrected β€” physical pin 32 was missing, pin 12 was duplicated (https://github.com/nordstad/PinViz/pull/190)
  • McpDeviceAdapter._apply_metadata_overrides no longer mutates Device directly; uses dataclasses.replace consistently (https://github.com/nordstad/PinViz/pull/190)

[0.16.2] - 2026-03-17

Added

  • feat: add ESP32/add-device demos, refresh GIFs, fix wizard and logging bugs (https://github.com/nordstad/PinViz/pull/171)
  • chore: add Claude Code automations (hooks, skills, subagent) (https://github.com/nordstad/PinViz/pull/172)

Changed

  • chore(deps-dev): bump mkdocs-material from 9.7.1 to 9.7.2 (https://github.com/nordstad/PinViz/pull/177)
  • chore(deps-dev): bump ruff from 0.15.1 to 0.15.2 (https://github.com/nordstad/PinViz/pull/176)
  • chore(deps-dev): bump mkdocstrings-python from 2.0.1 to 2.0.3 (https://github.com/nordstad/PinViz/pull/175)
  • chore(deps): bump rich from 14.3.2 to 14.3.3 (https://github.com/nordstad/PinViz/pull/174)
  • chore(deps-dev): bump hypothesis from 6.151.6 to 6.151.9 (https://github.com/nordstad/PinViz/pull/173)
  • docs: migrate from Material for MkDocs to Zensical (https://github.com/nordstad/PinViz/pull/179)
  • chore(deps): bump typer from 0.23.1 to 0.24.1 (https://github.com/nordstad/PinViz/pull/183)
  • chore(deps): bump pydantic-settings from 2.13.0 to 2.13.1 (https://github.com/nordstad/PinViz/pull/182)
  • chore(deps-dev): bump zensical from 0.0.23 to 0.0.24 (https://github.com/nordstad/PinViz/pull/181)
  • chore(deps-dev): bump ruff from 0.15.2 to 0.15.4 (https://github.com/nordstad/PinViz/pull/180)
  • chore(deps-dev): bump platformdirs from 4.9.2 to 4.9.4 (https://github.com/nordstad/PinViz/pull/185)
  • chore(deps-dev): bump ruff from 0.15.4 to 0.15.5 (https://github.com/nordstad/PinViz/pull/184)
  • chore(deps-dev): bump ruff from 0.15.5 to 0.15.6 (https://github.com/nordstad/PinViz/pull/188)
  • chore(deps-dev): bump zensical from 0.0.24 to 0.0.27 (https://github.com/nordstad/PinViz/pull/187)
  • chore(deps): bump pyjwt from 2.10.1 to 2.12.0 (https://github.com/nordstad/PinViz/pull/186)

Fixed

  • fix: clean JSON output, Bezier loop bug fix, modernize MCP tests (https://github.com/nordstad/PinViz/pull/189)

0.16.1 - 2026-02-18

Added

  • Homebrew formula (Formula/pinviz.rb) β€” install on macOS via:
    brew tap nordstad/PinViz https://github.com/nordstad/PinViz
    brew install pinviz
    
    Shell completions for bash, zsh, and fish are installed automatically.
  • Auto-update workflow: publish.yml now includes an update-homebrew job that bumps the formula URL and SHA256 on every version tag release using mislav/bump-homebrew-formula-action.

Fixed

  • Add communication to VALID_DEVICE_CATEGORIES so devices using that category (esp8266, hc05, mcp2515, nrf24l01, rc522, sim800l, sx1278) pass validation (#170)
  • Remove duplicate mcp3008.json from device_configs/io/ β€” the more complete sensors/mcp3008.json (with analog channels) is kept (#170)

0.16.0 - 2026-02-16

Added

  • ESP32/ESP8266 board support (#161)
  • ESP32 DevKit V1 board with 30 GPIO pins (dual-sided layout)
  • ESP8266 NodeMCU board with full GPIO pinout
  • Wemos D1 Mini board for compact ESP8266 projects
  • New esp32_weather built-in example with BME280 sensor and OLED display
  • Smart pin assignment feature for automatic GND/VCC pin distribution
  • Documentation and examples for all ESP boards
  • SVG assets with proper pin alignment and scaling

  • Complete inline components support - All three component types now fully functional

  • βœ… Capacitor symbol rendering with parallel plates and value labels
  • βœ… Diode symbol rendering with anode/cathode orientation and triangle symbol
  • βœ… All component types (resistor, capacitor, diode) render correctly at any angle
  • πŸ“ New example configurations: led_with_capacitor.yaml, relay_with_diode.yaml, all_components.yaml
  • πŸ“š Comprehensive documentation added to docs/guide/yaml-config.md
  • βœ… All tests pass including new component rendering tests

Fixed

  • Validation warnings for I2C/SPI bus devices sharing power pins - now correctly recognizes that power sharing on shared buses is normal and expected
  • Inline components feature now matches README advertising (previously only resistors worked)
  • ESP board pin rendering with correct scaling and text alignment

Contributors

  • Special thanks to @f2daz for contributing the ESP32/ESP8266 board support (#161) - their first contribution to PinViz! πŸŽ‰

0.15.0 - 2026-02-12

Added

  • Complexity checking and validation (#Phase1.3)
  • New --max-complexity flag for pinviz render command
  • Enforces hard limit on connection count (useful for CI/CD pipelines)
  • Automatic warnings when diagrams exceed 30 connections or 20 devices
  • Clear error messages suggesting to split diagrams or increase limits
  • Configurable thresholds via LayoutConfig
  • Example: pinviz render diagram.yaml --max-complexity 50

Improved

  • Error messages now include examples and actionable fixes (#Phase1.2)
  • All connection validation errors show example of correct usage
  • Configuration errors include fix suggestions
  • Users can resolve issues without consulting documentation
  • Errors are concise (<5 lines) and well-formatted

  • Device registry fail-fast validation (#Phase1.4)

  • Registry now tracks failed device configurations
  • Raises RuntimeError if zero devices load (instead of cryptic errors later)
  • Logs health check on startup showing loaded/failed counts
  • Warning logged if some (but not all) device configs fail
  • New methods: get_failed_configs() and get_health_status()

Changed

  • Layout engine refactored into modular package (#Phase1.1)
  • Split 1,666-line layout.py into 7 focused modules
  • New package structure: layout/engine.py, layout/positioning.py, layout/routing.py, etc.
  • Improved maintainability and code organization
  • No breaking changes - all public APIs remain backward compatible
  • All 911 tests passing

Internal

  • Improved structured logging throughout
  • Better separation of concerns in layout system
  • Enhanced code quality and maintainability

0.14.0 - 2026-02-12

Added

  • feat: Explicit pin side placement for device pins (#158)
  • New "side" field in device pin configurations ("left" or "right")
  • Works in both JSON device configs and inline YAML definitions
  • Precedence order: explicit position > side > automatic detection > default
  • Enables proper layout for devices like relays (control pins left, output pins right)
  • Case-insensitive validation with clear error messages
  • 35 comprehensive tests (all 911 tests passing)
  • Fully backward compatible (side field is optional)
  • Updated documentation in guides/adding-devices.md
  • Production-ready relay_module device config in actuators/ category
  • Improved pin alignment: equal pin counts on both sides are now perfectly aligned
  • Smart centering: side with fewer pins is automatically centered

0.13.0 - 2026-02-11

Added

  • Named color support for devices and connections - can now use color names like "red", "green", "blue" in addition to hex codes (#155, #156)
  • 15 named colors available: red, green, blue, yellow, orange, purple, black, white, gray, brown, pink, cyan, magenta, lime, turquoise
  • Color names are case-insensitive
  • Whitespace is automatically trimmed from color inputs
  • Invalid colors fall back to default gracefully
  • Works for both device colors and wire colors
  • Backward compatible with existing hex code configurations
  • Code quality score: 10/10 (comprehensive code review passed with improvements)

Changed

  • chore(deps): bump cryptography from 46.0.3 to 46.0.5 (#154)
  • Schema validation now accepts both named colors and hex codes for device and connection colors
  • Color resolution utility with robust error handling and fallback behavior
  • Documentation updated with named color examples and reference table

0.12.1 - 2026-02-09

Changed

  • chore(deps): bump rich from 14.2.0 to 14.3.2 (#144, #148)
  • chore(deps): bump python-multipart from 0.0.20 to 0.0.22 (#147)
  • chore(deps): bump mcp from 1.25.0 to 1.26.0 (#145)
  • chore(deps-dev): bump hypothesis from 6.150.2 to 6.151.5 (#142, #149, #152)
  • chore(deps-dev): bump ruff from 0.14.13 to 0.15.0 (#146, #150)
  • chore(deps-dev): bump mkdocstrings from 1.0.0 to 1.0.3 (#143, #153)
  • chore(deps-dev): update uv-build requirement (#151)

Fixed

  • fix: update enums to use StrEnum for ruff 0.15.0 compatibility (#150)

0.12.0 - 2026-01-25

Added

  • feat: Dark mode support for diagrams (https://github.com/nordstad/PinViz/pull/141)
  • New theme system with LIGHT and DARK color schemes
  • Dark canvas background (#1E1E1E) optimized for dark UIs
  • Light text and stroke colors for visibility in dark mode
  • Pin labels inverted for better contrast (white bg, black text in dark mode)
  • Wire colors preserved to maintain electrical conventions
  • Theme support in YAML config: theme: "dark"
  • CLI --theme flag to override config: pinviz render config.yaml --theme dark
  • New examples: bh1750_dark.yaml, pico_led_dark.yaml, i2c_spi_dark.yaml
  • Comprehensive themes guide in documentation
  • 38 new tests (theme unit + integration tests)
  • 8 CLI tests for --theme flag coverage
  • Perfect for dark-themed documentation, presentations, and GitHub dark mode

0.11.2 - 2026-01-25

Added

  • feat: Dynamic halo color for light-colored wires (https://github.com/nordstad/PinViz/pull/139)
  • Automatic visibility detection using WCAG 2.0 luminance calculation
  • Light wires (luminance > 0.7) get dark gray halos for visibility
  • Dark/medium wires keep traditional white halos
  • No configuration needed - works automatically for all wire colors
  • Includes comprehensive test suite with 19 new tests
  • New example: examples/wire_visibility.yaml showcasing the feature

0.11.1 - 2026-01-25

Changed

  • chore(deps-dev): bump hypothesis from 6.150.0 to 6.150.2 (https://github.com/nordstad/PinViz/pull/136)
  • chore(deps-dev): bump ruff from 0.14.11 to 0.14.13 (https://github.com/nordstad/PinViz/pull/137)

Fixed

  • fix: correct IR LED Ring pin name from CTRL to EN (https://github.com/nordstad/PinViz/pull/138)

0.11.0 - 2026-01-18

Added

  • feat: Add ConnectionGraph utility class for topology analysis (#72) (https://github.com/nordstad/PinViz/pull/91)
  • [Phase 1.5] Add Phase 1 Integration Tests (https://github.com/nordstad/PinViz/pull/94)
  • fix: Sync MCP module version with package metadata and add Codecov badge (https://github.com/nordstad/PinViz/pull/95)
  • feat: Add Pydantic schemas for multi-level connections (Phase 2.1) (https://github.com/nordstad/PinViz/pull/97)
  • docs: Add supported boards table to README (https://github.com/nordstad/PinViz/pull/99)
  • [Phase 3.1] Add multi-level connection examples (https://github.com/nordstad/PinViz/pull/102)
  • feat: Implement multi-tier device layout positioning (Phase 3.2) (https://github.com/nordstad/PinViz/pull/103)
  • feat: Implement canvas sizing and layout validation (Phase 3.3) (#81) (https://github.com/nordstad/PinViz/pull/104)
  • test: Add multi-tier canvas sizing integration test (Phase 3.4) (https://github.com/nordstad/PinViz/pull/105)
  • [Phase 4.2] Add Comprehensive Integration Tests for Multi-Level Features (https://github.com/nordstad/PinViz/pull/107)
  • feat: Add professional example diagrams for Phase 4.3 (https://github.com/nordstad/PinViz/pull/108)
  • feat: Add smart vertical device positioning based on pin connections (https://github.com/nordstad/PinViz/pull/113)
  • fix: Eliminate wire stubs and add validation (fixes #112) (https://github.com/nordstad/PinViz/pull/114)
  • docs: Add multi-tier diagram examples to documentation (fixes #115) (https://github.com/nordstad/PinViz/pull/116)
  • docs: Add comprehensive multi-level device support documentation (fixes #86) (https://github.com/nordstad/PinViz/pull/117)
  • fix: add bounds checking to wire conflict resolution (fixes #119) (https://github.com/nordstad/PinViz/pull/129)

Changed

  • feat: Extend Connection model for device-to-device connections (https://github.com/nordstad/PinViz/pull/90)
  • chore(deps): bump urllib3 from 2.5.0 to 2.6.3 (https://github.com/nordstad/PinViz/pull/92)
  • [Phase 1.3] Pin Compatibility Matrix and Validation (https://github.com/nordstad/PinViz/pull/93)
  • feat: Update ConfigLoader for multi-level connections (Phase 2.2) (https://github.com/nordstad/PinViz/pull/98)
  • [Phase 2.3] Enhance CLI Validation Command (https://github.com/nordstad/PinViz/pull/100)
  • feat: Enhance validate command with graph visualization (#78) (https://github.com/nordstad/PinViz/pull/101)
  • [Phase 4.1] Comprehensive Integration Tests for Multi-Tier Layout (https://github.com/nordstad/PinViz/pull/106)

Fixed

  • Potential fix for code scanning alert no. 8: Workflow does not contain permissions (https://github.com/nordstad/PinViz/pull/70)
  • fix: centralize magic numbers into organized constant classes (fixes #121) (https://github.com/nordstad/PinViz/pull/128)
  • perf: optimize device lookups and wire conflict detection (fixes #118, #122) (https://github.com/nordstad/PinViz/pull/130)
  • perf: optimize wire conflict detection with early exit (fixes #122) (https://github.com/nordstad/PinViz/pull/131)
  • fix: improve error handling and validation messages (fixes #123, #124) (https://github.com/nordstad/PinViz/pull/132)
  • refactor: extract pin position calculation methods (fixes #120) (https://github.com/nordstad/PinViz/pull/133)
  • feat: decouple layout and rendering via LayoutResult (fixes #125) (https://github.com/nordstad/PinViz/pull/134)
  • feat: make device registry instantiable for better testing (fixes #126) (https://github.com/nordstad/PinViz/pull/135)

0.10.0 - 2026-01-14

Removed

  • BREAKING: Removed config command group (pinviz config show|path|init|edit)
  • BREAKING: Removed shell completion command group (pinviz completion install|show|uninstall)
  • BREAKING: Removed global options: --log-level and --log-format
  • BREAKING: Removed TOML configuration file support
  • BREAKING: Logging is now fixed to ERROR-only output (no verbose option)

Changed

  • Simplified CLI to focus on core functionality (render, validate, example, list, add-device)
  • CLI output is now quiet by default, showing only essential messages

Documentation

  • Updated README with link to examples gallery

Migration Guide

  • Config files: No longer needed or supported - the tool works without configuration
  • Shell completions: Typer provides built-in completion support if needed
  • Logging: If you need debug output, you'll need to modify the source code (rare use case)
  • No action needed for most users - the core commands work the same way

0.9.2 - 2026-01-13

Added

  • fix: address critical and high-priority code quality issues (https://github.com/nordstad/PinViz/pull/65)
  • fix: add pin validation and consolidate exception handling (https://github.com/nordstad/PinViz/pull/66)
  • feat: add contribution message to device wizard (https://github.com/nordstad/PinViz/pull/68)

Fixed

  • fix: correct questionary Choice parameter order in device wizard (https://github.com/nordstad/PinViz/pull/67)

0.9.1 - 2026-01-13

Added

  • feat: Add smart pin role suggestions to add-device wizard (https://github.com/nordstad/PinViz/pull/64)

Fixed

  • fix: prevent traceback when exiting device wizard (https://github.com/nordstad/PinViz/pull/63)

[0.9.0] - 2026-01-13

Added

  • Raspberry Pi Pico Support - Raspberry Pi Pico board support with horizontal pin layout (https://github.com/nordstad/PinViz/pull/61)
  • Complete support for Raspberry Pi Pico with dual 20-pin headers (40 pins total)
  • New dual-header layout system for boards with GPIO pins on multiple edges
  • Horizontal pin positioning (single row per header) vs traditional vertical columns
  • Reversed pin order on top header (pin 20 on left, pin 1 on right)
  • Factory function raspberry_pi_pico() with comprehensive documentation
  • Board name aliases: raspberry_pi_pico, pico
  • JSON configuration in board_configs/raspberry_pi_pico.json
  • 15 new comprehensive tests for Pico board functionality
  • 4 new tests for Pico board alias support
  • Example diagrams: examples/pico_led.yaml, examples/pico_bme280.yaml, and examples/pico_leds_with_specs.yaml
  • Documentation for dual-sided board configuration in CLAUDE.md
  • Pico multi-LED example with specifications table demonstrating --show-legend flag
  • Extended Schema Support for dual-sided boards (https://github.com/nordstad/PinViz/pull/61)
  • BoardLayoutConfigSchema now supports top_header and bottom_header configurations
  • BoardPinConfigSchema includes optional header field for pin placement
  • Board detection logic automatically identifies dual-header vs single-header layouts
  • Pattern established for future boards (ESP32, Arduino Nano, etc.)
  • MCP Server Support for Raspberry Pi Pico and Pi 4 (https://github.com/nordstad/PinViz/pull/61)
  • Added board aliases to MCP parser: pico, raspberry pi pico, rpi pico β†’ raspberry_pi_pico
  • Added board aliases for Pi 4: pi4, rpi4, raspberry pi 4 β†’ raspberry_pi_4
  • 5 new parser tests for board alias recognition (Pi 4 and Pico)
  • Updated MCP documentation with all supported board aliases
  • MCP server now supports natural language prompts like "Connect LED to pico"
  • Dynamic Board Discovery in CLI list command (https://github.com/nordstad/PinViz/pull/62)
  • Added get_available_boards() function that automatically discovers boards from board_configs/
  • No need to manually update CLI when adding new boards
  • Automatically displays all boards: Pi 4, Pi 5, and Pico with their aliases

Changed

  • Improved Wire Colors in Pico BME280 example for better visibility (https://github.com/nordstad/PinViz/pull/61)
  • Changed I2C wire colors from yellow to blue (#2196F3) and orange (#FF9800)
  • Yellow wires were hard to see against white background
  • New colors provide better contrast and readability in documentation
  • Enhanced Exception Handling in completion commands (https://github.com/nordstad/PinViz/pull/62)
  • Replaced broad except Exception with specific exception types
  • Added subprocess.SubprocessError, FileNotFoundError, PermissionError, OSError
  • Provides actionable error messages with troubleshooting hints
  • Dependency Updates
  • Bump pydantic from 2.12.4 to 2.12.5 (https://github.com/nordstad/PinViz/pull/57)
  • Bump ruff from 0.14.10 to 0.14.11 (https://github.com/nordstad/PinViz/pull/58)
  • Bump platformdirs from 4.5.0 to 4.5.1 (https://github.com/nordstad/PinViz/pull/59)

Fixed

  • Layout Spacing Issues - Fixed title overlap and specs table positioning (https://github.com/nordstad/PinViz/pull/61)
  • Dynamic board margin calculation based on whether title is shown
  • Title now has proper spacing (title_height + title_margin) above board and wires
  • Specs table positioned relative to bottommost device with configurable margin
  • Added specs_table_top_margin parameter to LayoutConfig (default: 30px)
  • Renamed board_margin_top to board_margin_top_base with dynamic calculation
  • Prevents wires from overlapping with title text
  • Prevents devices from being too close to specifications table
  • All layout spacing now calculated dynamically for proper visual separation

Tests

  • Comprehensive ValidationResult Tests (https://github.com/nordstad/PinViz/pull/62)
  • Added 9 new test cases for ValidationResult class
  • Tests cover success/error/warning scenarios in strict and non-strict modes
  • Tests validate console and JSON output formatting
  • Increased total test count from 33 to 41 tests

0.8.1 - 2026-01-11

Changed

  • Move show_legend to CLI flag and improve specs table layout (https://github.com/nordstad/PinViz/pull/55)
  • Modernize CLI with Typer + Rich (https://github.com/nordstad/PinViz/pull/56)

0.8.0 - 2026-01-10

Added

  • Raspberry Pi 4 Support (https://github.com/nordstad/PinViz/pull/52)
  • Complete support for Raspberry Pi 4 Model B with 40-pin GPIO header
  • Board configuration JSON system for easy board addition
  • Factory function raspberry_pi_4() with proper documentation
  • Board name aliases: raspberry_pi_4, rpi4, pi4
  • Comprehensive test suite with pinout validation
  • All Pi boards share identical 40-pin GPIO pinout (Pi 2, 3, 4, 5, Zero 2 W)
  • User-Facing Documentation Guides (https://github.com/nordstad/PinViz/pull/54)
  • Created guides/ directory for user-facing guides
  • guides/ADDING_BOARDS.md - Step-by-step board addition guide for maintainers
  • guides/DEVICE_CONFIG_GUIDE.md - Device configuration reference
  • Feature Showcase table in examples documentation linking capabilities to examples

Changed

  • Streamlined README (https://github.com/nordstad/PinViz/pull/54)
  • Reduced README from 799 to 171 lines (78.6% smaller)
  • Focus on visual impact: logo, demo GIF, example diagram
  • Essential information only: installation, quick start, features
  • All detailed documentation moved to mkdocs
  • PyPI-compatible image formatting with HTML img tags
  • Improved Wire Routing (https://github.com/nordstad/PinViz/pull/53)
  • Fixed missing wires in example diagrams
  • Enhanced validation for example command
  • Better wire connection handling to device pins
  • Documentation Organization (https://github.com/nordstad/PinViz/pull/54)
  • Moved detailed configuration docs from README to mkdocs
  • Updated all documentation links to reference proper locations
  • Enhanced examples page with categorized feature showcase
  • Asset Credits Update
  • Updated SVG asset credits to Wikimedia Commons (from FreeSVG.org)

Fixed

  • Wire connections to device pins properly aligned (https://github.com/nordstad/PinViz/pull/50)
  • Missing wires in example diagrams (https://github.com/nordstad/PinViz/pull/53)
  • Board rendering standardization across different board types (https://github.com/nordstad/PinViz/pull/49)

Improved

  • Code quality improvements with better test coverage (https://github.com/nordstad/PinViz/pull/51)
  • Refactoring for maintainability
  • Configuration file structure

0.7.0 - 2026-01-07

Added

  • Hardware Validation System (https://github.com/nordstad/PinViz/pull/41)
  • Comprehensive wiring diagram validation with 5 check categories
  • Pin conflict detection (multiple devices on same GPIO)
  • I2C address conflict warnings with device recognition
  • Voltage compatibility checks (3.3V vs 5V protection)
  • GPIO current limit warnings (16mA per pin)
  • Connection validity checks (invalid pins, non-existent devices)
  • pinviz validate CLI command with --strict mode
  • Automatic validation during render command
  • Three severity levels: ERROR, WARNING, INFO
  • Clear, actionable error messages with location context
  • Legal disclaimer for validation limitations
  • 12 comprehensive test cases covering all validation scenarios
  • Detailed documentation in docs/validation.md
  • Professional Structured Logging (https://github.com/nordstad/PinViz/pull/42)
  • structlog>=24.1.0 integration for observability and debugging
  • Centralized logging configuration in src/pinviz/logging_config.py
  • JSON format for machine-readable logs (log aggregation tools)
  • Console format for human-readable output with colors
  • Automatic callsite metadata (file, function, line number)
  • Configurable log levels via --log-level flag (DEBUG, INFO, WARNING, ERROR)
  • Configurable log format via --log-format flag (json|console)
  • Default WARNING level for minimal noise
  • Logs to stderr to avoid interfering with stdout/pipes
  • 19 new tests for logging configuration and behavior
  • MCP Server Validation Integration (https://github.com/nordstad/PinViz/pull/43)
  • Automatic hardware validation in generate_diagram tool
  • Enhanced response format with validation results
  • Validation status field: "passed", "warning", or "failed"
  • Categorized validation issues (errors, warnings, info)
  • Human-readable validation messages
  • Updated MCP server documentation with validation examples
  • Google Analytics tracking for documentation site
  • Demo video infrastructure with VHS tape files
  • Validation demo video (scripts/demos/validation_demo.tape)
  • JSON configuration examples in documentation

Changed

  • MCP server builds complete Diagram objects using ConnectionBuilder
  • Documentation index now lists validation, MCP server, and structlog features
  • CLI guide includes validate command and logging options
  • MCP server usage docs include automatic validation section

Documentation

  • Added docs/validation.md comprehensive validation guide
  • Updated docs/guide/cli.md with validate command and logging flags
  • Updated docs/index.md with new features
  • Updated docs/mcp-server/usage.md with validation examples
  • Added Validation page to User Guide navigation in mkdocs.yml

0.6.1 - 2025-12-29

Fixed

  • Fix broken demo GIF on PyPI by using absolute GitHub raw URL in README

0.6.0 - 2025-12-29

Added

  • Professional wire routing system with intelligent spacing and z-order (https://github.com/nordstad/PinViz/pull/40)
  • Comprehensive wire routing documentation in docs/wire-routing.md
  • Wire spacing test suite with 5 tests for routing quality assurance
  • Collision detection for dynamic rail position adjustment
  • Configurable wire spacing parameters (wire_spacing, bundle_spacing)

Changed

  • Wire routing now uses horizontal rail spreading (8px spacing by default)
  • Vertical fan-out at GPIO header for clear visual separation
  • Three-level z-order sorting ensures all wires remain visible
  • Wires from right GPIO column now properly rendered on top
  • Improved wire bundling with natural grouping by destination
  • Enhanced LayoutConfig with new spacing parameters

Fixed

  • Wire overlap issues eliminated through intelligent spacing
  • Wires from even-numbered pins no longer hidden under odd-numbered pins
  • Improved wire visibility in dense diagrams
  • Deterministic routing for consistent version control

0.5.1 - 2025-12-28

Dependencies

  • Bump ruff from 0.14.6 to 0.14.7 (https://github.com/nordstad/PinViz/pull/28)
  • Bump beautifulsoup4 from 4.14.2 to 4.14.3 (https://github.com/nordstad/PinViz/pull/29)
  • Bump ruff from 0.14.7 to 0.14.8 (https://github.com/nordstad/PinViz/pull/30)
  • Bump pytest from 9.0.1 to 9.0.2 (https://github.com/nordstad/PinViz/pull/31)
  • Bump mcp from 1.22.0 to 1.23.1 (https://github.com/nordstad/PinViz/pull/32)
  • Bump mkdocstrings-python from 2.0.0 to 2.0.1 (https://github.com/nordstad/PinViz/pull/33)
  • Bump mcp from 1.23.1 to 1.24.0 (https://github.com/nordstad/PinViz/pull/35)
  • Bump ruff from 0.14.8 to 0.14.9 (https://github.com/nordstad/PinViz/pull/34)
  • Bump ruff from 0.14.9 to 0.14.10 (https://github.com/nordstad/PinViz/pull/38)
  • Bump mkdocs-material from 9.7.0 to 9.7.1 (https://github.com/nordstad/PinViz/pull/37)
  • Bump mcp from 1.24.0 to 1.25.0 (https://github.com/nordstad/PinViz/pull/36)
  • bump version (https://github.com/nordstad/PinViz/pull/39)

0.5.0 - 2025-11-30

Added

  • Add documentation links to all built-in device types (https://github.com/nordstad/PinViz/pull/27)

Changed

  • Improve README.md structure and user experience (https://github.com/nordstad/PinViz/pull/26)

Fixed

  • Fix docstring formatting: Change 'Example:' to 'Examples:' (https://github.com/nordstad/PinViz/pull/25)

Dependencies

  • Bump ruff from 0.14.5 to 0.14.6 (https://github.com/nordstad/PinViz/pull/22)
  • Bump mkdocstrings from 0.30.1 to 1.0.0 (https://github.com/nordstad/PinViz/pull/24)
  • Bump mkdocstrings-python from 1.19.0 to 2.0.0 (https://github.com/nordstad/PinViz/pull/23)

0.4.0 - 2025-11-25

Added

  • Raspberry Pi Zero 2 W board support with full 40-pin GPIO header
  • Custom Pi Zero SVG board asset (scaled 1.6x for optimal visibility)
  • Board-specific pin sizing for better clarity on compact boards
  • Accurate pin positions extracted and scaled from official dimensions
  • All standard pin roles supported (GPIO, I2C, SPI, UART, PWM, power, ground)

[0.3.0] - 2025-01-23

Changed

  • BREAKING: CLI now requires explicit command for rendering diagrams
  • Old: pinviz diagram.yaml -o output.svg
  • New: pinviz render diagram.yaml -o output.svg
  • Reason: Improved clarity and consistency with modern CLI tools (AWS, kubectl, etc.)
  • Improved CLI help formatting with professional output
  • Removed confusing {render,example,list} syntax from help
  • Added properly formatted examples section with line breaks
  • Added default values to all options (--gpio/--no-gpio)
  • Made --gpio/--no-gpio mutually exclusive groups
  • Better metavar names: CONFIG_FILE, PATH, NAME
  • Enhanced CLI structure
  • Changed "Positional Arguments" to "Commands:" section
  • Added descriptions to each subcommand
  • Custom help formatter preserves examples formatting

Fixed

  • CLI help examples now display on separate lines (no wrapping)
  • MCP server documentation updated with correct CLI commands
  • All documentation updated to use new CLI format

Documentation

  • Updated docs/guide/cli.md to show only new format
  • Updated MCP server docstrings with correct command syntax
  • All examples in documentation now use pinviz render format

[0.2.1] - 2025-01-23

Fixed

  • Logo display on PyPI by using absolute GitHub URL instead of relative path

[0.2.0] - 2025-01-23

Added

  • MCP Server Integration: AI-powered GPIO diagram generation via Model Context Protocol
  • Natural language parsing: Generate diagrams from prompts like "connect BME280 sensor"
  • Intelligent pin assignment: Automatic I2C bus sharing, SPI chip selects, power distribution
  • URL-based device discovery: Parse device specs directly from documentation URLs
  • 25-device database with I2C, SPI, GPIO, and UART devices
  • User device database for custom devices
  • MCP tools: generate_diagram, parse_device_from_url, list_devices, get_device_info
  • Supported domains for URL parsing: Adafruit, SparkFun, Waveshare, Pimoroni, Raspberry Pi, Seeed Studio, peppe8o.com
  • pinviz-mcp command line entry point for MCP server
  • Comprehensive test suite with 325+ tests (71% code coverage)

Changed

  • Restructured package as namespace package for better MCP server integration
  • Moved assets into src/pinviz/ for proper packaging with uv build
  • Enhanced YAML generation with explicit yaml_content field for Claude Desktop
  • Improved MCP tool documentation with clear usage instructions

Fixed

  • YAML reconstruction errors when using MCP server through Claude Desktop
  • Asset packaging issues with uv_build backend

0.1.5 - 2025-01-21

Added

  • Modern CLI with rich-argparse for beautiful, colorful help formatting
  • --version / -v flag to display package version
  • Automatic version detection from package metadata using importlib.metadata

Changed

  • CLI help output now uses RichHelpFormatter for improved readability and visual appeal
  • Enhanced user experience with color-coded help text and better formatting

0.1.3 - 2025-01-21

Changed

  • Improved installation instructions in README and documentation
  • Recommend uv tool install pinviz as primary method for CLI usage
  • Clearly explain difference between uv tool install and uv add
  • Add note about uv run prefix requirement for uv add installations
  • Restructured Quick Start guide with progressive learning path
  • Step 1: Try built-in examples (immediate success)
  • Step 2: Create custom YAML diagrams
  • Step 3: Use Python API for programmatic control
  • Updated GitHub Pages documentation (docs/getting-started/) to match README improvements

Fixed

  • Installation confusion where users couldn't find pinviz command after uv add

0.1.2 - 2025-01-21

Fixed

  • Fixed image URLs in README to use raw.githubusercontent.com for proper display on PyPI

0.1.1 - 2025-01-21

Added

  • PyPI publishing workflow with GitHub Actions following uv best practices
  • Comprehensive CONTRIBUTING.md guide for contributors
  • JUnit XML test result reporting to CI pipeline

Changed

  • Moved example diagrams from out/ to images/ directory
  • Removed Codecov badge (will be re-added later with proper token)
  • Consolidated dev dependencies to fix CI failures

Fixed

  • Fixed test result publishing permissions in GitHub Actions

0.1.0 - 2025-01-20

Added

  • Initial release of PinViz (formerly pi-diagrammer)
  • Declarative YAML/JSON configuration for diagram creation
  • Programmatic Python API for creating diagrams
  • Automatic wire routing with configurable styles (orthogonal, curved, mixed)
  • Inline component support (resistors, capacitors, diodes)
  • Color-coded wires with automatic assignment based on pin function
  • Built-in templates for Raspberry Pi 5 board
  • Pre-configured device templates:
  • BH1750 I2C light sensor
  • IR LED ring module
  • Generic I2C/SPI devices
  • LED and button components
  • Optional GPIO pin reference diagram
  • SVG output for scalable, high-quality vector graphics
  • CLI tool with commands:
  • pinviz render - Generate diagrams from config files
  • pinviz example - Generate built-in examples
  • pinviz list - List available templates
  • Comprehensive documentation with MkDocs + Material theme
  • GitHub Actions CI workflow with automated testing
  • Project badges (CI, docs, license, Python version, PyPI)
  • Full test coverage (85%+) with pytest
  • Type hints throughout codebase
  • Ruff linting and formatting configuration

Documentation

  • Complete README with installation, quick start, and examples
  • CONTRIBUTING.md with development guidelines
  • CLAUDE.md for AI assistant context
  • Example configurations and diagrams