Skip to content

{{ page.title }}

{{ site.data.roadmap.meta.tagline }} All versions follow Semantic Versioning.

Single source of truth. This page and the README roadmap section are both rendered from _data/roadmap.yml. Edit that file (and run ./scripts/generate-roadmap.sh to refresh the README) to update the roadmap everywhere.

Last reviewed: {{ site.data.roadmap.meta.updated }}


Visual Timeline

gantt
    title {{ site.data.roadmap.meta.title }}
    dateFormat YYYY-MM
{%- assign sections = "" | split: "" -%}
{%- for m in site.data.roadmap.milestones -%}
  {%- unless sections contains m.section -%}
    {%- assign sections = sections | push: m.section -%}
  {%- endunless -%}
{%- endfor %}
{%- for section in sections %}
    section {{ section }}
{%- for m in site.data.roadmap.milestones -%}
{%- if m.section == section %}
{%- if m.status == "completed" %}{% assign prefix = "done, " %}
{%- elsif m.status == "active" %}{% assign prefix = "active, " %}
{%- elsif m.status == "milestone" %}{% assign prefix = "milestone, " %}
{%- else %}{% assign prefix = "" %}{% endif -%}
{%- if m.status == "milestone" %}{% assign range = m.start | append: ", 1d" %}
{%- else %}{% assign range = m.start | append: ", " | append: m.end %}{% endif %}
    v{{ m.version }} {{ m.title }} :{{ prefix }}{{ range }}
{%- endif -%}
{%- endfor -%}
{%- endfor %}

Release Summary

Version Status Target Summary
{%- for m in site.data.roadmap.milestones %}
{%- case m.status %}
{%- when "completed" %}{% assign status_label = "✅ Completed" %}{% assign target_label = m.released default: m.target %}
{%- when "active" %}{% assign status_label = "🚧 In Progress" %}{% assign target_label = m.target %}
{%- when "milestone" %}{% assign status_label = "🎯 Milestone" %}{% assign target_label = m.target %}
{%- else %}{% assign status_label = "🗓 Planned" %}{% assign target_label = m.target %}
{%- endcase %}
v{{ m.version }} {{ status_label }} {{ target_label }} {{ m.summary }}
{%- endfor %}

See the full CHANGELOG for detailed release notes.


Milestone Detail

{% for m in site.data.roadmap.milestones %}

v{{ m.version }} — {{ m.title }}

{% case m.status -%} {% when "completed" %}Status: ✅ Completed{% if m.released %} ({{ m.released }}){% endif %} {% when "active" %}Status: 🚧 In Progress  ·  Target: {{ m.target }} {% when "milestone" %}Status: 🎯 Milestone  ·  Target: {{ m.target }} {% else %}Status: 🗓 Planned  ·  Target: {{ m.target }}

{{ m.summary }}

{% if m.features and m.features.size > 0 -%} Highlights:

{% for feature in m.features -%} - {{ feature }} {% endfor %}


{% endfor %}

How We Prioritize

Roadmap priorities are informed by:

{% for signal in site.data.roadmap.prioritization -%} {{ forloop.index }}. {{ signal }}

Want to influence the roadmap? Open a discussion with your use case, or propose an edit to _data/roadmap.yml directly.