feat(ipc): render the finished board - #1310
Conversation
`pcb ipc render --side top|bottom` draws a board, board array or fab panel as it looks from outside: outer copper under a translucent mask, the surface finish in the mask's openings, the legend clipped to the mask, holes, slots and routed material cut through, and V-score grooves. Everything beneath the outer copper and every non-physical layer is left out, and the bottom is mirrored as the board looks turned over. The view is ordinary artwork over one shared document, so the existing SVG, PNG and terminal backends draw it. Mask, legend and finish colours come from the stackup; the rest of the palette is neutral greys, so traces read by brightness under a mask of any colour.
There was a problem hiding this comment.
Stale comment
Left a non-blocking comment; reviewers were not assigned. This is a functional user-facing IPC render feature rather than a small fixup, so it still needs human review. Cursor Security Agent passed with no security findings; Bugbot was not running on this PR.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Everything that is not board is now one more cut, shared by every layer: artwork hanging over the profile or crossing a profile cutout no longer shows, and the view frames the board rather than whatever reaches past it. With cuts that clear on any layer, the stack is always the same six layers and takes no branches for a side without a legend, scores or a mask. Each side's mask and legend ink comes from its own stackup layer. The stackup summary selects its first inks from the same lookup.
There was a problem hiding this comment.
Stale comment
Left a non-blocking comment; reviewers were not assigned. This is a functional user-facing IPC render feature rather than a small fixup, so it still needs human review. Cursor Bugbot and Cursor Security Agent were not running on this head after the first poll.
Sent by Cursor Approval Agent: Pull Request Router and Approver
`pcb ipc render` with neither `--layer` nor `--side` draws the top and the bottom side by side. Every side is the same stack under its own placement, the bottom turned over in the geometry itself, so the mirrored render option is gone and one, the other or both sides are one path. A side without a mask layer is bare rather than masked all over; a mask layer that opens nothing still masks the whole side.
There was a problem hiding this comment.
Stale comment
Left a non-blocking comment; reviewers were not assigned. This is a functional user-facing IPC render feature rather than a small fixup, so it still needs human review. Cursor Bugbot and Cursor Security Agent were not running on this head after the first poll.
Sent by Cursor Approval Agent: Pull Request Router and Approver
An inline image was capped at 1200 px however large or dense the window, about a third of a Retina terminal's width. It now fits the window's own pixels, as the terminal reports them: its full width and two thirds of its height at most.
There was a problem hiding this comment.
Stale comment
Left a non-blocking comment; reviewers were not assigned. This is a functional user-facing IPC render feature rather than a small fixup, so it still needs human review. Cursor Bugbot and Cursor Security Agent were not running on this head after the first poll.
Sent by Cursor Approval Agent: Pull Request Router and Approver
A drill span that names one end reached both surfaces. The end it leaves out is now the top's, then the bottom's, as the importer reads a slot's, so a hole opens only onto the sides its span ends at. A render fitted within a box could land a rounding error past the edge that binds and come out a pixel over; it is clamped to the box.
There was a problem hiding this comment.
Left a non-blocking comment; reviewers were not assigned. This is a functional user-facing IPC render feature rather than a small fixup, so it still needs human review. Cursor Bugbot and Cursor Security Agent were not running on this head after the first poll.
Sent by Cursor Approval Agent: Pull Request Router and Approver


pcb ipc rendernow draws a realistic view of a board, board array or fab panel — top and bottom side by side, or one with--side: outer copper under a translucent mask, the finish in its openings, the legend, and holes and routed material cut through. Colours come from each side's stackup inks, and SVG, PNG and terminal output all work.