In the krillapp_server_peer_settings catalog screenshot, the “Host or IP” field showed its Material3 label collapsed inside the field body (indistinguishable from placeholder text), while the adjacent “Port” field showed its label floating above the outline border.
NodeCatalogScreenshots.catalogNode() builds every node with type.meta(), which for KrillApp.Server.Peer returns ServerMetaData() — an empty hostname and port = 0. ServerConnectionForm renders those values into two OutlinedTextFields. Material3 places the label composable inside the field body when the field value is empty and the field is unfocused; it only floats above the border when the field is non-empty or focused. The Port field displayed “0” (non-empty), so its “Port” label floated above; the Host field was empty so its “Host or IP” label collapsed inside — a visible inconsistency between two sibling fields. The label = { Text("Host or IP") } parameter was already correctly wired in ServerConnectionForm.kt; the inconsistency was purely in the screenshot fixture.
In NodeCatalogScreenshots.kt, added a when (type) branch in catalogNode() that substitutes ServerMetaData(name = "192.168.1.42", port = 50051) for KrillApp.Server.Peer instead of using the empty default. Both the host and port fields now hold non-empty values, causing both Material3 labels to float above their respective fields in the catalog screenshot.
catalogNode() uses type.meta() and the resulting metadata leaves string fields empty, floating labels will collapse inside the field. Any catalog screenshot that shows OutlinedTextField with a label parameter should be checked: if the field value is empty, the label appears inside the field and will look different from a sibling field whose value is non-empty.catalogTypes in NodeCatalogScreenshots.kt, check whether the default metadata (type.meta()) produces non-empty values for all OutlinedTextField fields rendered by the editor. If any field would be empty, add a populated override in catalogNode()’s when (type) block.