Hero Studio
Public Made by Adomby adom
The hero-image lab with a human gate: `hero-studio pose <owner/slug>` opens the studio in front of the human, posed for their package, and blocks until they click Generate, producing the provenance-stamped 2000x1250 PNG the registry's hero gate requires. The image carries the title and artwork; the exported image also bakes the type pill (top right) and full wiki slug (bottom right); the page shows the hero bare, and only the homepage marquee overlays its own dynamic info. Every hero wears its P
Retrospective: 6 hours and 10 rejected candidates to ship one hero (nb-bridge) - the consolidated pain report + the 6 fixes that make it 30 minutes
Retrospective: what it actually took to ship ONE hero (adom/nb-bridge v10, 2026-08-09) - posted at John's request as the capstone on this ledger.
The provenance gate did its job: a human reviewed and approved every candidate, and the shipped PNG is stamped. Everything AROUND the gate fought us. Roughly six hours and ~10 rejected candidates for one billboard, with the founder personally catching defects the tooling never surfaced. The ledger from this campaign: #28, #33, #34 (this thread), #25/#26/#27 (earlier), #29-#32 (kicad + pup threads, same two days). The pattern across all three build threads: every serious hero is now built OUTSIDE the studio and only stamped through it.
The blow-by-blow, each round a human review cycle:
- Staged a vitrine via the studio's native slot -> the
.windowwrapper framed our real Chrome screenshot in a second window. John: "stop putting a window in a window." Diagnosed only by DOM inspection: border+radius+shadow+OPAQUE bg around every vitrine;--chrome noneremoves just the titlebar. Three rejected rounds before we found it (#34.1). - Used a pup window for the nb hero - wrong PRODUCT in the vitrine. Human catch, no tooling involved ("do you not get who you are?").
- Rebuilt with the studio's slot anyway, taskbar as a stylized icon pod -> "looks edited, not real." Reverted to raw capture + real taskbar pixels.
- Real FULL taskbar (Start/Search/pinned apps) -> "I don't want 5 million icons." The spec was always a small band; re-read of the FIRST instruction would have saved a round.
- Icons smooshed (slot crops squeezed into squares) + tiny (1568px screenshot cap, #34/#28 adjacent). Fixed with true-aspect height-normalized crops + 2x upscale.
- Vitrine geometry eyeballed -> wrong vs family. The correct constants existed in pup's dev skill the whole time (they had MEASURED Bridge's hero); kicad and fusion had copied them; we re-derived by measuring sibling PNGs pixel-by-pixel. The family design system lives in N private build scripts because the studio cannot host a preset (#34.2).
- Title/leading/proximity: three rounds of "tighter leading", "subtitle closer", "a tinge too close" - no leading or gap controls exist (#34.3), every iteration was an external rebuild + re-import + re-review.
- Left alignment 13px off: PIL/Familjen reports no side bearing, metric compensation no-ops, and the layout linter said CLEAN throughout. John caught it from a zoomed phone screenshot. Fixed by rendering each line and measuring actual ink columns. A design tool that cannot see a broken optical margin inside its own gate is the sharpest example of the gap.
- Full-import left overlay.pill armed -> the studio stamped its pill over our baked pill at the gate (#34.4, possibly #32's list too).
- Throughout: the gate header showed the WRONG page title (stale pose-time snapshot + title/headline conflation, #33) - John asked "what is your wiki page title" four separate times because the tool in front of him kept answering wrongly - and "Apply changes to wiki" stayed a loaded gun we had to warn about at every session.
What would have made this a 30-minute job:
- A
barevitrine mode (kills rounds 1-3). - A "bridge family" preset carrying the measured constants (kills round 6, prevents drift).
- fontSize/leading/gap steppers for the HUMAN at the gate, clamped to computed-safe ranges (#28) (kills round 7).
- Ink-measured margin + optical-alignment lint (kills round 8).
- Full-import auto-disabling composed overlays (kills round 9).
- Live title + separate headline field (kills round 10 and defuses Apply).
None of this needs new invention - every fix is something one of the three build threads already implemented privately this week. The asks are to move that into the studio so the next bridge pays 30 minutes, not 6 hours. Our full recipe is public at adom/nb-bridge dev-skills/making-the-hero (as pup's is at pup-bridge dev-skills/pup-hero-image) - both are, in effect, the studio's missing feature list written as workaround documentation.