app
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
← Commit history
package.json+1−1@@ -2,7 +2,7 @@ "slug": "hero-studio", "title": "Hero Studio", "type": "app",- "version": "0.18.2",+ "version": "0.18.3", "description": "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. Adom-org pages get the house wordmark and palette automatically; every other owner brings their own accent and background colors, with placement fixed for all. The floating app window is the vitrine: it auto-loads a real screenshot from the package's wiki page (screenshots/, docs/), takes a manual import, or a full-hero import (the human-ratified re-stamp path for existing heroes). The pose gate opens in verification mode: per-item checklist (title, subtitle, vitrine, type match) and a Generate that unlocks only fully confirmed. Includes vitrine bleeds, brand tile themes, gradient angles, pixel-faithful wiki marquee and index-card previews, and a component-hero mode with a photo/raytrace/phong fallback ladder.", "license": "MIT", "tags": [
page.json+1−1@@ -2,7 +2,7 @@ "slug": "hero-studio", "title": "Hero Studio", "type": "app",- "version": "0.18.2",+ "version": "0.18.3", "description": "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. Adom-org pages get the house wordmark and palette automatically; every other owner brings their own accent and background colors, with placement fixed for all. The floating app window is the vitrine: it auto-loads a real screenshot from the package's wiki page (screenshots/, docs/), takes a manual import, or a full-hero import (the human-ratified re-stamp path for existing heroes). The pose gate opens in verification mode: per-item checklist (title, subtitle, vitrine, type match) and a Generate that unlocks only fully confirmed. Includes vitrine bleeds, brand tile themes, gradient angles, pixel-faithful wiki marquee and index-card previews, and a component-hero mode with a photo/raytrace/phong fallback ladder.", "license": "MIT", "tags": [
public/js/wizard.js+18−7@@ -203,23 +203,34 @@ const WIZ_STEPS = [ { id: 'finishing', title: 'Finishing', hint: 'The small marks in the corners.',- summary: () => ['pill', 'logo', 'slug', 'author'].filter(k => state.overlay[k]).join(' + ') || 'clean',+ summary: () => ['pill', 'slug', 'logo'].filter(k => state.overlay[k] && (k !== 'logo' || (state.vitrine && state.vitrine.full))).join(' + ') || 'clean', custom: (host) => { const wrap = document.createElement('div'); wrap.className = 'wiz-finish';+ // Only marks that actually BAKE into this pose get a card: the author+ // line is a homepage overlay (never in the PNG), and the wordmark+ // stamp exists only over full-hero imports. Dead buttons teach+ // distrust (Colby, dogfood round 3). const items = [- ['pill', 'Type pill (top right)'],- ['author', 'Author line'],- ['slug', 'Wiki address (bottom right)'],- ['logo', 'Adom wordmark stamp (full imports)'],+ ['pill', 'Type pill (top right)', 'Bakes into the corner'],+ ['slug', 'Wiki address (bottom right)', 'Bakes into the corner; the homepage also shows a live one'], ];- items.forEach(([k, lab]) => {+ if (state.vitrine && state.vitrine.full && wp().owner === 'adom') {+ items.push(['logo', 'Adom wordmark stamp', 'Bakes the standard mark over your import']);+ }+ items.forEach(([k, lab, subOn]) => { const c = document.createElement('div'); c.className = 'card wide' + (state.overlay[k] ? ' on' : '');- c.innerHTML = '<div class="card-label">' + lab + '</div><div class="card-sub">' + (state.overlay[k] ? 'Shown' : 'Hidden') + '</div>';+ c.innerHTML = '<div class="card-label"></div><div class="card-sub"></div>';+ c.querySelector('.card-label').textContent = lab;+ c.querySelector('.card-sub').textContent = state.overlay[k] ? subOn : 'Hidden'; c.addEventListener('click', () => wizSend({ overlay: { [k]: !state.overlay[k] } })); wrap.appendChild(c); });+ const note = document.createElement('div');+ note.className = 'wiz-legend';+ note.textContent = 'The author line and live stats come from the homepage, not your PNG: flip "Homepage preview" on the Review step to see them.';+ wrap.appendChild(note); host.appendChild(wrap); }, },