diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index 63cd5d6..1ea58f4 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -105,16 +105,22 @@ content_source: 'manual', client_rev: 0, }); - const pngItems = capture.lineup.filter( - (it) => it.kind === 'png' && it.role !== 'overlay', - ); + // #90 / REVIEW-5: persist the full lineup with correct roles so the Review + // strip matches in-memory blobs by role. The overlay is the dimension-drawn + // copy — it must be persisted (its blob already has the dimensions) and is + // the photo the owner sees with the measurement overlay. Excluding it (the + // old `role !== 'overlay'` filter) dropped the dimension copy from Review. + const pngItems = capture.lineup.filter((it) => it.kind === 'png'); for (let i = 0; i < pngItems.length; i++) { const it = pngItems[i]; await uploadPhoto(id, { photoId: uuid(), seq: i + 1, isCalibration: it.role === 'calibration', + role: it.role, original: it.blob, + // The calibration/batch PNGs have no separate processed variant; the + // overlay blob already carries the drawn dimensions. processed: it.blob, }); }