fix(scheduler): show every Timeline lane dot and rename the Maintenance lane to Upkeep (#1618)

The Timeline lane marker lacked shrink-0, so inside the fixed 80px label
column the widest labels flex-shrank their color dot to zero width. The
Maintenance and Lifecycle dots collapsed and rendered as no dot at all,
while the shorter labels kept theirs. Add shrink-0 so every lane dot
renders at a consistent size.

Maintenance was the only label wide enough to fill the 80px column on its
own, which is what left its dot no room. Rename it to Upkeep so all five
labels fit and align. A registry test now pins each lane's key, order,
and label, and asserts every lane carries a color, so a future rewrite of
the action registry cannot silently rename a lane or drop a dot color.
This commit is contained in:
Anso
2026-07-11 22:14:14 -04:00
committed by GitHub
parent 2da87c8c5d
commit 78fbc151e7
5 changed files with 24 additions and 5 deletions
@@ -621,7 +621,7 @@ export default function ScheduledOperationsView({ filterNodeId, onClearFilter, p
<div key={lane.key} className="grid grid-cols-[80px_1fr] items-center gap-3">
<div className="flex items-center gap-2">
<span
className="w-1.5 h-1.5 rounded-full"
className="w-1.5 h-1.5 rounded-full shrink-0"
style={{ backgroundColor: lane.color }}
aria-hidden="true"
/>
@@ -373,7 +373,7 @@ describe('ScheduledOperationsView', () => {
it('renders the five registry category lanes in the timeline view', async () => {
render(<ScheduledOperationsView />);
// Timeline is the default view; the lane track always renders.
for (const lane of ['Lifecycle', 'Updates', 'Security', 'Maintenance', 'Backups']) {
for (const lane of ['Lifecycle', 'Updates', 'Security', 'Upkeep', 'Backups']) {
expect(await screen.findByText(lane)).toBeInTheDocument();
}
});