{% extends "base.html" %} {# Single Release Template Used for individual release/changelog pages. Usage: Create markdown files with `type: changelog` Frontmatter example: --- title: Version 1.2.0 type: changelog date: 2025-10-12 name: "Feature Release" status: stable summary: Major new features and improvements added: - New feature A - New feature B changed: - Updated feature C fixed: - Fixed bug D --- #} {% from 'partials/navigation-components.html' import breadcrumbs %} {% block content %} {{ breadcrumbs(page) }}

{{ page.title }}

{% if page.metadata.get('name') %}

{{ page.metadata.get('name') }}

{% endif %}
{% if page.date %} {% endif %} {% if page.metadata.get('status') %} {{ page.metadata.get('status') }} {% endif %}
{% if page.metadata.get('summary') %}

{{ page.metadata.get('summary') }}

{% endif %}
{# Added Features #} {% if page.metadata.get('added') and page.metadata.get('added') is iterable and page.metadata.get('added') is not string %}

✨ Added

    {% for item in page.metadata.get('added') %}
  • {{ item }}
  • {% endfor %}
{% endif %} {# Changed/Improved #} {% if page.metadata.get('changed') and page.metadata.get('changed') is iterable and page.metadata.get('changed') is not string %}

🔄 Changed

    {% for item in page.metadata.get('changed') %}
  • {{ item }}
  • {% endfor %}
{% endif %} {# Fixed Bugs #} {% if page.metadata.get('fixed') and page.metadata.get('fixed') is iterable and page.metadata.get('fixed') is not string %}

🐛 Fixed

    {% for item in page.metadata.get('fixed') %}
  • {{ item }}
  • {% endfor %}
{% endif %} {# Deprecated #} {% if page.metadata.get('deprecated') and page.metadata.get('deprecated') is iterable and page.metadata.get('deprecated') is not string %}

⚠️ Deprecated

    {% for item in page.metadata.get('deprecated') %}
  • {{ item }}
  • {% endfor %}
{% endif %} {# Removed #} {% if page.metadata.get('removed') and page.metadata.get('removed') is iterable and page.metadata.get('removed') is not string %}

🗑️ Removed

    {% for item in page.metadata.get('removed') %}
  • {{ item }}
  • {% endfor %}
{% endif %} {# Security #} {% if page.metadata.get('security') and page.metadata.get('security') is iterable and page.metadata.get('security') is not string %}

🔒 Security

    {% for item in page.metadata.get('security') %}
  • {{ item }}
  • {% endfor %}
{% endif %} {# Breaking Changes #} {% if page.metadata.get('breaking') and page.metadata.get('breaking') is iterable and page.metadata.get('breaking') is not string %}

⚡ Breaking Changes

    {% for item in page.metadata.get('breaking') %}
  • {{ item }}
  • {% endfor %}
{% endif %} {# Main content (detailed release notes) #} {% if content and content.strip() %}
{{ content | safe }}
{% endif %} {# Links #} {% if page.metadata.get('github_release') or page.metadata.get('download_url') %} {% endif %}
{% endblock %}