PipelinePanel: wrap card content in a Column so stages stop painting over the headline

SonarCard's Surface lays un-wrapped siblings in a Box, so the whole
processing panel (teal headline, gray elapsed/note text, stage rows,
progress bar) drew stacked on one line — the 'text overlapping while
summarizing' garble, visible only mid-job. Every other card call site
wraps its content; this was the one that didn't. Headline also gets
weight(1f, fill=false) + maxLines/Ellipsis so it can't collide with
the elapsed/ETA text at narrow widths.
This commit is contained in:
avi 2026-09-20 20:49:21 -05:00
commit c32fc2079c

View file

@ -1366,13 +1366,22 @@ fun SettingsScreen(state: DesktopState) {
@Composable @Composable
fun PipelinePanel(p: PipelineUi) { fun PipelinePanel(p: PipelineUi) {
SonarCard(modifier = Modifier.fillMaxWidth()) { SonarCard(modifier = Modifier.fillMaxWidth()) {
// SonarCard's Surface places un-wrapped siblings in a Box — without
// this Column every row stacked on top of the headline (the
// "text overlapping while summarizing" garble).
Column(
modifier = Modifier.fillMaxWidth().padding(Shonar.CardPadding),
verticalArrangement = Arrangement.spacedBy(Shonar.Space1),
) {
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween, horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Text(p.headline, style = MaterialTheme.typography.titleSmall, Text(p.headline, style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.primary) color = MaterialTheme.colorScheme.primary,
modifier = Modifier.weight(1f, fill = false),
maxLines = 1, overflow = TextOverflow.Ellipsis)
Text( Text(
buildString { buildString {
p.elapsedSec?.let { append("${DesktopState.fmtMMSS(it)} elapsed") } p.elapsedSec?.let { append("${DesktopState.fmtMMSS(it)} elapsed") }
@ -1427,5 +1436,6 @@ fun PipelinePanel(p: PipelineUi) {
) )
} }
} }
}
} }
} }