UX audit found that secondary-action buttons in settings panels used filled Button() (primary solid) in some places — “Add Tag” (Lambda), “Add Task” (TaskList), “Test” and “Refresh Nodes” (Server) — while the most common pattern, “Add Input Node”, uses OutlinedButton. The inconsistency made some buttons look like primary save actions instead of secondary context operations.
No shared secondary-action button composable existed for settings panels. Each panel author picked the Material3 component that felt right locally, with no reference to a catalog-wide pattern. The filled Button() is the most prominent Compose option, leading to overuse in contexts where a secondary (outlined) style is appropriate.
Changed four buttons from Button() to OutlinedButton() to match the “Add Input Node” canonical pattern used across the catalog:
executor/lambda/EditLambda.kt: “Add Tag” buttonproject/tasklist/EditTaskList.kt: “Add Task” buttonserver/ServerView.kt: “Test” and “Refresh Nodes” buttonsUpdated spinner colors in Test and Refresh Nodes from onPrimary (correct for filled buttons) to primary (correct for outlined buttons whose content color defaults to primary).
When adding a secondary action button to a settings panel — any button that is not the node’s primary save/confirm action — use OutlinedButton and match the “Add Input Node” precedent in ExecutorEditComponents.kt. The filled Button() style should be reserved for primary, irreversible, or highest-prominence actions. A future shared SettingsActionButton composable wrapping OutlinedButton would codify this at the call site.