A four-state schedule chart — lanes that pack overlapping work into sub-rows, an axis that follows the span from minutes to years, progress-filled bars, finish-to-start arrows that flag the dependencies the dates do not honour, and a now line from an injected instant.
Preview in your theme
Loading preview…
This component is part of Pro
The install command, prompt and concept map are included with a Pro license — one purchase unlocks every Pro component, forever.
status=“ready” · 12 items over 4 lanes, instant injected as 2026-04-06. Design, Platform and Mobile each open a second sub-row where two of their items overlap, while QA stays one row high. “Checkout redesign” and “Regression pass” are hatched: both ended before the now line with work left. “iOS checkout” starts before “Payments API v2” finishes, so that arrow is dashed and counted. “Android checkout” tracks no progress at all, which the readout says rather than calling it 0%.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
12 items · 4 lanes · Feb 27, 2026 – May 15, 2026 (fitted to the plan) · 2 overdue
Point at a bar — or press Tab and use the arrow keys — to read its dates.
milestone (no duration)
overdue: past its end with work left
finishes before the next one starts
1 dependency the dates do not honour
now, from the injected instant
A bar runs from its start to its end and the solid part of it is the share already done; a lane only grows a second row where two of its items overlap in time. Arrow keys walk one lane, up and down change lane, Home and End jump to the ends of a lane.
Gantt chart: 12 items across 4 lanes, running Mar 2, 2026 to May 13, 2026. 3 of them are milestones. Mean completion across the tracked tasks is 54%. The now line sits at Apr 6, 2026. 2 items are past its end with work left. 1 dependency starts before the item it waits on has finished.
Every item on the chart, in the order the arrow keys walk it, with its lane, its dates, how far along it is and what it waits on.
Item
Lane
Start
End
Duration
Progress
State
Waits on
Design system audit
Design
Mar 2, 2026
Mar 13, 2026
11 days
100%
as planned
nothing
Design handoff
Design
Mar 30, 2026
—
milestone
not tracked
as planned
nothing
Checkout redesign
Design
Mar 9, 2026
Mar 27, 2026
18 days
80%
overdue
nothing
Feature flags
Platform
Mar 2, 2026
Mar 20, 2026
18 days
100%
as planned
nothing
Ledger migration
Platform
Mar 23, 2026
Apr 24, 2026
32 days
20%
in progress
nothing
Payments API v2
Platform
Mar 16, 2026
Apr 10, 2026
25 days
55%
in progress
Design system audit
iOS checkout
Mobile
Apr 6, 2026
Apr 30, 2026
24 days
15%
in progress
Payments API v2 (conflict)
Store submission
Mobile
May 11, 2026
—
milestone
not tracked
as planned
nothing
Android checkout
Mobile
Apr 13, 2026
May 8, 2026
25 days
not tracked
as planned
Payments API v2
Regression pass
QA
Mar 30, 2026
Apr 3, 2026
4 days
60%
overdue
nothing
Load test
QA
Apr 27, 2026
May 1, 2026
4 days
0%
as planned
Ledger migration
Release sign-off
QA
May 13, 2026
—
milestone
not tracked
as planned
Store submission
onItemSelect is wired above: click a bar, or Tab into the chart and press Enter on one — nothing is pinned, the callback is yours.
Last selection: nothing yet
Same contract at minute resolution — the axis swaps calendar days for clock times on its own, and durations read “40 minutes” instead of “0.03 days”.
Maintenance window · 2 May
One night, minute resolution — the axis follows the span, not a setting
6 items · 3 lanes · May 2, 2026 – May 3, 2026 (fitted to the plan)
Point at a bar — or press Tab and use the arrow keys — to read its dates.
milestone (no duration)
finishes before the next one starts
now, from the injected instant
A bar runs from its start to its end and the solid part of it is the share already done; a lane only grows a second row where two of its items overlap in time. Arrow keys walk one lane, up and down change lane, Home and End jump to the ends of a lane.
Gantt chart: 6 items across 3 lanes, running May 2, 2026 22:00 to May 3, 2026 05:00. 1 of them is a milestone. Mean completion across the tracked tasks is 55%. The now line sits at May 3, 2026 01:20.
Every item on the chart, in the order the arrow keys walk it, with its lane, its dates, how far along it is and what it waits on.
Item
Lane
Start
End
Duration
Progress
State
Waits on
Traffic drain
Ops
May 2, 2026 22:00
May 2, 2026 22:40
40 minutes
100%
as planned
nothing
Rolling restart
Ops
May 3, 2026 01:00
May 3, 2026 03:00
2 hours
10%
in progress
nothing
Snapshot
Database
May 2, 2026 22:40
May 3, 2026 00:30
1h 50m
100%
as planned
Traffic drain
Schema migration
Database
May 3, 2026 00:30
May 3, 2026 02:10
1h 40m
65%
in progress
Snapshot
Smoke suite
Verification
May 3, 2026 03:00
May 3, 2026 04:30
1h 30m
0%
as planned
Schema migration
Traffic back on
Verification
May 3, 2026 05:00
—
milestone
not tracked
as planned
nothing
range={{ start: “2026-03-20”, end: “2026-04-20” }} · a fixed window. Bars that straddle an edge get a notch on that edge; the four items entirely outside it are dropped and counted under the header, never silently.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
4 rows fall outside the window · 1 dependency points at an item that is not drawn — not drawn as scheduled.
Point at a bar — or press Tab and use the arrow keys — to read its dates.
milestone (no duration)
overdue: past its end with work left
finishes before the next one starts
1 dependency the dates do not honour
now, from the injected instant
A bar runs from its start to its end and the solid part of it is the share already done; a lane only grows a second row where two of its items overlap in time. 1 bar is shorter than 3px and drawn at that floor, so its width no longer matches its duration — the real dates are in the readout and in the table. Arrow keys walk one lane, up and down change lane, Home and End jump to the ends of a lane.
Gantt chart: 8 items across 4 lanes, running Mar 2, 2026 to May 8, 2026. 1 of them is a milestone. Mean completion across the tracked tasks is 55%. The now line sits at Apr 6, 2026. 2 items are past its end with work left. 1 dependency starts before the item it waits on has finished.
Every item on the chart, in the order the arrow keys walk it, with its lane, its dates, how far along it is and what it waits on.
Item
Lane
Start
End
Duration
Progress
State
Waits on
Checkout redesign
Design
Mar 9, 2026
Mar 27, 2026
18 days
80%
overdue; starts before the window
nothing
Design handoff
Design
Mar 30, 2026
—
milestone
not tracked
as planned
nothing
Feature flags
Platform
Mar 2, 2026
Mar 20, 2026
18 days
100%
starts before the window
nothing
Ledger migration
Platform
Mar 23, 2026
Apr 24, 2026
32 days
20%
in progress; runs past the window
nothing
Payments API v2
Platform
Mar 16, 2026
Apr 10, 2026
25 days
55%
in progress; starts before the window
nothing
iOS checkout
Mobile
Apr 6, 2026
Apr 30, 2026
24 days
15%
in progress; runs past the window
Payments API v2 (conflict)
Android checkout
Mobile
Apr 13, 2026
May 8, 2026
25 days
not tracked
runs past the window
Payments API v2
Regression pass
QA
Mar 30, 2026
Apr 3, 2026
4 days
60%
overdue
nothing
density=“compact” · dependencies={false} — the same plan at 20px rows with the connectors off, for a sidebar where the bars matter and the ordering is already understood.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
12 items · 4 lanes · Feb 27, 2026 – May 15, 2026 (fitted to the plan) · 2 overdue
Point at a bar — or press Tab and use the arrow keys — to read its dates.
milestone (no duration)
overdue: past its end with work left
now, from the injected instant
A bar runs from its start to its end and the solid part of it is the share already done; a lane only grows a second row where two of its items overlap in time. Arrow keys walk one lane, up and down change lane, Home and End jump to the ends of a lane.
Gantt chart: 12 items across 4 lanes, running Mar 2, 2026 to May 13, 2026. 3 of them are milestones. Mean completion across the tracked tasks is 54%. The now line sits at Apr 6, 2026. 2 items are past its end with work left. 1 dependency starts before the item it waits on has finished.
Every item on the chart, in the order the arrow keys walk it, with its lane, its dates, how far along it is and what it waits on.
Item
Lane
Start
End
Duration
Progress
State
Waits on
Design system audit
Design
Mar 2, 2026
Mar 13, 2026
11 days
100%
as planned
nothing
Design handoff
Design
Mar 30, 2026
—
milestone
not tracked
as planned
nothing
Checkout redesign
Design
Mar 9, 2026
Mar 27, 2026
18 days
80%
overdue
nothing
Feature flags
Platform
Mar 2, 2026
Mar 20, 2026
18 days
100%
as planned
nothing
Ledger migration
Platform
Mar 23, 2026
Apr 24, 2026
32 days
20%
in progress
nothing
Payments API v2
Platform
Mar 16, 2026
Apr 10, 2026
25 days
55%
in progress
Design system audit
iOS checkout
Mobile
Apr 6, 2026
Apr 30, 2026
24 days
15%
in progress
Payments API v2 (conflict)
Store submission
Mobile
May 11, 2026
—
milestone
not tracked
as planned
nothing
Android checkout
Mobile
Apr 13, 2026
May 8, 2026
25 days
not tracked
as planned
Payments API v2
Regression pass
QA
Mar 30, 2026
Apr 3, 2026
4 days
60%
overdue
nothing
Load test
QA
Apr 27, 2026
May 1, 2026
4 days
0%
as planned
Ledger migration
Release sign-off
QA
May 13, 2026
—
milestone
not tracked
as planned
Store submission
The same plan with instant omitted: no now line, no overdue hatch, and the summary says so rather than quietly falling back to the machine clock.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
12 items · 4 lanes · Feb 27, 2026 – May 15, 2026 (fitted to the plan)
Point at a bar — or press Tab and use the arrow keys — to read its dates.
milestone (no duration)
finishes before the next one starts
1 dependency the dates do not honour
A bar runs from its start to its end and the solid part of it is the share already done; a lane only grows a second row where two of its items overlap in time. Arrow keys walk one lane, up and down change lane, Home and End jump to the ends of a lane.
Gantt chart: 12 items across 4 lanes, running Mar 2, 2026 to May 13, 2026. 3 of them are milestones. Mean completion across the tracked tasks is 54%. No reference instant was supplied, so there is no now line. 1 dependency starts before the item it waits on has finished.
Every item on the chart, in the order the arrow keys walk it, with its lane, its dates, how far along it is and what it waits on.
Item
Lane
Start
End
Duration
Progress
State
Waits on
Design system audit
Design
Mar 2, 2026
Mar 13, 2026
11 days
100%
as planned
nothing
Design handoff
Design
Mar 30, 2026
—
milestone
not tracked
as planned
nothing
Checkout redesign
Design
Mar 9, 2026
Mar 27, 2026
18 days
80%
as planned
nothing
Feature flags
Platform
Mar 2, 2026
Mar 20, 2026
18 days
100%
as planned
nothing
Ledger migration
Platform
Mar 23, 2026
Apr 24, 2026
32 days
20%
as planned
nothing
Payments API v2
Platform
Mar 16, 2026
Apr 10, 2026
25 days
55%
as planned
Design system audit
iOS checkout
Mobile
Apr 6, 2026
Apr 30, 2026
24 days
15%
as planned
Payments API v2 (conflict)
Store submission
Mobile
May 11, 2026
—
milestone
not tracked
as planned
nothing
Android checkout
Mobile
Apr 13, 2026
May 8, 2026
25 days
not tracked
as planned
Payments API v2
Regression pass
QA
Mar 30, 2026
Apr 3, 2026
4 days
60%
as planned
nothing
Load test
QA
Apr 27, 2026
May 1, 2026
4 days
0%
as planned
Ledger migration
Release sign-off
QA
May 13, 2026
—
milestone
not tracked
as planned
Store submission
Seeded generator (faker.seed) · six lanes of overlapping work. Packing is what keeps this readable: a lane grows a sub-row only where its items really collide, so the chart is as tall as the plan needs and no taller.
Capacity plan · generated
Six squads, one quarter — lanes open sub-rows wherever their items overlap
38 items · 6 lanes · Mar 2, 2026 – Jun 18, 2026 (fitted to the plan) · 12 overdue
Point at a bar — or press Tab and use the arrow keys — to read its dates.
milestone (no duration)
overdue: past its end with work left
now, from the injected instant
A bar runs from its start to its end and the solid part of it is the share already done; a lane only grows a second row where two of its items overlap in time. Arrow keys walk one lane, up and down change lane, Home and End jump to the ends of a lane.
Gantt chart: 38 items across 6 lanes, running Mar 6, 2026 to Jun 14, 2026. 6 of them are milestones. Mean completion across the tracked tasks is 50%. The now line sits at Apr 17, 2026. 12 items are past its end with work left.
Every item on the chart, in the order the arrow keys walk it, with its lane, its dates, how far along it is and what it waits on.
Item
Lane
Start
End
Duration
Progress
State
Waits on
synthesize alarm
Squad 1
Apr 4, 2026
Apr 20, 2026
16 days
29%
in progress
nothing
copy port
Squad 1
May 17, 2026
May 31, 2026
14 days
26%
as planned
nothing
Squad 1 ship
Squad 1
Jun 2, 2026
—
milestone
not tracked
as planned
nothing
program alarm
Squad 1
Apr 18, 2026
May 2, 2026
14 days
40%
as planned
nothing
program alarm
Squad 1
Apr 18, 2026
May 12, 2026
24 days
30%
as planned
nothing
quantify pixel
Squad 2
Mar 9, 2026
Mar 26, 2026
17 days
0%
overdue
nothing
compress driver
Squad 2
Apr 14, 2026
Apr 26, 2026
12 days
28%
in progress
nothing
parse pixel
Squad 2
May 22, 2026
Jun 5, 2026
14 days
56%
as planned
nothing
Squad 2 ship
Squad 2
Jun 11, 2026
—
milestone
not tracked
as planned
nothing
program program
Squad 2
Mar 20, 2026
Apr 6, 2026
17 days
22%
overdue
nothing
calculate bandwidth
Squad 3
Mar 7, 2026
Mar 23, 2026
16 days
31%
overdue
nothing
transmit system
Squad 3
Apr 23, 2026
May 15, 2026
22 days
12%
as planned
nothing
Squad 3 ship
Squad 3
Jun 14, 2026
—
milestone
not tracked
as planned
nothing
compress pixel
Squad 3
Mar 14, 2026
Apr 7, 2026
24 days
73%
overdue
nothing
parse matrix
Squad 3
May 2, 2026
May 24, 2026
22 days
39%
as planned
nothing
navigate bus
Squad 3
Mar 15, 2026
Apr 3, 2026
19 days
75%
overdue
nothing
override sensor
Squad 3
Mar 18, 2026
Mar 22, 2026
4 days
99%
overdue
nothing
reboot sensor
Squad 4
Mar 6, 2026
Mar 18, 2026
12 days
7%
overdue
nothing
override application
Squad 4
Apr 8, 2026
Apr 27, 2026
19 days
58%
in progress
nothing
navigate matrix
Squad 4
May 3, 2026
May 12, 2026
9 days
62%
as planned
nothing
copy circuit
Squad 4
May 21, 2026
May 29, 2026
8 days
91%
as planned
nothing
bypass sensor
Squad 4
May 12, 2026
May 23, 2026
11 days
88%
as planned
nothing
Squad 4 ship
Squad 4
May 30, 2026
—
milestone
not tracked
as planned
nothing
synthesize circuit
Squad 5
Mar 17, 2026
Mar 31, 2026
14 days
75%
overdue
nothing
copy microchip
Squad 5
Apr 13, 2026
Apr 28, 2026
15 days
30%
in progress
nothing
bypass alarm
Squad 5
May 10, 2026
Jun 1, 2026
22 days
79%
as planned
nothing
compress matrix
Squad 5
Mar 28, 2026
Apr 11, 2026
14 days
30%
overdue
nothing
reboot array
Squad 5
Apr 18, 2026
Apr 28, 2026
10 days
69%
as planned
nothing
Squad 5 ship
Squad 5
May 30, 2026
—
milestone
not tracked
as planned
nothing
copy panel
Squad 5
Mar 31, 2026
Apr 14, 2026
14 days
67%
overdue
nothing
bypass bus
Squad 5
Apr 27, 2026
May 6, 2026
9 days
28%
as planned
nothing
parse system
Squad 6
Mar 12, 2026
Mar 16, 2026
4 days
96%
overdue
nothing
navigate hard drive
Squad 6
May 13, 2026
May 29, 2026
16 days
48%
as planned
nothing
Squad 6 ship
Squad 6
Jun 5, 2026
—
milestone
not tracked
as planned
nothing
input transmitter
Squad 6
Mar 15, 2026
Mar 27, 2026
12 days
13%
overdue
nothing
compress sensor
Squad 6
May 13, 2026
Jun 6, 2026
24 days
99%
as planned
nothing
navigate alarm
Squad 6
May 20, 2026
Jun 8, 2026
19 days
13%
as planned
nothing
override bus
Squad 6
May 22, 2026
Jun 7, 2026
16 days
100%
as planned
nothing
Degenerate feed · two unparseable dates, a repeated id, a row that ends before it starts, a dependency on an item that is not here, a 140% progress, a name longer than any bar, and a two-hour task inside a five-month plan (0.4px at true scale, drawn at the 3px floor).
Data-quality stress test
Deliberately broken feed — the note under the header counts what could not be drawn
5 items · 3 lanes · Mar 25, 2026 – Sep 6, 2026 (fitted to the plan)
2 rows have a date this chart cannot place · 1 duplicate id · 1 dependency points at an item that is not drawn · 1 row ends before it starts and was clamped — not drawn as scheduled.
Point at a bar — or press Tab and use the arrow keys — to read its dates.
milestone (no duration)
now, from the injected instant
A bar runs from its start to its end and the solid part of it is the share already done; a lane only grows a second row where two of its items overlap in time. 1 bar is shorter than 3px and drawn at that floor, so its width no longer matches its duration — the real dates are in the readout and in the table. Arrow keys walk one lane, up and down change lane, Home and End jump to the ends of a lane.
Gantt chart: 5 items across 3 lanes, running Apr 1, 2026 to Aug 31, 2026. 2 of them are milestones. Mean completion across the tracked tasks is 57%. The now line sits at Jun 15, 2026.
Every item on the chart, in the order the arrow keys walk it, with its lane, its dates, how far along it is and what it waits on.
Item
Lane
Start
End
Duration
Progress
State
Waits on
Warehouse migration, including the historical backfill nobody has scoped yet
Platform
Apr 1, 2026
Aug 31, 2026
152 days
42%
in progress
nothing
Cutover window
Platform
Jun 15, 2026
Jun 15, 2026
2 hours
100%
as planned
nothing
Rollback rehearsal
Ops
Jul 10, 2026
—
milestone
not tracked
end recorded before start, clamped
nothing
Security audit
Ops
Jul 28, 2026
Aug 14, 2026
17 days
30%
as planned
nothing
Change freeze
Governance
May 1, 2026
—
milestone
not tracked
as planned
nothing
status=“empty” — a valid contract with nothing scheduled, told apart from loading and from a failed fetch.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
Nothing scheduled yet
Bars appear here once an item carries a start and an end this chart can place.
status=“loading” — a deterministic skeleton, aria-hidden, no timers involved.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
Loading schedule
status=“error” with onRetry — retried 0 times. Drop onRetry and the button disappears rather than sitting there doing nothing.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
Couldn't load this schedule
The data source didn't respond.
range with the end before the start — the layout refuses instead of drawing a mirrored plan, and says which input it could not use.
Release train · Q1
Plan revision 7 · dates are ISO days, the now line is injected
This schedule can't be drawn
The window is not a pair of ISO instants with the end after the start.