 }}&preview=1&t={{ now|int }})
Nothing is uploaded anywhere โ the card is drawn on the box and handed to you.
{% for k, label in kinds.items() %} {% if k != 'milestone' or held %} {{ label }} {% endif %} {% endfor %}
Right now is the live state โ one moment, the one in the corner of the card. The last stretch counts a span and prints its dates, so it never claims a calendar week it is only part of the way through. One badge is a record of when something was earned: every number on it is as it stood then, not as it stands today. {%- if not held %} It appears here once you have earned a badge.{% endif %}
{% if kind == 'week' %}{% for n in [7, 14, 30, 90] %} {{ n }} days {% endfor %}
{% endif %} {% if kind == 'milestone' %}The card is drawn in the badge's own metal โ โ common, โ uncommon, โ rare, โ epic, โ legendary โ the same five the badge art uses.
{% endif %}{% for t in themes %} {{ t.label }} {% endfor %}
{% for t in themes if t.name == theme %}{{ t.blurb }}{% endfor %}
{% for s in shapes %} {{ s }} {% endfor %}
story 9:16 for a story or a message ยท square 1:1 ยท wide 1.91:1 for a link preview. Wide is short, so it carries stats only โ no photo.
In this order, top-left first. The grid holds {{ 3 if shape == 'wide' else (3 if photo else 6) }} on this shape{{ ' with a photo' if photo }} โ the rest are carried but not drawn. A stat with nothing to say at this moment is left out rather than printed as a zero, so the card lays out what resolved, never what you asked for.
{% for tid in ids %} {% set rest = ids[:loop.index0] + ids[loop.index0 + 1:] %} {% set up = ids[:loop.index0 - 1] + [tid, ids[loop.index0 - 1]] + ids[loop.index0 + 1:] if not loop.first else ids %} {% if not loop.first %}โ{% endif %} {{ labels.get(tid, tid) }} โ {% else %} None โ the card will have no stat grid at all. {% endfor %}
โบ back to the default list {% if ids %}clear all{% endif %}
Whatever is set here applies to this card only and lives in the link. To change what a card starts with, edit the token list in Settings โ Stamps & recap.
{% for group, items in offered|groupby('group') %}{{ group }}
{% for t in items if t.id not in ids %}
+ {{ t.label }}
{% endfor %}
This card already shows badges โ the ones {{ 'earned in the window' if kind == 'week' else 'you hold besides the one on the card' }}. If there are none it shows the events that moved the clock instead.
{% elif can_badges %}๐ show badges show recent events
The lower half of the card carries either the badges you have earned or the events that moved the clock most. A photo replaces both.
{% else %}No badges yet. They arrive on their own โ nothing has to be claimed. Until then the lower half of the card carries the events that moved the clock most.
{% endif %}A milestone card takes no photograph, on purpose. Its numbers are already as-of the day the badge was earned, and a picture from a third date on the same card is one moment more than anybody can keep straight.
{% elif shape == 'wide' %}The wide shape is too short to carry a picture without cropping it to a sliver, so it carries stats only. Switch to story or square for a photo.
{% else %} {% if photos %}Task verifications first, then everything else. The card burns the photo's own date and time into it โ the stats above it are from a different moment, and the card always says which is which.
{% else %}No photos yet. Verify a task with a picture, or use ๐ธ on the dashboard.
{% endif %} {% if photo %}Already rounded โ it was coarsened when the photo was saved, and the exact position was never written to disk, so this cannot be sharpened back. Recorded from {{ 'the photo itself' if chosen_photo.place_src == 'exif' else ('this device at upload time' if chosen_photo.place_src == 'browser' else 'a label you typed') }}. Change how coarse in Settings.
{% else %}This photo has no location โ its camera did not record one, or capture was off when it was saved. Nothing to include.
{% endif %} {% endif %} {% endif %}