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
Gate linting gaps: title-vitrine overlap missed, title-shrink not reprimanded, baked slug vs calm lower band, draggable dialogs lack grip glyph
Four gaps found while posing the adom/definitions hero at the gate today (2026-08-08), mostly about the linter/reprimand system protecting the wrong things. Filing as one issue since they share a fix surface.
1. The layout linter missed a title-vitrine overlap entirely
With layout bleed-bottom, fontSize.title 8, and a real 1116x1234 vitrine screenshot staged, the baked "Definitions" wordmark visibly spilled onto the vitrine card (the final "s" crossed the vitrine's left edge). state.lint stayed [] the whole time. The linter measures pill vs vitrine overlap (and auto-scrims it), but apparently not title vs vitrine. A headline crossing the vitrine edge is at least a warn, arguably a fail.
2. When there IS a collision, the resolution guidance must protect the TITLE, not the vitrine
The title is the most important element of a hero (the app NAME is the headline; that's the whole design system). Today, with no reprimand priority to stop it, the driving AI's first instinct was to shrink fontSize.title from 8 to 6 to clear the collision, which is exactly backwards. The human caught it; the tooling didn't. Proposal:
- Any title-vitrine collision finding should carry explicit guidance: "resize or reposition the VITRINE (layout change, smaller slot); do not shrink the title below its default to resolve overlap."
- Bonus: a reprimand when a pose session reduces fontSize.title below the default while a vitrine collision is (or was) present, so the lazy fix gets called out the way VITRINE_IS_GENERIC calls out mock content.
3. The baked wiki slug (bottom right) contradicts the keep-the-lower-band-calm rule, and duplicates the marquee URL
The studio hard-bakes the full wiki slug into the lower right of the export, while simultaneously teaching (stagebar copy, band scan, full-import reprimands) that the lower third must stay calm because the homepage marquee overlays its own dynamic info there. In the gate's own "With homepage overlay" preview the URL renders TWICE: the marquee's copy (lower left) and the baked slug (lower right). Same duplication family as the doubled title already annotated with adom/wiki#80. Proposals to evaluate:
- Make the baked slug optional or reposition it out of the marquee band, or
- Have the marquee suppress its URL line when the artwork carries a studio-baked slug (the studio knows, provenance stamp), or
- At minimum, have the gate/linter explain the contract explicitly (authored pixels must keep the band calm; the studio's own pill+slug are the sanctioned exceptions) so humans and AIs stop reading it as a violation.
4. Draggable UI needs a drag affordance glyph
Tour dialogs are draggable by their header (great, since they land on top of the artwork, today one sat right on the wordmark), but nothing indicates that visually. The user never knows it's draggable unless told. Every draggable element should carry a standard grip glyph (six-dot / grab-handle) in the draggable region, plus a grab cursor on hover. Applies to the tour dialogs and any other floating panel the studio makes draggable now or later.
Repro context: hero-studio instance :8849, posed adom/definitions via pup on AdomLapper, vitrine from a real page screenshot, hero-studio set used for fontSize/layout changes.