Optimization Point
{{ issue.name }}
{{ issue.count }}
Affected
What this means
{{ issue.description }}
Affected Pages & Data
{# -------------------------------------------------------------------
Loop over issue.details (always set by add_issue).
We avoid "issue['items']" because in Jinja2 dict['items'] resolves
to the dict's .items() method, not a missing key.
------------------------------------------------------------------- #}
{% for item in issue.details %}
{# ── Branch A: {value, urls} — duplicate-group format ── #}
{% if item is mapping and item.value %}
{# ── Branch B: {url, …} — standard item with a URL ── #}
{% elif item is mapping and item.url %}
{% set _url = item.url | string %}
{% set _ext = _url.split('?')[0] %}
{% set _is_img = _ext.endswith('.jpg') or _ext.endswith('.jpeg') or _ext.endswith('.png') or _ext.endswith('.gif') or _ext.endswith('.webp') or _ext.endswith('.svg') or _ext.endswith('.ico') %}
{% set _is_page = _url.startswith('http') and not _is_img %}
{# ── Branch C: mapping without url — render the mapping values as info ── #}
{% elif item is mapping %}
{# ── Branch D: plain string that looks like a URL ── #}
{% elif item and item | string | trim | first | lower in 'h' and (item | string).startswith('http') %}
{% set _url2 = item | string %}
{# ── Branch E: plain string that is a MESSAGE (not a URL) ── #}
{% elif item %}
{% endif %}
{% else %}
{# Empty state — no items #}
{% endfor %}
{{ item.value }}
{% for url in item.urls %}
{% endfor %}
{# URL link or image path #}
{% if _is_page %}
{{ _url }}
{% else %}
{{ _url }}
{% endif %}
{# Metadata badges #}
{# Action buttons #}
{% if item.note %}
{{ item.note }}
{% endif %}
{% if item.count is not none and item.count != '' %}
{# Use 'words' label when the issue is about word count #}
{% if 'Word' in issue.name or 'word' in issue.name %}
{{ item.count }} words
{% elif 'Alt' in issue.name or 'alt' in issue.name %}
{{ item.count }} missing
{% else %}
{{ item.count }} items
{% endif %}
{% endif %}
{% if item.ratio is not none and item.ratio != '' %}
{{ item.ratio | round(1) }}%
{% endif %}
{% if item.status %}
HTTP {{ item.status }}
{% endif %}
{% for k, v in item.items() %}
{% if v %}{{ k }}: {{ v }} {% endif %}
{% endfor %}
{{ item }}
No detailed data available for this issue.