Symptom

Three “add/find a related node” call sites used filled buttons instead of the established OutlinedButton pattern used by InputNodeSelectorSection: LogicGate’s “Set input” slots (ExecutorActionButton — filled with secondaryContainer colors), Pin’s “Set input” (Button — default filled Material3), and Server’s “Refresh Nodes” (correct OutlinedButton shape but plain Text instead of EmojiText with titleMedium).

Root cause

ExecutorActionButton predates InputNodeSelectorSection’s OutlinedButton pill and was reused in DigitalInputSlot by convenience. Pin’s call site was written in isolation without referencing the shared pattern. Server’s button was a manually-coded OutlinedButton that happened to get the container right but missed the text-style convention.

Fix

Prevention

When writing a “pick / find / refresh a related node” button anywhere in composeApp/, reach for OutlinedButton { EmojiText("🔍 …", style = MaterialTheme.typography.titleMedium) } — the same shape InputNodeSelectorSection uses. Don’t reach for Button (filled) or ExecutorActionButton for this affordance; those are action buttons, not node-finder pills.