Skip to content

Respect supplied symbol geometry and preserve external terminals - #1283

Open
imrishabh18 wants to merge 10 commits into
repro/rp2040-temperature-alarmfrom
fix/rp2040-temperature-alarm-buzzer-trace
Open

imrishabh18 wants to merge 10 commits into
repro/rp2040-temperature-alarmfrom
fix/rp2040-temperature-alarm-buzzer-trace

Conversation

@imrishabh18

@imrishabh18 imrishabh18 commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

The Temperature Alarm buzzer loses its lower-port wire because the pipeline expands the custom-symbol body to include distant terminals, then projects the connected terminals onto the enlarged rectangle. This turns empty space into an obstacle and moves the connection points.

Treat supplied component bounds as authoritative. Remove pin-based expansion and boundsMode; keep every pipeline stage's existing inputProblem: this.inputProblem interface. The pipeline still clones the caller's input and derives body-edge escape points only for interior terminals. External terminal coordinates and directions stay unchanged.

Core supplies drawn body bounds, text boxes, and actual terminal/stem geometry in core #4314. Optional InputPin.stemEnd describes the inner endpoint of a drawn stem. Stems are separate collision obstacles, so detours cannot cross leads and empty space around asymmetric symbols stays routable. The solver never invents a stem from a terminal's distance to the body.

Two assumptions hidden by inflated boxes are also corrected: Z-shape balancing preserves U-shaped terminal approaches, and perpendicular rail labels at external pins get an outward connector.

Stacked on reproduction #1282. Tests cover the actual lower buzzer/drain connection, asymmetric no-connect terminals and rotations, outward trace/rail approaches, and a label detour through an explicitly supplied stem. Removing the stem data makes that last regression fail.

Archived fixture migration: existing pipeline fixtures explicitly record the obstacle/escape geometry previously supplied by implicit normalization; their assertions and snapshots remain unchanged. The raw Temperature Alarm fixture is excluded. See tests/fixtures/README.md.

Validation: 675 tests pass, 4 existing skips; build, typecheck, and isolated Node/browser/TypeScript package consumers pass. The full-project core preview joins both emitted buzzer/drain terminals. Core remains draft pending a published solver version containing this change.

@vercel

vercel Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
schematic-trace-solver Ready Ready Preview Oct 2, 2026 5:09pm UTC

Request Review

…ture-alarm-buzzer-trace

# Conflicts:
#	tests/repros/repro-rp2040-temperature-alarm.test.ts
@imrishabh18 imrishabh18 changed the title Restore buzzer trace through overlapping endpoint bounds Preserve custom-symbol body bounds and external pin geometry Oct 2, 2026
@imrishabh18 imrishabh18 changed the title Preserve custom-symbol body bounds and external pin geometry Respect supplied symbol geometry and preserve external terminals Oct 2, 2026

This branch was successfully deployed

1 active deployment
Preview — 78c3f217 Deployed Oct 2, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant