mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-29 07:20:43 +00:00
Screenshots now render through <ProductShot> from @hanzogui/shell 8.0.5 — one frame, so the landing, a category page and a docs callout present a shot identically instead of each inventing a treatment. Art-directed (2400w @2x desktop / 1170w @3x phone via <picture>), intrinsic width/height so the box reserves its ratio before the bytes land, lazy below the fold. Of fourteen captured plates, three ship: chat -> /products/ai chat.hanzo.ai's composer, empty state app-builder -> /products/apps hanzo.app's build composer docs-api -> /products/platform the api.hanzo.ai/v1 reference Eleven are withheld, and the reason is the point. Most captures were Hanzo's own MARKETING pages, not product surfaces. Two were cloud.hanzo.ai's landing page itself — including the one nominated as the landing hero, because the console dashboard sits behind an IAM session that could not be established. A landing page illustrated with a screenshot of that same landing page is not a weak shot, it is a recursive one, so the hero slot stays EMPTY: heroShot resolves only a category:'hero' entry and deliberately has no fallback, since falling back to "the first primary" would drop a category shot onto the front door. The rest are circular in the milder way — hanzo.ai/pricing shown on hanzo.ai/products/payments tells a reader nothing they are not already looking at. The savings calculator is withheld on different grounds: its vendor grid names ~80 third-party products in a replace-this framing, which is competitive-comparison material and not a call to make silently. The rule that survives: the subject must be a real product SURFACE, captured on a host that is not the page presenting it. scripts/optimize-shots.py regenerates lib/data/product-shots.ts and the WebP from the capture manifest, so plates, intrinsic dimensions and the module cannot drift; it refuses to emit any shot the manifest does not mark ship. 1.4MB of PNG -> 0.4MB of WebP. Verified at 1440 and 390: overflow 0, correct plate per viewport, lazy, alt present on every shot. Co-authored-by: Hanzo Dev <[email protected]>
103 KiB
2400x1500px
103 KiB
2400x1500px