Optional poops-images pipeline, smarter collections/watch behavior, and cross-platform fixes.
images runner via poops-images (images config).{% image %} output plus new exif and images filters.extraExts, exts).Single image with EXIF caption:
{% set meta = 'static/photo.jpeg' | exif %}
<figure>
{% image 'static/photo.jpeg', alt='Sendai at dusk' %}
{% if meta %}
<figcaption>
{{ meta.dateTime | date("MMMM D, YYYY") }}
{% if meta.gps %}
— <a href="{{ meta.gps.googleMapsUrl }}">{{ meta.gps.latitude.formatted }}, {{ meta.gps.longitude.formatted }}</a>
{% endif %}
</figcaption>
{% endif %}
</figure>
Gallery from the image cache:
{% for group in 'images' | images | sort(reverse=true, attribute='date') | groupby("date", "year") %}
<h2>{{ group.key }}</h2>
<div class="grid">
{% for img in group.items %}
<figure>
{% image img.path, alt='', sizes='(max-width: 640px) 50vw, 25vw' %}
</figure>
{% endfor %}
</div>
{% endfor %}
.poops-images-cache.json.mtime with a warning.poops-images logging defaults to verbose: false (set true for per-file logs).<img> attribute escaping.