Skip to content

feat(core): field.control as a kind map with deep-merged arms (#155) - #156

Merged
timkindberg merged 1 commit into
feat/146-gallery-readmefrom
feat/155-control-kind-map
Aug 16, 2026
Merged

feat(core): field.control as a kind map with deep-merged arms (#155)#156
timkindberg merged 1 commit into
feat/146-gallery-readmefrom
feat/155-control-kind-map

Conversation

@timkindberg

Copy link
Copy Markdown
Owner

Summary

Closes #155 (child of #141). Stacks on #152 / #146.

defaults.field.control is a kind map (input / select / textarea / choicegroup) so a recipe can override one arm without wiping the others. Engine coerces maps at part lookup (ADR 052). Intercept parts.control stays a function. RHF / TanStack recipes moved onto arms; native still just wraps field.root.

Agent did the grind.

Test plan

  • mergeDefaults({ field: { control: { input } } }) keeps native select / textarea / choicegroup
  • Custom useFormTree({ defaults: { field: { control: { input } } } }) shows the custom input and a native <select>
  • Path intercept parts.control still works (function, not a map)
  • RHF / TanStack recipes + parity still green
  • npm run gate

Made with Cursor

…rge (#155)

Recipes can override one control arm without wiping select/textarea/choicegroup.
Engine coerces maps at part lookup; intercept parts.control stays a function.

Co-authored-by: Cursor <cursoragent@cursor.com>
@timkindberg
timkindberg merged commit a9bd7ce into feat/146-gallery-readme Aug 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant