| ... | ... | @@ -19,6 +19,12 @@ export interface ComposerTaskStep { |
| 19 | 19 | |
| 20 | 20 | const MAX_TASK_SEGMENTS = 10; |
| 21 | 21 | |
| 22 | const taskStatusLabels = { |
| 23 | pending: "Pending", |
| 24 | inProgress: "Running", |
| 25 | completed: "Completed", |
| 26 | } satisfies Record<ComposerTaskStep["status"], string>; |
| 27 | |
| 22 | 28 | function keyedTaskSteps(steps: readonly ComposerTaskStep[]) { |
| 23 | 29 | const occurrences = new Map<string, number>(); |
| 24 | 30 | return steps.map((step) => { |
| ... | ... | @@ -84,7 +90,7 @@ function TaskSummary({ |
| 84 | 90 | className={progress.completedSteps >= progress.totalSteps ? "text-success" : undefined} |
| 85 | 91 | data-composer-task-progress="true" |
| 86 | 92 | > |
| 87 | | {progress.completedSteps}/{progress.totalSteps} |
| 93 | {progress.completedSteps}/{progress.totalSteps} complete |
| 88 | 94 | </ComposerBanner.Count> |
| 89 | 95 | <TaskSegments className="hidden w-20 sm:flex" steps={steps} /> |
| 90 | 96 | <ComposerBanner.ToggleIcon expanded={expanded} /> |
| ... | ... | @@ -185,6 +191,9 @@ export const ComposerTasksContent = memo(function ComposerTasksContent({ |
| 185 | 191 | {step.step} |
| 186 | 192 | </ComposerBanner.Content> |
| 187 | 193 | <ComposerBanner.Actions> |
| 194 | <span className="text-[10px] text-muted-foreground"> |
| 195 | {taskStatusLabels[step.status]} |
| 196 | </span> |
| 188 | 197 | <span |
| 189 | 198 | className="w-10 text-right text-[10px] text-muted-foreground/45 tabular-nums" |
| 190 | 199 | data-composer-task-duration="true" |