{% extends "base.html" %} {% block content %}
{% if kept %} {# Kept boards render FIRST and look different on purpose: they are durable operator-facing things (the agent link board, standing reports) and the point of the lane is that they cannot be lost in a feed that turns over every day. No countdown — they have no expiry to advertise. #}

Kept · no expiry · {{ keep_marker }}

{% for b in kept %}
{% if b.thumb_url %} {% elif b.has_index %}
▦ page
{% elif b.kinds.video %}
▶ video
{% elif b.kinds.audio %}
♪ audio
{% else %}
◆ files
{% endif %} ★ kept
{{ b.name }}
{{ b.count }} item{{ '' if b.count == 1 else 's' }} · kept · ⬇ zip
{# No × here. Wiping a kept board should be a deliberate act — remove the sentinel first (it rejoins the sweep), or delete the folder by hand. A one-click wipe next to the durable stuff is a footgun. #}
{% endfor %}
{% if booths %}

Ephemeral · wiped {{ ttl_hours }}h after last activity

{% endif %} {% endif %} {% if not booths %} {% if not kept %}
No booths yet. Upload files above, or drop a folder into {{ data_dir }}.
{% endif %} {% else %}
{% for b in booths %}
{% if b.thumb_url %} {% elif b.has_index %}
▦ page
{% elif b.kinds.video %}
▶ video
{% elif b.kinds.audio %}
♪ audio
{% else %}
◆ files
{% endif %} {% if b.uploaded %}⬆ pickup{% endif %}
{{ b.name }}
{{ b.count }} item{{ '' if b.count == 1 else 's' }} · expires in {{ b.expires_in|dur }} · ⬇ zip
{% endfor %}
{% endif %} {% endblock %}