From 67aa3d6b0d3e73ec7f26adc7593df1faaa797ee3 Mon Sep 17 00:00:00 2001 From: Ty Date: Mon, 21 Sep 2026 12:17:24 -0700 Subject: [PATCH] =?UTF-8?q?fix(review):=20black=20screen=20on=20Capture?= =?UTF-8?q?=E2=86=92Review=20=E2=80=94=20speciesId/gradeId=20refs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The merge auto-kept the branch's canCreateTitle reactive (speciesId) which is undeclared in the merged file (main's canonical var is speciesSel) → ReferenceError on Review mount → black screen. Also dropped the branch's duplicate gradeId (main uses gradeSel) and repointed hydrate/patch to gradeSel. Live UAT verified: Review now mounts and renders 'Review to Ready' with photo strip + Create buttons. --- deploy/INVENTORY.md | 20 ++++++++++++++++++++ frontend/src/create/review/Review.svelte | 7 +++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/deploy/INVENTORY.md b/deploy/INVENTORY.md index 2f60de3..bb54590 100644 --- a/deploy/INVENTORY.md +++ b/deploy/INVENTORY.md @@ -77,3 +77,23 @@ Do not put a host name in the product spec. - Not exercised live: the full browser Create-button click (verified via in-repo Playwright 6/6 m3-create + review-photo-strip; the endpoint + PUT path are proven live above). Woo publish path not exercised this round. + +### 2026-09-21 12:10 PDT — redeploy: `main` after merge `8ee3da9` (reconciled PR #97 + branch) + +- Source: `main` @ `8ee3da9` (merge of `work/merge-89-90` into main, which itself reconciled + main's PR #97 client-side `thicknessBand.ts` + `syncSelects`/`box-sizing` against the branch's + server-side `thickness_band.py` + Create-string #89). `matches HEAD`: **yes**. +- Resolution outcome in the deployed bundle: band is **server-side** — `Review.svelte` no longer + imports `thicknessBand` and the read-only band display is gone; PR #97's `syncSelects()` (3× in + source) + `box-sizing` CSS preserved; `metadata_locked` still dropped; Create-string + photo + strip + wood primary live. +- Rebuilt both images from `main`; recreated the stack (`down --remove-orphans` + `up -d`, no `-v`). + LAN binds 10881/10882 intact. +- Bundle: `assets/index-BScrgd8o.js` (new; differs from pre-merge `YPAqx609`; contains + `create-title`, **zero** `thicknessBand` references). API `/api/health` `woo_reachable:true`. +- Sample data preserved: **yes** — 35 slabs (one added upstream since last deploy). +- Live verification (LAN URL, real DB): `POST /review` on slab `ec4088da…` → + `title:'Curl Black Walnut Slab'`, `ready:True`. +- Gates at merge time: backend 117/117, unit 88/88, tsc clean, e2e 6/6 (m3-create + photo-strip). +- Branches `work/merge-89-90` and `issue-89-metadata-lock` deleted (local + remote); remote has + only `main`. diff --git a/frontend/src/create/review/Review.svelte b/frontend/src/create/review/Review.svelte index d59fa3a..56c71c0 100644 --- a/frontend/src/create/review/Review.svelte +++ b/frontend/src/create/review/Review.svelte @@ -99,7 +99,6 @@ let gradeSel: string = ''; let woodCatIds: number[] = []; let figureIds: number[] = []; - let gradeId: number | '' = ''; let moistureId: number | '' = ''; let figTagIds: number[] = []; let featTagIds: number[] = []; @@ -128,7 +127,7 @@ let createBusy = false; let createError = ''; $: canCreateTitle = - speciesId !== '' && woodCatIds.length > 0; + speciesSel !== '' && woodCatIds.length > 0; $: canCreateDesc = canGenerateContent && title.trim() !== '' && shortDescription.trim() !== ''; // Monotonic token: each commit captures the current value and ignores its @@ -320,7 +319,7 @@ woodCatIds = [...(s.wood_category_ids ?? [])]; edgeSel = s.edge_type_term_id != null ? String(s.edge_type_term_id) : ''; figureIds = [...(s.figure_term_ids ?? [])]; - gradeId = s.grade_term_id ?? ''; + gradeSel = s.grade_term_id != null ? String(s.grade_term_id) : ''; moistureId = s.moisture_term_id ?? ''; figTagIds = [...(s.fig_tag_ids ?? [])]; featTagIds = [...(s.feat_tag_ids ?? [])]; @@ -393,7 +392,7 @@ wood_category_ids: woodCatIds, edge_type_term_id: edgeSel === '' ? null : Number(edgeSel), figure_term_ids: figureIds, - grade_term_id: gradeId === '' ? null : Number(gradeId), + grade_term_id: gradeSel === '' ? null : Number(gradeSel), moisture_term_id: moistureId === '' ? null : Number(moistureId), fig_tag_ids: figTagIds, feat_tag_ids: featTagIds,