feat(pcb): batch component placement atomically - #264
Open
nordic-style wants to merge 1 commit into
Open
Conversation
nordic-style
force-pushed
the
codex/feat/batch-component-placement
branch
from
August 17, 2026 23:02
4d3d487 to
5cb168f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add
set_component_placements, an additive PCB tool that sets the X/Y position and absolute rotation of multiple existing footprints atomically.No linked issue.
Approach
UpdateItemsrequest inside one KiCad commit.Compatibility and safety
This is an additive MCP tool and schema. The
pcb_componentscount and all quoted total/toolset counts are updated.Both paths are all-or-nothing. Live IPC verifies that the requested board is active and creates one undo step. The file fallback is used only when IPC is unreachable, rejects stale source content, validates every reference before writing, and preserves pads, graphics, fields, line endings, and unrelated board content.
Validation
cargo fmt --all -- --checkcargo test --workspace --locked --lib --tests— the full local core run reaches the same threeupdate_symbols_from_library_*failures reproduced onorigin/main; focused suites below passcargo test --workspace --locked --doc— not runcargo clippy -p konnect-core --locked --all-targets -- -D warningscargo test -p konnect-core --locked --lib pcb_components::tests— 57 passedcargo test -p konnect-ipc --locked --test footprint_transform_test— 3 passed on this branchcargo test -p konnect --locked --test doc_tool_counts— 6 passedsource: ipc, one undo step, unchanged live pad positions, and the board saved successfullyReview checklist
docs/NAMING_CONVENTIONS.md; public renames include compatibility handling.