fix: pcbLayout matchAdapt stacked all PCB components at the origin - #3137
Open
zkasuran wants to merge 1 commit into
Open
fix: pcbLayout matchAdapt stacked all PCB components at the origin#3137zkasuran wants to merge 1 commit into
zkasuran wants to merge 1 commit into
Conversation
doInitialPcbLayout handled grid, pack and flex but not the match-adapt mode that _getPcbLayoutMode returns for pcbLayout.matchAdapt or matchAdapt. The mode fell through, so no PCB layout ran and every component stayed on the group origin and overlapped. Fall back to packing so the board is laid out. Schematic match-adapt is unchanged. Adds a regression test with a PCB snapshot.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Closes #3136
What
pcbLayout={{ matchAdapt: true }} (and the top-level matchAdapt prop) is a valid PCB layout config, but there is no PCB match-adapt layout. Group.doInitialPcbLayout() dispatched only grid, pack and flex, so the match-adapt mode fell through and no PCB layout ran. Every component stayed on the group origin and overlapped, while the schematic looked fine. The same board without the prop packs cleanly.
Fix
Dispatch the match-adapt PCB mode to packing, the existing default auto-layout, so the board is laid out. Schematic match-adapt is unchanged. A future real PCB match-adapt can replace the fallback in the same spot.
Test
Adds tests/groups/group-pcb-layout-matchadapt.test.tsx: a board with pcbLayout={{ matchAdapt: true }} and four components. It asserts the four get distinct centers and produce no overlap DRC errors. It also carries a PCB snapshot. With the fix reverted the test fails (one distinct center instead of four).
Verification
AI assistance (Claude) was used in developing this change. The design, review and verification were done by the author. Verified locally before submitting: bun test on the new test and the groups, schematic-match-adapt and flex suites (44 pass, 2 skip, 0 fail), bunx tsc --noEmit, bunx @biomejs/biome format, bun run build and bun run smoke-test:dist.