tscircuit / tscircuit/core

No way to define paste-only apertures (windowpane) over a continuous pad; <solderpaste> is typed but has no renderer

Open
#3,577 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
58
Forks
203
Avg merge
7h 39m
Merged PRs (30d)
286

Description

Requirement

I need to print a deliberate solder bump on a large continuous copper pad (a circular pressure-contact pad, roughly Ø20 mm) via the assembly house's paste stencil. The standard way to express this in a PCB design is a windowpane / segmented paste pattern: multiple small paste apertures over one uninterrupted copper region, so the stencil is generated with webbing and the paste doesn't ball up.

As far as I can tell, current tscircuit cannot express any paste geometry that is independent of a pad's own copper shape:

  1. solderPasteMargin on a pad only produces a single paste region that is a margin-scaled copy of that same pad's shape — it cannot segment.
  2. @tscircuit/props exports types for a standalone <solderpaste> primitive, but the installed @tscircuit/core (0.0.1759, via tscircuit CLI ~0.0.2422) appears to have no renderer/registration for it — placing it emits no paste geometry in circuit JSON.
  3. The workaround of building the pad as a grid of small <smtpad>s (each with its own paste) is not acceptable here, because it fragments the real copper — this pad must remain one continuous conductor (it is a mechanical/electrical contact surface).

Ask

Either of these would solve it:

  • Implement the renderer for the already-typed <solderpaste> primitive (paste-only aperture at arbitrary position/shape/layer), or
  • Add per-pad support for an explicit paste aperture list (shapes/offsets relative to the pad) so a single pad can carry a segmented paste pattern.

For KiCad interchange, these should land on the appropriate paste layer (F.Paste/B.Paste) — KiCad models the same concept as "aperture pads" (paste/mask only, no copper).

Note on screenshots

Sorry — I can't attach screenshots or the actual design files; the board this came up on is under NDA. The description above is self-contained, and I'm happy to answer questions or test a fix against a minimal repro (<smtpad shape="circle" ... solderPasteMargin> vs a <solderpaste> sibling).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing registration and rendering for the typed primitive in @tscircuit/core, comparing it with the existing and solderPasteMargin behavior. Use the minimal repro described in the issue and circuit JSON to verify that segmented geometry appears on F.Paste or B.Paste while the underlying copper remains one continuous pad.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.