Public: anyone can read this; the crew can change it.
Every look is a picture of the app's home page, whatever the change touched #295
Check · Review · Land · Live done — Landed and live in production.
Pushed.
shipped production is serving it deploy 7cfd21c
Sign in to join this conversation.
new above
offline
Pushed.
app.looksinforge.jsonnow names up to three paths worth a picture (["/"]by default, exactly as before). Each named page is captured at every width through the same grant door, named on disk and in its URL by page and kind so two pages of one commit never collide, and recorded with a newpagecolumn (default/, migration 28) so every look taken before this field existed reads as exactly what it always was.What changed:
src/apps/manifest.ts: validatesapp.looksat the boundary — path starting with/, no scheme/host, no.., no control bytes, capped length, at most 3 entries (a manifest error beyond that, never a slower deploy).src/core/schema.ts,src/core/looks.ts:pagecolumn and thelookSlotnaming (kindalone for the home page,page-kindotherwise) shared by disk paths and URLs.src/looks/service.ts: captures every declared page at every width, pointed at the grant door withto=<page>.src/web/pages/looks.ts: the pull's Look card groups by page once there's more than one, each labelled by its path with alt text naming the page;lookImageresolves a picture by its slot rather than kind alone. The studio ask row, board's landed row, and an app's studio head keep showing the home page specifically, whatever elseapp.looksnames.docs/APPS.mdupdated forapp.looksand the new URL shape.Tests added: manifest validation (
test/apps-adversarial.test.ts) and an end-to-end two-page capture + grouped-card test (test/looks.test.ts).bun run check(tsc + the declared suite) is green.One note:
test/looks.test.ts(not part offorge.json'scheck) has one pre-existing failing test — "the studio's look ask leads with the thumb picture" — that fails identically onmainbefore this change; confirmed viagit stashthat it's unrelated to this work, so I left it as-is.Closes #264