FABRIC TYPE / STABILIZER / HOOP SIZE combobox ignores option-click — selection never updates #61

Closed
opened 2026-09-10 02:55:18 +00:00 by Mark · 0 comments
Owner

Summary

The native-style <select> comboboxes in the Design Settings panel render all options in the MCP accessibility tree (e.g., Heavy Weight Cotton ref e32), but clicking any option via act click ref=e32, act kind=select ref=e32, or a PointerEvent sequence (pointerdown → pointerup → click) only closes the dropdown without flipping the React state. The next snapshot re-shows the original option as [selected].

Reproduction

  1. Upload an image to unlock the Settings panel.
  2. Open FABRIC TYPE combobox (e29).
  3. Snapshot — see options: Light/Medium/Heavy/Stretchy/Towel.
  4. Click Heavy Weight Cotton option (e32).
  5. Snapshot — combobox collapses, but still shows "Medium Weight Cotton" with [selected], not "Heavy Weight Cotton".

Same for: STABILIZER (e35/e36-39), HOOP SIZE (e24/e25-28).

Code path

CanvasArea.tsx:204-216 renders the dropzone:

const handleDrop = useCallback((e: React.DragEvent) => {
  e.preventDefault();
  const file = e.dataTransfer.files[0];
  if (file) onFileUpload(file);
}, ...);

handleFileChange for the hidden file input is similarly wired. The combobox is rendered by RightPanel.tsx — but the onChange handler that should set Redux state appears to be intercepted by a wrapper that doesn't fire on synthetic events.

Expected behavior

Standard <select> should respond to native change events. Or if this is Radix Select or a custom dropdown, the option click handler should fire on either mousedown/click events with the option's coordinates.

Workaround attempted

  • act kind=click ref=e32 — failed (no state change)
  • act kind=select ref=e32 — failed (no state change)
  • PointerEvent sequence via evaluate with dispatchEvent — failed (React onChange not invoked)
  • Captured React props via __reactProps keys — confirmed onClick exists but does not fire under synthetic dispatch.

Evidence

  • Session: 2026-09-09/10, ThreadCraft build.
  • MCP read and snapshot confirm dropdown state never changes.

Severity: high — the settings panel exists but is functionally inert. This is the root cause of #31 (DigitizeSettings dropped) being unverifiable through the UI.


Moved from Mark/easystitch-service#33 — these are UI bugs in the ThreadCraft frontend, not API bugs on the easystitch-service. They were originally filed on the wrong repo because both projects are part of the same ThreadCraft shakedown work, but the fix surface is here.

Original issue #33 retained as a cross-reference.

**Summary** The native-style `<select>` comboboxes in the Design Settings panel render all options in the MCP accessibility tree (e.g., Heavy Weight Cotton ref `e32`), but clicking any option via `act click ref=e32`, `act kind=select ref=e32`, or a PointerEvent sequence (`pointerdown` → `pointerup` → `click`) only **closes the dropdown without flipping the React state**. The next snapshot re-shows the original option as `[selected]`. **Reproduction** 1. Upload an image to unlock the Settings panel. 2. Open FABRIC TYPE combobox (`e29`). 3. Snapshot — see options: Light/Medium/Heavy/Stretchy/Towel. 4. Click Heavy Weight Cotton option (`e32`). 5. Snapshot — combobox collapses, but **still shows "Medium Weight Cotton" with [selected]**, not "Heavy Weight Cotton". **Same for:** STABILIZER (`e35`/`e36-39`), HOOP SIZE (`e24`/`e25-28`). **Code path** `CanvasArea.tsx:204-216` renders the dropzone: ```tsx const handleDrop = useCallback((e: React.DragEvent) => { e.preventDefault(); const file = e.dataTransfer.files[0]; if (file) onFileUpload(file); }, ...); ``` `handleFileChange` for the hidden file input is similarly wired. The combobox is rendered by `RightPanel.tsx` — but the `onChange` handler that should set Redux state appears to be intercepted by a wrapper that doesn't fire on synthetic events. **Expected behavior** Standard `<select>` should respond to native `change` events. Or if this is Radix Select or a custom dropdown, the option click handler should fire on either `mousedown`/`click` events with the option's coordinates. **Workaround attempted** - `act kind=click ref=e32` — failed (no state change) - `act kind=select ref=e32` — failed (no state change) - PointerEvent sequence via `evaluate` with `dispatchEvent` — failed (React onChange not invoked) - Captured React props via `__reactProps` keys — confirmed `onClick` exists but does not fire under synthetic dispatch. **Evidence** - Session: 2026-09-09/10, ThreadCraft build. - MCP `read` and `snapshot` confirm dropdown state never changes. **Severity**: high — the settings panel exists but is functionally inert. This is the root cause of #31 (DigitizeSettings dropped) being unverifiable through the UI. --- **Moved from Mark/easystitch-service#33** — these are UI bugs in the ThreadCraft frontend, not API bugs on the easystitch-service. They were originally filed on the wrong repo because both projects are part of the same ThreadCraft shakedown work, but the fix surface is here. Original issue #33 retained as a cross-reference.
Mark 2026-09-10 02:56:34 +00:00
  • closed this issue
  • added the
    bug
    label
Sign in to join this conversation.
No description provided.