Show the busy label the instant a click lands, before the first job row exists

Between pressing Transcribe and the first /jobs poll there was a blind
window where real work (POST in flight, token refresh, initial upload)
had no on-screen trace at all — the screenshot complaint 'shows
nothing'. Any non-null busy label now renders as a pipeline-style card
in the same slot the panel occupies, so feedback starts at click time.
This commit is contained in:
avi 2026-09-18 21:18:30 -05:00
commit 05b84a361a

View file

@ -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