AGENTS.md — persistent design context for dcm31/stl-creator
Reference data for AI agents working in this val. Keep hardware dimensions
and hard-won calibration facts here so they survive across sessions.
Printer
Bambu Lab A1 Mini — bed 180 × 180 × 180 mm
Large plates print with ~99.9% slicer downscale (Charlie's habit for
180mm-flat superellipse parts)
Hardware objects
Donut plant light (small horizontal ring light)
Donut OD: 90 mm
Donut ID: 50 mm
Donut height: 15 mm
Support stick: attached at outer edge, runs full height and continues down
(it's the pole that holds the light up)
Radial protrusion beyond OD: ~15 mm, but a wire runs down the BACK of the
stick → design clearance 20 mm radial
Stick width: 10–15 mm (rounded profile) → design slot width ~16 mm
Related design: lampshade that drops over the top (keyed vase-mode shade)
Donut plant light — BIG (second ring light)
Donut OD: 160 mm
Donut ID: ~115 mm (measured 11.5cm-ish)
Donut height: 17-18 mm (design for 18)
Bulge: max 20 mm past OD, max 15 mm wide (looks like same equipment
family as the small one)
Shade: donutShadeXL — 55 mm skirt below the light, 45°-rotated for bed fit
(Ø163 + tab = 181.5 along the tab axis, so the tab must point diagonal)
LED stick lights
Small stick: Ø8.35 socket (ring-test confirmed) — used by ledLightBase*
Big stick: Ø15.5 socket (ring-test round 4) — used by ledLightBase15L*
M5Stack red four-digit clock
Hardware visually confirmed by Charlie: M5Stack Unit DigiClock, SKU U146.
Charlie's measured visible display window: approximately 50 mm wide × almost
20 mm tall. Diffuser tests use 60 × 30 mm coupons, preserving the centered
50 × 20 mm optical area and testing 0.20 / 0.40 / 0.60 mm face thickness.
Optical test protocol: print every coupon visible-face down, evaluate the
build-plate side, and disable ironing. Keep filament, build plate, first-layer
height, nozzle/bed temperatures, flow, speed, and cooling identical between
coupons and final enclosure; STL cannot encode these slicer settings.
Coupon result (2026-09-07): Charlie selected level 2, so the enclosure
defaults to FACE_LAYERS = 2 at 0.20 mm layers, for a 0.40 mm translucent
front membrane. Level 1 (0.20 mm) and level 3 (0.60 mm) remain explicit
alternatives; do not silently change the selected default.
Four mounting holes/tabs; official product photo labels the slots 3 × 4 mm
and a 32 mm horizontal mounting-center relationship.
Official photos show mounting ears projecting beyond the display fascia and
Grove connectors at both short ends. Do not use a plain 50 × 31 mm box as
the fit pocket or assume the published envelope fully covers projections.
Enclosure geometry must keep separate parameters for fascia/body, tab projection
and width, four hole locations, Grove connector bodies, plug insertion clearance,
and cable bend/routing space. These remain provisional until physically measured.
Controller: AtomS3 Lite, SKU C124, official envelope 24 × 24 × 9.5 mm
(official STL measures 24 × 24 × 9.507 mm). USB-C is centered on one edge.
Source: https://docs.m5stack.com/en/core/AtomS3%20Lite
Charlie selected Concept A: a low, squat, elongated ellipsoid / rounded
soap-bar body whose angled display face remains separate from the broad,
horizontal stable base. Do not continue or present the overlapping Concept B.
The reviewed A envelope is approximately 124 × 84 × 48 mm in use. The display
plane remains tunable at 55° and the exported model is automatically reoriented
so the 0.40 mm visible clock face prints flat on the build plate.
The active U146 Grove port is on the left when viewed straight at the display.
The plug insertion, bend pocket, Atom route, and service access must remain
inside the shell; no side opening is allowed. The passive right connector body
must remain internally accessible.
Enclosure exterior finish is slicer-only: Bambu fuzzy skin thickness 0.10 mm
and point distance 0.10 mm, painted only onto exposed curved exterior side
walls. Exclude the translucent membrane/build-plate face, stable flat base,
internal pockets/cradles, Grove connector and cable-bend reliefs, USB-C notch,
service-opening rim, and all mating/retention surfaces. Do not apply this
setting to the diffuser coupon plate.
Concept A is not yet print-ready hardware. The official 50 × 31 × 14 mm U146
body envelope and 24 × 24 × 9.5 mm AtomS3 Lite envelope are represented, but
the U146 ear projection/width/vertical centers, real left Grove plug overmold
and bend envelope, USB-C center/overmold/insertion space, rear closure, display
and Atom retention, assembly order, and local wall thickness around all cuts
still require measurements or decisions. A slicer overhang/support review and
an exported-mesh repair/manifold check are also required before print approval.
Traveler guitar → printed SKÅDIS adapter
Traveler guitar has two nominal Ø6 mm rod/hole locations.
Charlie measured 60 mm maximum outside-edge span across the two holes, not
center-to-center. The current concept therefore infers 54 mm nominal centers;
confirm with calipers before a fit print because both the diameter and span are
approximate.
The SKÅDIS board plane contains the guitar rod axes and is perpendicular to the
guitar's hole-opening plane, so the adapter is a 90° L-shaped transition.
Charlie's 3D-printed SKÅDIS slots run tight. Start with deliberately undersized
test keys (current concept 4.20 × 9.20 mm) on 40 mm pitch rather than assuming
official IKEA fit.
Current direct concept requires two assembly motions: approach normal to the
board far enough to insert the hook caps, then slide about 4 mm in-plane to
lock. Confirm the guitar/body leaves room for both motions and choose the slide
direction before making this print-ready.
Current provisional board thickness is 5.0 mm. Measure the actual printed slot
width/length, board thickness, rod OD, desired board offset, available insertion
clearance, board/amp load, and orientation before final design.
If direct insert-and-slide clearance is blocked, prefer a two-piece design:
standard SKÅDIS hooks on a board-side cleat plus a separate guitar-side
dovetail/rail. That decouples board installation from attachment to the guitar.
Editable concept id: travelerSkadisAdapterConcept; presentation slug:
traveler-skadis-adapter. It is a motion study, not print-ready hardware.
Hole-fit matrix printed 2026-09-12 in the active Bambu A1 Mini PLA Wood
profile: nine 72 × 20 × 1.20 mm coupons, no brim/support, 0.20 mm layers.
Left-edge notch count encodes centers: 1 = 53.5 mm, 2 = 54.0 mm,
3 = 54.5 mm. Right-edge notch count encodes bore diameter: 1 = 6.15 mm,
2 = 6.35 mm, 3 = 6.55 mm. Charlie selected 2 left notches / 3 right
notches, confirming 54.0 mm nominal centers and Ø6.55 mm bores.
Example id: travelerHoleFitTestPlate.
Equal-spacing plates steal the bent rods' spring/friction tension. Keep the
fixed Ø6.55 mm bore and use the outward capsule slot from
travelerReliefSlotTest: 54.0 mm inner-center position with 10.0 mm outward
center travel (54–64 mm relationship).
KOKKO KG-10 cradle clearance matrix result (2026-09-12): only the loosest
99 × 67 mm profile fit at all, and it still required flexing. Treat that as
the minimum measured envelope, not the basket size. The shallow basket study
uses a provisional 101 × 69 mm internal opening for non-press-fit seating.
Its 101 mm direction runs backward and its 69 mm direction runs outboard so
the integrated 159 × 126 mm study fits the A1 Mini bed. Do not revert to the
97.5 × 65.5 or 98 × 66 openings.
The amp holder is a coplanar tray/basket, not an upright side-profile ring:
its full floor shares the rod plate's plane and shallow walls rise normal to
that floor. Direction convention for the integrated model is negative X =
outboard beyond the guitar butt and positive Y = behind the guitar; do
not offset the basket forward. The low placement/fit preview is deliberately
built as one 4 mm carved solid with a 1.20 mm basket floor, 2 mm wall width,
and 2.8 mm of wall above the floor. Its rod plate and basket are connected by
a broad smooth fan, not a narrow diagonal neck or overlapping separate bodies.
Reserve the available 30 mm behind-guitar height for later curved ribs/gussets.
Intended final load version remains approximately 10 mm at the rod plate and
20 mm-high basket walls, after placement and clearance are confirmed.
Presentation views
For TVs, embedded reviews, and visual approval, use the control-free route
/present/<model-slug>; never embed the full STL Creator editor.
Presentation views must reuse the registered example's generatorBody, fill
the viewport, auto-fit the whole part after resize, and leave the editable
root editor route unchanged.
Add a model to PRESENTATION_MODELS in main.ts with its title, note,
generator body, and optional in-use pose correction. Supported query options
are pose=in-use|print, labels=0|1, background=RRGGBB, and
accent=RRGGBB. The legacy /preview/<model-slug> route is an alias.
For the DigiClock enclosure, use
/present/digiclock-enclosure-a?pose=in-use for the selected Concept A;
print pose is only for fabrication inspection.
Bottles / sleeves (foot diameters that matter for base clearances)
0.5L mini sleeve foot: Ø84 (waterSleeveMiniV2Bottom)