You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
const t = f.type as string | undefined;
const isTextarea = t === 'textarea' || t === 'field:textarea' ||
t === 'field:markdown' || t === 'field:html' ||
t === 'field:richtext';
裸拼法只收了 textarea 一个。它在这里的理由是明确的:textarea 是表单渲染器的内建分支(BUILTIN_FIELD_TYPES,packages/components/src/renderers/form/form.tsx:235 = input/textarea/checkbox/switch/select),那条 case 'textarea'(同文件 :2493)自己读 mobile_fullscreen。
Triage — first-touch grading (triage seat, session session_01KTguWpd7WNGYTGmSNY31RL): escalated to needs-user-decision, type Bug.
The card is honest that the two fixes point in opposite directions and hinge on one undecided contract question: is a bare spec type name (markdown/html/richtext) a legal FormField.type spelling? That is contract shape, not mechanics — and both sides have real evidence: WIDE_FIELD_TYPES tolerates both spellings becauseObjectFormDesigner.tsx:158 passes objectDef.fields[x].type raw (a real producer of bare spellings), while the namespaced fallback in renderFieldComponent is precisely the kind of tolerant consumer the contract-first rule says to tighten, not extend.
Four-prong analysis:
Platform long-term coherence: one legal spelling per widget beats two; every tolerant consumer added around the bare spelling (this stamp list would be the next) entrenches the fork further.
Measured business pull: zero on the defect face today — no measured producer writes bare markdown/html/richtext into ObjectForm.customFields; the designer path routes through isWideFieldType, not the stamp face.
AI-agent error-resistance: a closed spelling set rejected loudly at publish beats each consumer maintaining its own tolerance list — the asymmetry this card records is exactly the drift the doubled vocabulary produces.
Startup scope discipline: the 3-literal patch is the cheap move but is a recurring tax (every future stamp-like list must remember both spellings); ruling the spelling contract once ends the class.
Recommendation: rule bare spellings not legal — normalize the producer (designer emits the namespaced/spec-typed form) and schedule the fallback tightening; do not extend the stamp list to bare spellings in the interim (that widens the tolerance being retired). If you instead rule bare spellings legal, the fix is the 3 literals plus a shared spelling-normalization helper so no list keeps its own copy.
Activity
os-support-ai commentedon Aug 18, 2026
Triage — first-touch grading (triage seat, session
session_01KTguWpd7WNGYTGmSNY31RL): escalated toneeds-user-decision, type Bug.The card is honest that the two fixes point in opposite directions and hinge on one undecided contract question: is a bare spec type name (
markdown/html/richtext) a legalFormField.typespelling? That is contract shape, not mechanics — and both sides have real evidence:WIDE_FIELD_TYPEStolerates both spellings becauseObjectFormDesigner.tsx:158passesobjectDef.fields[x].typeraw (a real producer of bare spellings), while the namespaced fallback inrenderFieldComponentis precisely the kind of tolerant consumer the contract-first rule says to tighten, not extend.Four-prong analysis:
markdown/html/richtextintoObjectForm.customFields; the designer path routes throughisWideFieldType, not the stamp face.Recommendation: rule bare spellings not legal — normalize the producer (designer emits the namespaced/spec-typed form) and schedule the fallback tightening; do not extend the stamp list to bare spellings in the interim (that widens the tolerance being retired). If you instead rule bare spellings legal, the fix is the 3 literals plus a shared spelling-normalization helper so no list keeps its own copy.
Generated by Claude Code
fix(app-shell): the form designer's type tag names the type as the pi…