{% load i18n %} {% comment %} Threaded activity feed. Callers pass `activity` in context as a list of threads, each with {kind, title, icon, entries, visible_entries, hidden_entries, opened_at}. Pagination + per-thread collapse handled client-side via inject.js (wireActivityFeed). {% endcomment %} {% if activity %}
{% blocktrans with count=activity|length %}{{ count }} thread(s){% endblocktrans %}
{% for thread in activity %}
{{ thread.title }} {% blocktrans with count=thread.entries|length %}{{ count }} change(s){% endblocktrans %} · {% trans "opened" %} {{ thread.opened_at|date:"Y-m-d H:i" }}
{% if thread.hidden_entries %}
    {% for entry in thread.hidden_entries %} {% include "tcms_review/_activity_entry.html" with entry=entry %} {% endfor %}
{% endif %}
    {% for entry in thread.visible_entries %} {% include "tcms_review/_activity_entry.html" with entry=entry %} {% endfor %}
{% endfor %}
{% else %}

{% trans "No activity recorded yet." %}

{% endif %}