Symptom

The krillapp_datapoint_settings catalog screenshot showed the “Unit” OutlinedTextField with its label sitting inside the field, making it visually indistinguishable from placeholder text. The adjacent Name, Precision, and Snapshot fields all displayed their labels floating above the outline, creating an inconsistent appearance that the nightly UX audit flagged as “Unit field missing external label.”

Root cause

Material3’s OutlinedTextField places the label composable in two positions depending on value and focus:

DataPointMetaData defaults to unit = "". The catalog screenshot test uses type.meta() to build each node, which produces that empty default. In a static screenshot (no focus), the Unit field’s label renders inside the field while the sibling fields (Name = "data-point-timestamp", Precision = "2", Snapshot = "0.0") all have non-empty values, so their labels float above. The label parameter was already present in the Compose code — the bug was purely in the fixture default.

Fix

Updated catalogNode() in NodeCatalogScreenshots.kt to special-case KrillApp.DataPoint: instead of type.meta(), it now builds a DataPointMetaData with unit = "°C" and a representative snapshot. This matches Fixtures.populatedSwarm() and ensures all four text-input fields on the settings screen show their labels in the floated position, consistent with how a real configured DataPoint looks.

Prevention