Repository navigation
v0.12.0 — Exact Targets. Honest Results. Safer Boards.
Konnect v0.12.0 — Exact Targets. Honest Results. Safer Boards.
Konnect v0.12.0 is the release where automation stops merely asking KiCad to do the right thing and starts proving what actually happened.
This release binds live operations to the exact requested board, verifies editor selections and cross-probe targets, preserves schematic identity and library metadata through mutation, produces matched JLCPCB manufacturing files, and turns the project's reliability rules into executable contracts.
The result is a much harder system to fool: fewer request values echoed as “success,” fewer stale-file fallbacks, fewer ambiguous IPC failures, and substantially better evidence when a design is changed, checked, synchronized, or prepared for manufacture.
Major highlights
Live KiCad operations now know exactly which board they are touching
IPC operations bind to the requested document instead of whichever editor happens to answer. Selection, navigation, cross-probing, socket discovery, and health reporting now preserve exact target identity and return observable reasons when KiCad is unavailable.
Schematics retain their electrical and human meaning
Mirrored symbol placement, movable and hideable field text, identity-based net resolution, library-field preservation, safer mutation commits, honest annotation results, richer symbol graphics, and corrected single-pin-net detection make generated and edited schematics substantially more faithful to KiCad.
Manufacturing output is useful without hand repair
JLCPCB BOM and CPL files now form a matched vendor-ready set, CPL rotations are corrected, copper-layer counts come from the actual layer table, mounting holes use KiCad's shipped footprint names, DRC identifies item ownership, and live-board DRC synchronizes the requested board before invoking the CLI.
Reliability is now a project contract, not reviewer folklore
Advertised input schemas are enforced, unknown fixed-tool arguments are rejected, shared outcome types expose applied/refused/uncertain results, mock IPC servers no longer race over ephemeral ports, and release publication is gated on real-KiCad acceptance.
What's changed
IPC, editor targeting, and runtime resilience
- #407 — Distinguish “requested board is not open” from an editor refusal. — @pauliuszaleckas
- #480 — Bind IPC mutations to the exact requested board. — @neusse
- #487 — Preserve typed document identity during board binding. — @neusse
- #486 — Refuse stale locked-file fallbacks instead of racing the live editor. — @neusse
- #488 — Discover which navigation capabilities the connected editor actually supports. — @neusse
- #491 — Observe the editor's exact selection rather than assuming it. — @neusse
- #492 — Resolve exact editor navigation targets. — @neusse
- #493 — Verify editor selection mutations through readback. — @neusse
- #494 — Test the complete unavailable-capability matrix for navigation. — @neusse
- #495 — Resolve exact cross-probe targets. — @neusse
- #505 — Discover KiCad sockets from metadata without probing by connection. — @tonydzi
- #442 — Record running servers and sweep dead process records at startup. — @tonydzi
- #484 — Add a guarded Unix stdio reload operation. — @neusse
- #530 — Find KiCad's Windows endpoint in the named-pipe namespace. — @mixelpixx
- #535 — Report why KiCad did not answer an IPC health check. — @mixelpixx
Schematic fidelity and mutation safety
- #483 — Document label scope versus power-symbol behavior in instanced sheets. — @7487
- #402 — Count actual pins, not labels, when finding single-pin nets. — @pauliuszaleckas
- #502 — Create visible symbol bodies from graphics primitives. — @triglav-modular
- #520 — Keep generated power pins separated and readable. — @neusse
- #489 — Move and hide symbol field text. — @triglav-modular
- #485 — Place mirrored schematic symbols. — @triglav-modular
- #527 — Validate schematic mutations before committing them. — @neusse
- #513 — Resolve schematic nets by identity rather than display name. — @pauliuszaleckas
- #548 — Preserve library Value, Footprint, and custom fields during placement. — @neusse
- #570 — Isolate temporary ERC reports so concurrent checks cannot collide. — @neusse
- #579 — Annotate schematics using eeschema-compatible behavior and report observed results. — @mixelpixx
PCB synchronization, verification, and manufacturing
- #504 — Treat a pathless board footprint as having no schematic identity. — @triglav-modular
- #509 — Limit duplicate-board-reference errors to references used by the schematic. — @triglav-modular
- #511 — Count copper layers structurally from KiCad's layer table. — @mixelpixx
- #443 — Generate a matched JLCPCB BOM and CPL file set. — @neusse
- #481 — Identify the owning board item for each DRC result. — @neusse
- #512 — Use mounting-hole footprints shipped by KiCad. — @mixelpixx
- #519 — Correct JLCPCB component-placement rotations. — @neusse
- #522 — Always request schematic-parity DRC and disclose when no schematic is available. — @mixelpixx
- #528 — State honestly that the current clearance tool measures anchor distance. — @mixelpixx
- #523 — Report unassigned footprints without aborting PCB synchronization. — @mixelpixx
- #571 — Prove schematic synchronization preserves board-only objects. — @neusse
- #585 — Synchronize the exact live board before CLI-backed DRC. — @neusse
- #599 — Recognize polygon graphics as valid Edge.Cuts outlines. — @Reid-n0rc
- #603 — Expose typed pad geometry for reliable physical checks. — @neusse
Contracts, validation, CI, documentation, and maintenance
- #497 — Document the protected-main merge workflow. — @neusse
- #482 — Reject malformed nested library inputs. — @neusse
- #447 — Update the GitHub release action. — @dependabot
- #448 — Update the TOML dependency. — @dependabot
- #534 — Add interactive architecture diagrams. — @neusse
- #550 — Establish the shared reliability contract for tool contributions. — @neusse
- #551 — Enforce the input schemas advertised over MCP. — @neusse
- #552 — Eliminate ephemeral-port races in mock IPC servers. — @neusse
- #553 — Add shared applied, refused, unsupported, and uncertain outcome types. — @neusse
- #554 — Enforce the reviewed reliability-contract baseline in tests. — @neusse
- #557 — Update schematic-viewer dependencies. — @dependabot
- #559 — Update workspace dependencies. — @dependabot
- #568 — Update
dirsto version 7 consistently across lockfiles. — @neusse - #573 — Block release publication unless real-KiCad acceptance passes. — @neusse
- #584 — Reject unknown arguments on fixed tool schemas. — @neusse
- #591 — Require PRs to explain architectural fit. — @neusse
- #601 — Avoid redundant post-merge validation when exact-head CI is authoritative. — @neusse
- #607 — Automate the 30-day
wontfixevidence window. — @neusse
Known limitations and v0.12.1 patch queue
The project owner approved v0.12.0 with the following issues still open. They
remain tracked for a patch release; this approval changes the release timing,
not the evidence or severity recorded on each issue.
- #410 —
check_clearance
measures anchor distance, not physical copper or pad clearance. Use KiCad DRC
as the authority for actual clearance. - #595 — live placement
scoring can omit the moved component and miss an overlap. Re-read the board
and run KiCad DRC after live moves; do not use the score alone as acceptance. - #596 —
place_decoupling_capscan pair through a shared rail and move an unrelated
capacitor. Avoid automatic application on shared rails; use explicit,
reviewed component moves. - #597 — the force-directed
refiner can produce non-converging or non-improving moves. Do not use it for
production placement; prefer explicit bounded moves and inspect the result. - #609 —
apply_templatecan
emit malformed schematic instance identity. Avoid it for production designs,
or inspect and repair instance identity before later batch writes or sync. - #610 —
set_active_layer
can write a token KiCad 10.0.6 cannot parse. Do not call this tool in v0.12.0.
To recover an affected board, remove the injected(active_layer ...)entry
from the board file and reopen it in KiCad. - #615 — schematic rotation
does not reconcile junction connectivity. Inspect and repair junctions after
rotation; do not assume that visual contact proves electrical connectivity.
Before tagging:
- Project owner explicitly approved the v0.12.0 release with the current P0 issues documented above and retained for a patch release.
- Open overlap sets are drained or deliberately deferred before the version/count change.
-
cargo xtask fix-doc-countsis run; counts are never hand-edited. - Version and PCM metadata are updated together in one final release PR.
- Required CI is green on the exact release head.
- Real-KiCad E2E and all seven live IPC tests pass against the candidate.
- The preserved routed-board benchmark returns manufacturing READY with
zero DRC errors and zero unconnected items. Its assembly package remains
deliberately INCOMPLETE because mounting holesH1/H2appear in the
CPL but not the BOM; this is recorded as validation debt rather than hidden. - Release notes list remaining limitations honestly.
- The tag-triggered release workflow produces all binary and PCM assets before publishing.
- Konnect Codex is synchronized, tested, released, and announced after the Konnect tag exists.
Full changelog: v0.11.1...v0.12.0