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

Merged opened this in answer to

Check · Review · Land · Live done — Landed and live in production.

Merged

Closes #738

shipped production is serving it for issue #738 — its issue is already done deploy 749c831

opened this

Closes #738

The description is the first comment.

🤖 Generated with Claude Code

commented

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

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs