feat(dashboard): Add dynamic work status column for convoys

The status column now shows computed work status based on progress and activity:
- "complete" (green) - all tracked items are done
- "active" (green) - recent polecat activity (within 1 min)
- "stale" (yellow) - older activity (1-5 min)
- "stuck" (red) - stale activity (5+ min)
- "waiting" (gray) - no assignee/activity

Previously the status column always showed "open" since we only fetch
open convoys, making it static and uninformative.

Changes:
- templates.go: Add WorkStatus field to ConvoyRow, add workStatusClass func
- fetcher.go: Add calculateWorkStatus() to compute status from progress/activity
- convoy.html: Add work status badge styling, use WorkStatus in table

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Mike Lady
2026-01-03 18:03:51 -08:00
parent 6e8c43fc0f
commit fe72bd4ddc
3 changed files with 116 additions and 9 deletions

View File

@@ -104,6 +104,41 @@
background: var(--green);
}
/* Work status badges */
.work-status {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 500;
text-transform: uppercase;
}
.work-complete .work-status {
background: var(--green);
color: var(--bg-dark);
}
.work-active .work-status {
background: var(--green);
color: var(--bg-dark);
}
.work-stale .work-status {
background: var(--yellow);
color: var(--bg-dark);
}
.work-stuck .work-status {
background: var(--red);
color: var(--bg-dark);
}
.work-waiting .work-status {
background: var(--text-secondary);
color: var(--bg-dark);
}
/* Activity colors */
.activity-dot {
display: inline-block;
@@ -296,10 +331,9 @@
</thead>
<tbody>
{{range .Convoys}}
<tr class="{{statusClass .Status}}">
<tr class="{{workStatusClass .WorkStatus}}">
<td>
<span class="status-indicator"></span>
{{if eq .Status "open"}}●{{else}}✓{{end}}
<span class="work-status">{{.WorkStatus}}</span>
</td>
<td>
<span class="convoy-id">{{.ID}}</span>