diff --git a/app/src/main/kotlin/io/flamenet/messenger/app/ChatScreens.kt b/app/src/main/kotlin/io/flamenet/messenger/app/ChatScreens.kt index e9eb87f..d63178f 100644 --- a/app/src/main/kotlin/io/flamenet/messenger/app/ChatScreens.kt +++ b/app/src/main/kotlin/io/flamenet/messenger/app/ChatScreens.kt @@ -140,10 +140,6 @@ fun ColumnScope.BuddyList(model: MessengerViewModel, phase: MessengerViewModel.P ) { Text("Add contact") } } - phase.error?.let { - Text(it, color = MaterialTheme.colorScheme.error, modifier = Modifier.testTag("error")) - } - if (phase.buddies.isEmpty()) { // Says what to do, not merely that there is nothing. An empty state // that only reports emptiness leaves the person stuck. diff --git a/app/src/main/kotlin/io/flamenet/messenger/app/MainActivity.kt b/app/src/main/kotlin/io/flamenet/messenger/app/MainActivity.kt index ed95827..21cf7d8 100644 --- a/app/src/main/kotlin/io/flamenet/messenger/app/MainActivity.kt +++ b/app/src/main/kotlin/io/flamenet/messenger/app/MainActivity.kt @@ -318,6 +318,19 @@ private fun ColumnScope.SignedIn( // whatever screen somebody is on. CallBanner(model, phase) + // ⚠️ **Screen level, not inside Contacts.** There is ONE error slot shared + // by everything on this screen, and it used to be rendered inside + // BuddyList — so a story that failed to post, or a group that could not be + // created, appeared underneath the Contacts heading and read as a contacts + // problem. Observed with a rate-limited story post reported under Contacts. + phase.error?.let { + Text( + it, + color = MaterialTheme.colorScheme.error, + modifier = Modifier.testTag("error").padding(top = Space.sm), + ) + } + // Each section on its own card. ⚠️ The sections themselves are unchanged — // same composables, same testTags, same order — because this is a skin over // screens that work, and moving them would mean re-pointing the UI tests