Public: anyone can read this; the crew can change it.
Readers of a public pull see its Look card again: a public app's previews are taken as nobody #845
Check · Review · Land · Live done — Landed and live in production.
Closes #738
shipped production is serving it for issue #738 — its issue is already done deploy 749c831
Closes #738 (P2 Explorer, umbrella #588). Follows #727.
What changes. For a public repository whose app is public, all three of a picture set (phone, desktop, thumb) are taken as nobody: the browser goes in with a grant that names no one. Those pictures are what the app shows the world, so a reader of a public pull sees its Look card again, as they did before #727. There is one capture set, no extra browser runs; this extends the thumb rule.
What does not change.
- Private apps, and private repositories, keep phone and desktop taken as the owner (an admin), for writers only.
- A private app's pictures go only to people who may open it (#752).
Recording it. Each look now records taken_as (owner | nobody) in migration 58, appended last; the lead places it at merge. The default is owner, which is true of every picture taken before this. mayFetchLook gives a reader phone and desktop only when they were taken as nobody and the app is open to them. Existing owner-taken files stay writers-only until a new deploy retakes them, and the thumb keeps its own rule (keepLook).
The Look card. A writer sees every picture, as before. A reader sees only phone and desktop pictures taken as nobody, and gets no card when there are none.
Tests. test/looks.test.ts has a new test. On a public repository with a public app, a pull's preview:
- is pictured with all three taken as nobody, and the phone capture's grant names nobody;
- serves phone and desktop to a stranger and a reader (200);
- shows the reader the Look card.
Flipping those rows to taken_as = 'owner' turns the reader away (404, no card) while the writer still gets them. The #727 test (a public repository with a private app) still holds.
Local runs: looks, reserved-names, studio, shards, check-list, hollow, board, front, private-app and app-members give 322 pass. tsc is clean.
🤖 Generated with Claude Code
Closes #738
The description is the first comment.
🤖 Generated with Claude Code