Symptom

Helper/hint text below text fields appeared visually “attached” to the field border — only ~4dp of space separated the field’s bottom edge from the helper text. The 4dp matched PADDING_EXTRA_SMALL, below the project’s 8dp minimum between-element floor. Affected screens: MQTT settings, Incoming Webhook settings, LLM settings (and several others).

Root cause

All text fields with helper text used Material3’s built-in supportingText slot on OutlinedTextField. Material3 hardcodes SupportingTopPadding = 4.dp internally with no public API to override it. The KrillTextField shared composable existed but was never wired up — every settings screen called OutlinedTextField directly, so there was no single point to change the spacing.

Fix

Rebuilt KrillTextField to render the supportingText content manually outside OutlinedTextField: the field renders without a Material3 supportingText slot, then a Spacer(PADDING_SMALL) (8dp) + a CompositionLocalProvider wrapping bodySmall typography and onSurfaceVariant color + Box(padding = PADDING_LARGE) renders the helper below. Converted all seven OutlinedTextField call sites that had a supportingText parameter to use KrillTextField instead.

Files changed: ui/KrillTextField.kt, mqtt/EditMqtt.kt, trigger/incomingwebhook/EditIncomingWebHook.kt, server/llm/EditLLM.kt, executor/lambda/EditLambda.kt, project/diagram/DiagramScreen.kt, server/serialdevice/SerialDeviceView.kt.

Prevention