Loading…
Loading…
A schedule: one row per task, bars on a shared day axis. Each task states its own start and length, so the order you write them in does not change the picture — unlike a git graph, a schedule is data rather than a sequence.
gantt
title: Launch plan
section Build
- Scaffold: 2026-01-05, 5d
- API work: after scaffold, 10d
- Tests: after api-work, 4d [active]
section Ship
- Docs: after tests, 3d
- Launch: 2026-02-02 [milestone]
- <label>: <schedule> [status], where the schedule is any of:
2026-01-05 — an explicit ISO start date.after <task> — start when that task ends. Reference it by id, which is the
label slugified: - API work is api-work. after a b waits for both.5d / 2w / 12h — how long it runs. Omit it and the task takes a day.
Minutes (30m) and seconds (45s) are accepted too; every length normalizes
onto days.until <task> — run right up to the day that task starts. Use it for a wait
or a freeze whose end is fixed by something else rather than by its own
length. A length and an until cannot both decide the end, so the bound wins.Give neither a date nor an after and the task starts when the previous one ends,
which is what a list of pure durations means.
excludes: weekends counts every length in working days instead of calendar
days, and keeps a bar from starting on a Saturday or Sunday. Five working days
from a Thursday therefore ends the following Thursday, not the Tuesday.
gantt
title: Working days
excludes: weekends
- Build: 2024-01-04, 5d
- Freeze: after build, until launch
- Launch: 2024-01-22 [milestone]
Weekends are the only exclusion. Named holidays would need a calendar the
language does not carry, so anything else in excludes: is reported rather than
half-applied.
[done] — complete, drawn hollow and grey.[active] — in progress, drawn blue.[critical] — on the critical path, drawn red (crit also works).[milestone] — a zero-length marker drawn as a diamond rather than a bar.section <name> groups the rows that follow it, running until the next section.
gantt
title: Sprint
- Design: 3d [done]
- Build: 5d [active]
- Review: 2d
- Ship: 0d [milestone]
A Mermaid gantt converts field for field: dateFormat is unnecessary (the axis
comes from the dates themselves), done/active/crit/milestone map to the
statuses above, excludes weekends and until <id> carry over, and
after <id> / until <id> are rewritten to reference the task by its native
id. See importing from Mermaid.