···11+# 0016. Per-article cover image picker
22+33+**Status:** Accepted
44+**Date:** 2026-06-10
55+66+## Context
77+88+Until now the Bluesky card thumb was auto-derived from the first usable content
99+image (`firstImageBlobRef`, Decision 0014), and articles had no explicit cover.
1010+The standard `site.standard.document` lexicon already defines an optional
1111+`coverImage` blob field (`image/*`, ≤1MB) that was never populated (deferred in
1212+Decisions 0006 and 0014).
1313+1414+## Decision
1515+1616+Add a per-article cover image picker as a strip BELOW the block editor (outside
1717+the editor canvas). It reuses the existing `mediaUpload` + blob-registry path
1818+(no second isolated-block-editor instance) and writes the chosen blob to
1919+`site.standard.document.coverImage`.
2020+2121+Thumb resolution becomes: explicit `coverImage` → `firstImageBlobRef(blocks)` →
2222+omit. The auto-pick is now the fallback, so nothing regresses for articles
2323+without an explicit cover.
2424+2525+The 1MB cap (equal to `BSKY_THUMB_MAX_BYTES` and the lexicon `maxSize`) is
2626+surfaced in the picker UI as helper text and as the oversize rejection message.
2727+2828+## Consequences
2929+3030+- Covers persist on the document, survive edits (re-previewed via `getBlob`), and
3131+ become available to future reading-page/OG/RSS surfaces (still unwired —
3232+ separate follow-up; see the 2026-06-09 OG design which deferred this field).
3333+- This partially supersedes Decision 0014: the first-image pick is retained only
3434+ as the fallback when no explicit cover is set.
3535+- Consuming `coverImage` on the reading page / OG tags remains out of scope.