Bug: Review UI wrong controls and does not reflect selections made #90

Closed
opened 2026-09-21 06:13:40 +00:00 by Ty · 0 comments
Owner

Summary

Review screen control choices are wrong for several fields, and the UI does not properly show what the owner has selected (especially multi-selects and after Call 1 prefill). Needs a control/wireframe pass before further polish.

Observed (HEAD main @ 41401a7) — evidence from code

Selections not reflected

  1. MultiSelect closed state (MultiSelect.svelte): button shows only placeholder + "N selected" — never the selected names. Owner cannot see wood categories / figure / tags without reopening the panel.
  2. MultiSelect does not commit on toggle: parent wires onToggle only; component dispatch('commit') on Done is never handled in Review.svelte, so multi-select changes may not persist/re-review until some other field fires commitReview.
  3. Native <select> + numeric ids: speciesId / edgeTypeId / etc. are number | '' while <option value={o.id}> stringifies. Classic bind mismatch → wrong or blank selected option display after AI prefill or reload.
  4. AI recommendation marking incomplete: species options can show (AI) only if o.ai is set; after runInference, AI flags are tracked in aiRecommendations but option lists are not consistently re-derived with ai: true for all AI fields.

Wrong control choices

Field Current Problem
Species Native <select> Long synced leaf list; no search; poor on phone
Wood categories MultiSelect (good paradigm) Closed state hides names; no primary marker
Edge / Grade / Moisture Native <select> OK if short; still height/bind issues; inconsistent with searchable paradigm
Figure, fig-, feat- MultiSelect Same closed-state / commit gaps
Thickness band Editable <select> Should not be owner-picked — deterministic from thickness_in (#88)
Primary wood category No dedicated control REVIEW-15 requires owner-declared primary; only implicit first id
Title / short desc Free text before lock Should follow Call 1 → human lock (#89)

Spec anchors

  • UX.md Review: AI badge, required set, primary category, inline nudges
  • METADATA-10/15/45, REVIEW-15/20/40
  • Standing UI paradigms: collapsible searchable checklist (not chip clouds); "AI assist" label; uniform control height; selected state must be readable when closed

Expected (product + wireframe)

  1. Every multi-value field closed summary shows what is selected (names), not only a count.
  2. Single-value long lists use searchable single-select (same family as MultiSelect), not opaque native selects when list length warrants it.
  3. Selected value always matches stored/local model after Call 1, human edit, and reload (no string/number bind glitch).
  4. Multi-select Done/toggle path persists and re-runs review; UI updates from server/local consistently.
  5. Primary wood category is an explicit choice among selected wood cats.
  6. Thickness band not an editable picker (#88); moisture default visible.
  7. Control chrome: squared ~2–4px radius, uniform single-line height, "AI assist" + row AI bubbles.

Acceptance

  • Gitea issue logged (this issue).
  • Wireframe review delivered with improved control map (separate artifact URL).
  • Implementation later: closed summaries show names; bind/display correct after AI + human edit; multi-select commits; primary category control; no thickness-band picker.
  • Live UAT: pick values → closed controls show them; reload still shows them.

Related

  • #88 thickness band out of Review UI
  • #89 Call 1 → human lock → then title/short desc

Type

bug · M3 Review UI · controls / selection reflection

## Summary Review screen control choices are wrong for several fields, and the UI does not properly show what the owner has selected (especially multi-selects and after Call 1 prefill). Needs a control/wireframe pass before further polish. ## Observed (HEAD `main` @ 41401a7) — evidence from code ### Selections not reflected 1. **MultiSelect closed state** (`MultiSelect.svelte`): button shows only `placeholder` + `"N selected"` — **never the selected names**. Owner cannot see wood categories / figure / tags without reopening the panel. 2. **MultiSelect does not commit on toggle**: parent wires `onToggle` only; component `dispatch('commit')` on Done is **never handled** in `Review.svelte`, so multi-select changes may not persist/re-review until some other field fires `commitReview`. 3. **Native `<select>` + numeric ids**: `speciesId` / `edgeTypeId` / etc. are `number | ''` while `<option value={o.id}>` stringifies. Classic bind mismatch → wrong or blank selected option display after AI prefill or reload. 4. **AI recommendation marking incomplete**: species options can show `(AI)` only if `o.ai` is set; after `runInference`, AI flags are tracked in `aiRecommendations` but option lists are not consistently re-derived with `ai: true` for all AI fields. ### Wrong control choices | Field | Current | Problem | |---|---|---| | Species | Native `<select>` | Long synced leaf list; no search; poor on phone | | Wood categories | MultiSelect (good paradigm) | Closed state hides names; no primary marker | | Edge / Grade / Moisture | Native `<select>` | OK if short; still height/bind issues; inconsistent with searchable paradigm | | Figure, fig-*, feat-* | MultiSelect | Same closed-state / commit gaps | | Thickness band | Editable `<select>` | Should not be owner-picked — deterministic from `thickness_in` (#88) | | Primary wood category | No dedicated control | REVIEW-15 requires owner-declared primary; only implicit first id | | Title / short desc | Free text before lock | Should follow Call 1 → human lock (#89) | ## Spec anchors - UX.md Review: AI badge, required set, primary category, inline nudges - METADATA-10/15/45, REVIEW-15/20/40 - Standing UI paradigms: collapsible searchable checklist (not chip clouds); "AI assist" label; uniform control height; selected state must be readable when closed ## Expected (product + wireframe) 1. Every multi-value field closed summary shows **what** is selected (names), not only a count. 2. Single-value long lists use searchable single-select (same family as MultiSelect), not opaque native selects when list length warrants it. 3. Selected value always matches stored/local model after Call 1, human edit, and reload (no string/number bind glitch). 4. Multi-select Done/toggle path persists and re-runs review; UI updates from server/local consistently. 5. Primary wood category is an explicit choice among selected wood cats. 6. Thickness band not an editable picker (#88); moisture default visible. 7. Control chrome: squared ~2–4px radius, uniform single-line height, "AI assist" + row AI bubbles. ## Acceptance - [ ] Gitea issue logged (this issue). - [ ] Wireframe review delivered with improved control map (separate artifact URL). - [ ] Implementation later: closed summaries show names; bind/display correct after AI + human edit; multi-select commits; primary category control; no thickness-band picker. - [ ] Live UAT: pick values → closed controls show them; reload still shows them. ## Related - #88 thickness band out of Review UI - #89 Call 1 → human lock → then title/short desc ## Type bug · M3 Review UI · controls / selection reflection
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Ty_Tech/SlabUploader#90