Closed feature request

Design-rules umbrella: bare vitrine mode, family presets, leading/proximity controls, full-import overlay clash, enum vs --type, dead pup surface

John Lauer · 2mo ago ·closed by Colby Knox

Umbrella: the studio fights professional graphic-design practice, so every serious hero (pup, kicad, fusion, now nb) ends up built OUTSIDE it and only stamped through full-import. Collected from a full day posing adom/nb-bridge (2026-08-09), with John reviewing at the gate. Companions: #25 (protect the title), #27 (bridge pill type), #28 (sizing headroom + human +/- controls), #33 (title vs headline).

1. The .window wrapper makes real-window screenshots impossible to show honestly. Every vitrine is wrapped in a .window div with its own border (0.67px rgba(255,255,255,.09)), radius 9px, drop shadow, teal glow, and an OPAQUE rgb(13,17,23) background (transparency killed). A screenshot that already IS a real browser window gets framed again - a window in a window. John rejected that three times before we diagnosed the wrapper. --chrome none sounds like the fix but only removes the fake TITLEBAR. Need: a true bare vitrine mode (no frame, no bg, no shadow, alpha preserved). This single gap is why pup's dev skill says "in full-hero mode the studio contributes nothing but the provenance stamp".

2. The family design system lives in N private build scripts instead of the studio. pup measured Bridge's hero and hardcoded the constants (title 12cqw, pill Familjen 700 26px pad 22x12 inset 52px, vitrine y=140 w=1062 h=1050 right-edge=pill-right-edge, 68px taskbar band); kicad and fusion match; nb re-derived them today by MEASURING SIBLING PNGs pixel by pixel. The studio should ship this as a "bridge family" template/preset so the next bridge gets the family look by picking a preset, not by archaeology.

3. Typography controls ignore basic rules.

  • No leading control: a two-line title renders at loose default line-height; John had to ask for "tighter leading so the two lines read as one message" and it required an external rebuild. Title line-height should be a slider (0.9-1.1em) next to fontSize.
  • No proximity grouping: the subtitle's default gap from the title violates the law of proximity (title and value prop are one message); pup's spec uses a tight fixed offset. Gap should be a control with a sane default, not an accident of layout.
  • fontSize.title default (8) undersets the headline in bleed-bottom (John: "maximize the title, it's the billboard") - #28's fit proposal covers the computed max, but the DEFAULT should be the computed max, not a small safe constant.

4. Full-import mode leaves composed overlays armed. With --full, overlay.pill stayed true and the studio stamped its pill ON TOP of the imported image's baked pill (double pill at the gate). Full-import should auto-disable composed overlays (pill/slug/author) or at minimum warn that both will bake.

5. mode enum vs --type free text disagree. state.enums.mode = [app, component], yet pose --type bridge works and renders a BRIDGE pill. So the validated surface rejects what the CLI accepts (#27 asks for bridge properly; this is the API inconsistency around it).

6. pose --surface pup still calls the retired browser_* verbs (renamed pup_* 2026-08-08, no aliases), so the advertised surface always fails and every session hand-opens the gate window. May belong with #26's session-lifecycle items but it is a one-line fix in the pose runner.

Net effect today: ~6 hours of iteration for one hero, most of it re-deriving or working around things the studio could encode once. The studio's provenance gate is exactly right - the design engine around it is what needs to grow up.

2 Replies

John Lauer · 2mo ago

Cross-refs after seeing the fresh queue: item 6 here (pose --surface pup calling dead browser_* verbs) is already filed in detail as #31, defer to it. Item 4 (full-import leaves overlay.pill armed, double pill) may overlap #32's papercut list - if #32 already carries it, fold mine into that one. Items 1-3 and 5 stand alone. The through-line across #25/#28/#29/#32/#33/#34 from three different build threads in two days: every serious hero is now built outside the studio and only stamped through it. That is the signal worth acting on.

Colby Knox · 2mo ago

All four umbrella items shipped in 0.16.0/0.16.1:

  1. Bare vitrine mode: vitrine.chrome now accepts "bare" (no titlebar, no frame, no background, no shadow, alpha preserved). "Stop putting a window in a window" is one token: hero-studio vitrine --file shot.png --chrome bare.
  2. Family preset: hero-studio preset bridge-family applies the measured family system in one call (showcase layout, 12cqw Familjen title, image-only title mode, overlays off except the pill, bare chrome, guides off). preset with no name lists what exists; adding more families is a PRESETS map entry, so send me constants and they become one-liners.
  3. Leading/proximity controls: fontSize.leading and fontSize.gap, as clamped gate sliders for the human and set dot-paths for the agent (details on #28).
  4. Full-import overlay auto-off plus amber fencing of any sim re-enabled over an import (details on #32).

Composed-mode verification of the preset: posed it with a live headline and composed headlessly; the export shows the bare right-side vitrine, family type at 12cqw, pill only, no slug band.

Log in to reply.