fix(review): #88 thickness band derived; #90 MultiSelect names + commit #97

Merged
grokbot_ty merged 1 commits from work/ux-bugs-fixes into main 2026-09-21 17:01:50 +00:00
Owner

Fixes #88 and #90 on the Review screen. #75 already fixed on main; #55 code ready for live visual verification.

#88 — Thickness band is not an owner control

  • New thicknessBand.ts with deriveThicknessTermId (rounds thickness_in up into synced Woo band, TV-9/QUALITY-95) + 6 unit tests
  • Review.svelte: select replaced with read-only div; thicknessId derived reactively from slab.thickness_in
  • Docs updated: UAT-PRACTICE.md step 5, contracts/UX.md required set

#90 — MultiSelect selection display + commit-on-toggle

  • Closed state shows selected names (truncated to 2 + N) instead of just a count
  • onCommit prop: multi-select changes persist and re-review immediately (250ms debounce, flush on Done, cleanup on destroy)
  • Single-selects bind string vars (speciesSel/edgeSel/gradeSel) fixing number/string mismatch
  • tick()-deferred syncSelects() keeps DOM option in sync after programmatic writes

Verification

  • 98/98 unit tests, 7/7 e2e tests, tsc clean

Not in this PR

  • #75 already fixed on main (commit e51753b)
  • #55 code already on main; needs live visual verification to close
Fixes #88 and #90 on the Review screen. #75 already fixed on main; #55 code ready for live visual verification. ### #88 — Thickness band is not an owner control - New thicknessBand.ts with deriveThicknessTermId (rounds thickness_in up into synced Woo band, TV-9/QUALITY-95) + 6 unit tests - Review.svelte: select replaced with read-only div; thicknessId derived reactively from slab.thickness_in - Docs updated: UAT-PRACTICE.md step 5, contracts/UX.md required set ### #90 — MultiSelect selection display + commit-on-toggle - Closed state shows selected names (truncated to 2 + N) instead of just a count - onCommit prop: multi-select changes persist and re-review immediately (250ms debounce, flush on Done, cleanup on destroy) - Single-selects bind string vars (speciesSel/edgeSel/gradeSel) fixing number/string mismatch - tick()-deferred syncSelects() keeps DOM option in sync after programmatic writes ## Verification - 98/98 unit tests, 7/7 e2e tests, tsc clean ## Not in this PR - #75 already fixed on main (commit e51753b) - #55 code already on main; needs live visual verification to close
grokbot_ty added 1 commit 2026-09-21 17:01:23 +00:00
#88 — thickness band is now display-only, derived deterministically from
thickness_in against the synced Woo thickness terms (TV-9 / QUALITY-95).
Replaces the <select> with a read-only div. New pure function
deriveThicknessTermId + 6 unit tests. Docs (UAT-PRACTICE, contracts/UX)
updated to reflect the band is not an owner control.

#90 — MultiSelect closed state now shows the selected option names
(truncated to 2 + +N) instead of just a count. onCommit prop wired so
multi-select changes persist + re-review immediately (250ms debounce,
flush on Done, cleanup on destroy). Single-select binds use string vars
(speciesSel/edgeSel/gradeSel) to fix the number/string mismatch with
<option value={id}>; a tick()-deferred syncSelects() keeps the DOM
option in sync after programmatic writes (AI prefill, reload hydrate)
that Svelte's own select_option would otherwise reset.
grokbot_ty merged commit e61303e2d8 into main 2026-09-21 17:01:50 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Ty_Tech/SlabUploader#97