Symptom

The LLM node settings screen rendered “Backend” and “Response Format” as inline FilterChip rows — a minor pattern, applied twice in the same file with duplicated code — while the majority of single-choice settings screens across the catalog use the shared HorizontalOptionSelector<T> RadioButton composable. Separately, TimeRangeSelector.kt also used FilterChip for its “Range” selector, making Graph and Diagram outliers from the established RadioButton majority.

Root cause

EditLLM.kt was written before HorizontalOptionSelector was established as the project’s shared single-choice selector. Both inline FilterChip blocks in that file served the same selection pattern but were not sharing any code with each other or with the rest of the catalog. TimeRangeSelector.kt similarly predated the RadioButton convention.

Fix

Prevention

When a settings editor needs a “pick one of N” control, reach for HorizontalOptionSelector<T> (ui/DialogComponents.kt) rather than an inline FilterChip loop. The shared composable handles accessibility semantics (Role.RadioButton, selectableGroup) and FlowRow wrapping automatically. New node-type editors should be reviewed against the catalog before merge to catch widget-family drift early.