Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

The Ambrosia Guide / 0.1.0 PDF Manual ↗

Project Roadmaps

ambrosia-roadmap displays concurrent tracks, phases, milestones, and details. Time is elapsed from zero; fractional boundaries keep proportional spacing.

Source Inside a slide
#ambrosia-roadmap(
  total: 6, unit: "week", tick-every: 1,
  now: 2.5, milestones: (4.5,),
  tasks: (
    (content: [Explore], start: 0, end: 2.5),
    (content: [Build], start: 2, end: 5,
      kind: "success"),
    (content: [Review], start: 4.5, end: 6,
      kind: "warning"),
  ),
)

Full Source

Output
A six-week project roadmap with overlapping tracks and a milestone at four and a half weeks.

Time And Labels

OptionDefault / Meaning
total12; positive finite duration.
unit"week"; changes labels, not the data.
tick-every2; positive interval, including fractions.
nowCurrent elapsed position; none hides it.
tick-labelOptional (start, end) => content formatter.

A task from 0 to 2.5 lasts 2.5 units. All ranges must remain within 0 to total, with starts less than ends. Supported label prefixes include month, week, day, year, hour, and minute; custom strings also work.

// Inside ambrosia-roadmap(...): quarters over a 36-month plan.
total: 36, unit: "month", tick-every: 3,
tick-label: (start, end) => [Q#(int(start / 3) + 1)],

Tracks, Phases, And Details

Each task needs content, start, and end. A dictionary occupies its own track; an array groups ordered, non-overlapping tasks on one track:

tasks: (
  ((content: [Explore], start: 0, end: 2.5),
   (content: [Review], start: 2.5, end: 4)),
  (content: [Build], start: 2, end: 6),
),

Phases need name and end; starts default to the previous end (initially zero). An explicit start allows gaps. Phases must be ordered and disjoint.

A task’s details accepts content or (content: ..., start: ..., end: ...). By default its drawer spans from the task’s start to total, below the whole parent track.

Milestones accept numbers or records such as (at: 4.5, label: [Review]). legend: false hides their legend. Tasks, phases, and milestone records accept kind or a solid fill.

Fitting

fit: true scales typography and relative spacing to the available height, down to min-scale: 75%. Beyond that limit it raises a diagnostic. A native block(height: ...) supplies an explicit height budget; fit: false preserves natural size.

Use separate tracks for overlapping work. Whole-component reveals work; pauses inside task dictionaries are unsupported. The component does not compute dependencies or calendar dates.

Editable project and event plans