Repository navigation
feat(terrarium): author JSCAD solids and a tscircuit coupon - #112
Merged
creatifcoding merged 17 commits intoAug 30, 2026
Merged
creatifcoding merged 17 commits into
creatifcoding merged 17 commits into
Conversation
TypeScript JSCAD now authors the locked 250 x 250 x 500 mm envelope. The calculated animal-clear box stays a keep-out because PARAMS does not lock its Z origin. STL and STEP emit throw. FreeCAD remains emit. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
One tscircuit coupon compiles B27, B50, B44, and B48 through @tscircuit/core to Circuit JSON. Manufacturer part numbers stay blank. KiCad remains emit. Gerber is later. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
Official tscircuit/skill wants tsci search, then TSX, then tsci build. Search did not admit a B27, B50, B44, or B48 series, so MPNs stay blank and those parts stop as UNVERIFIED. The parts engine is off. Circuit JSON is the artifact. Gerber and tsci push stay later. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
tsci check, snapshot, and export wrote Circuit JSON, schematic and PCB SVGs, a 3D PNG, glTF, GLB, and a readable netlist. Check stills are the CLI stdout. No Gerber, KiCad, S08, or invented MPN. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
tsci export writes <source>.circuit.json next to the entry. The committed Circuit JSON is packet/circuit.json. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
npm run generate uses extrusions.project and @jscad/svg-serializer to write front, side, and top SVG. Class generated, not shop-release. PNG/iso left blank after regl-renderer demo-cli missed @jscad/img-utils. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
Local FDM path on Bambu. Printer model UNVERIFIED. Filament and printed solids stay REF. Packet remains DRAFT ahead of shop outreach 2026-08-25. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
PARAMS-named solids only. B01 is a 24 mm REF cube from frame.band with eight envelope-corner instances. B05 and B06 are 3.00 mm acrylic plates on calculated clear W x H. World plate placement stays UNVERIFIED. Envelope bbox unchanged. SVG generate re-run. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
PACKET.md records what this tree actually has: envelope bbox, generate SVGs, B01/B05/B06, and the Bambu DRAFT note. Leftover S00-S11 stay extract. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
The review packet is a catalog entity owned elsewhere. This tree keeps generated SVG, TypeScript solids, tests, README, and VIEWS.md. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
User is mid-fork. Restore the existing note without expanding it. Nothing depends on it. It is not the CAD system. No packets/ folder. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
User pick is final. No packets/ folder and no PACKET.md. Generated SVG, VIEWS.md, TypeScript solids, tests, and README stay. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
Delete packet/. Circuit JSON, readable netlist, glTF/GLB, and check stdout now live under dist/ from tsci build/export/check. Schematic, PCB, and 3D snaps stay in __snapshots__/ from tsci snapshot. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
B19, B27, B44, B48, and B50 are BOM balloons compiled on this coupon. They stay UNVERIFIED. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
Official svg-serializer fills geom2 black. Generate now converts project() outlines to colored path2 so each authored solid writes a stroked front/side/top SVG a person can read. Co-authored-by: digicoder <creatifcoding@users.noreply.github.com>
creatifcoding
marked this pull request as ready for review
August 30, 2026 02:01
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.
Why
This PR authors the terrarium enclosure in JSCAD and the indexed coupon in tscircuit. Both trees are on the branch. The review catalog is a separate entity. Its components bind
generated/and the tscidist//__snapshots__/outputs. This PR is not empty.Official
@jscad/svg-serializerfills geom2 black. The first generate pass only projected the envelope, sofront.svg,side.svg, andtop.svgwere filled 250 x 500 slabs. Generate now convertsproject()outlines to colored path2 and writes a stroked still for every authored solid.Scope
Write-set is both trees:
projects/biomemetics/labs/mantis/terrarium/cad/jscad/**projects/biomemetics/labs/mantis/terrarium/ee/tscircuit/**CAD keeps one 250 x 250 x 500 mm envelope, origin front-left-bottom, X-right Y-back Z-up. Named solids from PARAMS are B01 24 mm REF cubes and B05/B06 202 x 3 x 427 mm plates. Placement of the plates is UNVERIFIED. Cassette seat is
stock + 0.20 mmTARGET, recorded, not a pocket. Nopackets/folder. NoPACKET.md.npm run generatewrites stroked front, side, and top SVG for envelope,B01-corner-block,B05-view-cassette, andB06-front-door. Envelope keepsfront.svg,side.svg, andtop.svg. Every solid also writes{solid}-{view}.svg.generated/VIEWS.mdlists each file. B01 is one unique 24 mm cube. The eight instance origins are recorded inVIEWS.md. Pocket cuts and gasket Z are omitted.EE authors
index.circuit.tsx. Native tsci outputs live underdist/and__snapshots__/.packet/is gone. Nopacket.json. No pointer field. B19, B27, B44, B48, S1, S2, Q1, and P01–P12 are BOM balloons compiled on this coupon. They stay UNVERIFIED. There is no admit-list. B19 pads stay omitted. S1, S2, Q1, and B44 pin2 stayNOT_CONNECTED. MPNs stay blank.Does not write skill files. Does not touch leftover FreeCAD/OCCT, KiCad, S00–S11,
packages/lab-ui, specimendb,assistant/, or procurement. PR 34 and PR 36 stay emit. Leftover S00–S11 stay extract. Merge stays held. No Gerber. No orders. Notsci push.CAD
[0,0,0]→[250,250,500]B01-corner-blockB05-view-cassetteB06-front-doorRecipe is
extrusions.project,geom2.toOutlines, closedpath2.fromPoints,colors.colorize([0, 0, 0, 1], path), thensvgSerializer.serialize({unit: 'mm'}, ...paths). Generate never passes geom2 to serialize. Class generated, not shop-release. In-house print is FDM on Bambu. Printer model is UNVERIFIED.EE
ee/tscircuit/dist/index/circuit.jsontsci build --disable-parts-engineee/tscircuit/dist/readable-netlist.txttsci export -f readable-netlistee/tscircuit/dist/coupon.gltf,coupon.glbtsci export -f gltf/-f glbee/tscircuit/dist/check-*.txttsci checkee/tscircuit/__snapshots__/index.circuit-*.snap.{svg,png}tsci snapshot --update --3dTradeoffs
Official serializer sets root
stroke-width="0.1px". Large plates read as hairlines in a small preview. B01 (24 mm) is easier to see. We did not invent a second SVG writer or copy leftover OCCT stroke-width.Blast radius
Reviewers of the terrarium CAD and EE trees. No existing caller imports these packages. Merge stays held.
Verification
CAD, this revision:
npm run generate,npm test, andnpm run typecheckexited 0 interrarium/cad/jscad. Thirteen tests passed.generated/B05-view-cassette-front.svgiswidth="201.9999mm" height="426.9998mm"withstroke="rgba(0,0,0,1)"and nofill="black".generated/front.svgstays the 250 x 500 envelope outline.EE, prior revision:
tsci build,tsci snapshot --update --3d,tsci export, andtsci checkexited 0.npm run typecheckandnpm testexited 0. Eight tests passed.