diff --git a/app/src/main/kotlin/com/shonar/desktop/Screens.kt b/app/src/main/kotlin/com/shonar/desktop/Screens.kt index cc8cbbd..7b3e4a7 100644 --- a/app/src/main/kotlin/com/shonar/desktop/Screens.kt +++ b/app/src/main/kotlin/com/shonar/desktop/Screens.kt @@ -847,6 +847,21 @@ fun DetailScreen(state: DesktopState) { val sJob = detail.jobs.firstOrNull { it.jobType == "summarize" } if (pipeline != null) { PipelinePanel(pipeline) + } else if (detail.busy != null) { + // Click-landed but no job row yet (POST/token/poll latency): + // busy is REAL work in flight — showing nothing here was the + // "hit transcribe, screen looks dead" blind window. + SonarCard(modifier = Modifier.fillMaxWidth()) { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(Shonar.Space2), + ) { + Text("→", style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.primary) + Text(detail.busy!!, style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.primary) + } + } } // Rescue-swap note: the engine succeeded but had to switch // summarizers mid-job. Tell the user in plain words, not the raw