← Commit history

Publish 0.20.2

Colby Knox ·8e310ef7ae ·2mo ago ·parent 90779e4
3 files changed +14−3
package.json+1−1
@@ -2,7 +2,7 @@   "slug": "hero-studio",   "title": "Hero Studio",   "type": "app",-  "version": "0.20.1",+  "version": "0.20.2",   "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 showcase: 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, showcase, type match) and a Generate that unlocks only fully confirmed. Includes showcase 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.20.1",+  "version": "0.20.2",   "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 showcase: 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, showcase, type match) and a Generate that unlocks only fully confirmed. Includes showcase 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/app.js+12−1
@@ -240,7 +240,12 @@ function render() {       simg.removeAttribute('src');     }   }-  $('fullimport-img').src = (vit.full && vit.src) || '';+  // Never set src='' (Chrome fires onerror on it and every page-health scan+  // counts it as a broken image; this is the exact mechanism behind the+  // wiki#125 "broken_images_6" false alarm). Remove the attribute instead.+  const fimg = $('fullimport-img');+  const fwant = (vit.full && vit.src) || '';+  if (fimg.getAttribute('src') !== fwant) { if (fwant) fimg.src = fwant; else fimg.removeAttribute('src'); }   $('showcase-full').checked = !!vit.full;    // Adom branding only on adom-owned pages; everyone else: no mark, own palette.@@ -421,6 +426,12 @@ function cloneHero(imageOnly) {   c.classList.add('preview');   c.classList.remove('guides');   if (imageOnly) { const l = c.querySelector('.lower'); if (l) l.remove(); }+  // The live hero keeps its (hidden) showcase/fullimport <img> slots because+  // the CSS toggles them by class. A CLONE is a display copy rebuilt every+  // render, so an img with no src is pure dead weight there and reads as a+  // "broken image" to any DOM-health scan (pup's page check counted these,+  // wiki#125). Drop them from clones.+  c.querySelectorAll('img').forEach(im => { if (!im.getAttribute('src')) im.remove(); });   return c; }