{% for row in rows %}
{% include "_row.html" %}
{% else %}
{# ``after`` is set only on a paging request: an exhausted page is not an empty
result set, so it must not claim there is nothing here. #}
{% if not after %}
Nothing matches this view yet.
{% endif %}
{% endfor %}
{% if cursor %}
{# The trigger row swaps *itself* for the next page plus a fresh trigger, so rows
accumulate. Its URL carries the current search and filters: the next page has
to be drawn from the same result set the reader is already looking at. #}