Fabric Type and Stabilizer dropdowns are wired in the UI but never reach the service — Help page claim "this affects underlay and density recommendations" is unmet #146
Labels
No labels
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:verify-failed
bug
deferred
feature-request
in-progress
needs-decompose
needs-triage
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/Kimi_Agent_Brother_10_Digitizing_App#146
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
The RightPanel's Design Settings section has two dropdowns that the user can change but whose values never reach the service:
src/components/workspace/RightPanel.tsx:131-141): 5 options (Light Weight Cotton / Medium Weight Cotton / Heavy Weight Cotton / Stretchy / Knit / Towel / Fleece)src/components/workspace/RightPanel.tsx:143-151): 4 options (Cut-Away / Tear-Away / Wash-Away / Adhesive)The values are stored in
designSettings.fabricTypeanddesignSettings.stabilizer(in the workspace reducer), they persist with the saved design, and they round-trip through the gallery. ButtoServiceSettingsatsrc/lib/digitize-adapters.ts:38-65does not include either field in theAutoDigitizeSettingsobject sent to/v1/digitize.The service's
DigitizeSettingsschema acceptsfabricandtargetStitchCountas forward-compatible wire fields (per the openapi description: "settings acceptsfabricandtargetStitchCountas documented forward-compatible hints (the pipeline does not consume them yet)"). The client doesn't send either.The Help page advertises: "Choose your fabric type (light, medium, heavy, stretchy, or towel) — this affects underlay and density recommendations." This is a product promise the current implementation cannot keep, because the choice never reaches the service.
Where
src/components/workspace/RightPanel.tsx:131-151src/components/workspace/types.ts:145-146(fabricType: FabricType;,stabilizer: StabilizerType;)src/lib/digitize-adapters.ts:38-65— does not includefabricorstabilizerin the return objectDigitizeSettingsacceptsfabric: str(forward-compatible)src/pages/Help.tsx:69— "Choose your fabric type..."Suggested fix shape
Add
fabricandtargetStitchCount(the latter is mentioned alongsidefabricin the openapi description) to thetoServiceSettingsreturn object. The values come from the workspace state:If the service doesn't yet consume
fabric, the wire field is a no-op today but it's set up for the moment the service starts honoring it (same pattern asunderlay, per the comment indigitize-adapters.ts:55-58).Longer-term: the service's digitize algorithm should actually use
fabricto choose underlay and density defaults. The current Help page claim is "this affects underlay and density recommendations" — until the service does this, the help page text is a lie.Severity
Medium. The user's choices are stored but ignored by the engine. The Help page makes promises the implementation can't keep.
Discovered by
Gap analysis (2026-10-02) of auto-digitize settings after the round 5 + #127/#130/#128 work landed.
Related
src/pages/Help.tsx:69is stale.Fixed in
7a6dc74. The RightPanel's Fabric Type dropdown now flows throughtoServiceSettingsand onto the/v1/digitizepayload as the forward-compatfabricfield. Same wire shape as theunderlaytoggle (#115): the easystitch-serviceDigitizeSettingsacceptsfabricon the wire but_translate_settingsignores it today, so the field is now present and ready for the moment the engine adopts it.Adapter change:
toServiceSettingsgained afabricTypeparameter;useWorkspacepassesstate.designSettings.fabricTypethrough.Workspace FabricType (light/medium/heavy/stretchy/towel) does not overlap with the service's
fabricLiteral (standard/cotton/polyester/silk/denim/felt/stretch), so the adapter maps each workspace value onto a service-compatible value: light/medium/heavy/towel -> cotton; stretchy -> stretch. A literal pass-through would have 422'd in Pydantic.Stabilizer remains client-side: the service schema has no
stabilizerfield, so the value stays in workspace state until/unless the service grows a matching field.Local gates: tsc clean, 599/599 pass, eslint clean. Pushed as
7a6dc74on origin/main; CI run #7420 is currentlywaitingfor the self-hosted runner (all recent runs on this repo are stuckwaiting/cancelled — that's the queue, not this commit). Will surface separately if CI comes back red.Help page claim ("this affects underlay and density recommendations") is now wire-accurate: the value reaches the service. Whether the engine actually uses it to alter underlay/density is a follow-up in the service repo (Mark/easystitch-service#31) — not in scope here, since the wire layer is the gap that was fixable from this side.