{#- Carte du fil immersif (#1268) — vraies données billet. Partagé par feed.html et le fragment /feed/suite. Le survol charge l'embed PeerTube (data-embed) ; YouTube reste poster + clic. Les couloirs se peuplent via /activity/. -#} {% for b in billets %} {%- set eu = b.embed_url or '' -%} {%- set is_pt = b.embed_is_video and 'peertube' in eu -%} {%- set is_yt = b.embed_is_video and ('youtube' in eu or 'youtu.be' in eu) -%} {%- set prov = 'pt' if is_pt else ('yt' if is_yt else '') -%} {%- set cover = (b.media | selectattr('thumb') | list | first) if b.media else None -%} {%- set poster = ('/media/' ~ cover.thumb) if cover else (b.poster or b.embed_snapshot_url) -%}
{% if prov %}{{ 'PeerTube · souverain' if is_pt else 'YouTube' }}{% endif %} {% if poster %}
{% else %}
{% endif %} {% if is_pt %}
{% endif %}
{{ '▶' if b.embed_is_video else '✎' }}
{% if is_pt %}
↺ reprise à
🔇 muet — clic pour le son
{% endif %}
{{ b.cat }} {{ '📡' if b.style=='communique' else ('🎬' if b.embed_is_video else '📝') }} {% if b.published_at %}{{ b.published_at[:10] }}{% endif %}

{{ b.title or (b.summary[:64] ~ '…' if b.summary else 'Billet') }}

{% if b.summary %}

{{ b.summary }}

{% endif %}
ouvrir ↗
{% endfor %}