{% extends "base.html" %} {% block title %}{{ pk.name }} (hosting) ยท {{ app_name }}{% endblock %} {% block body %}

๐Ÿบ {{ pk.name }} you host this pack ๐Ÿ“–

{% if minted %}

A {{ 'collar' if minted.offer == 'collar' else 'membership' }} tag โ€” give it to one pup, out of band. It is shown this once and stored nowhere; it works once and expires {{ minted.exp|local }}.

{{ minted.tag }}
{% endif %}

A tag for a new member

{% if not public_url %}

โš  Set this den's public address first (Settings โ†’ Packs).

{% endif %}
{% if pk.handler_kind != 'none' %} {% endif %}

Members

{% for m in members %}

{{ m.name or 'a pup' }} {{ m.status }} fingerprint {{ m.fp }}{% if m.fp_confirmed_at %} ยท compared{% endif %} {% if m.collar_on_at and not m.collar_off_at %} ยท ๐Ÿ”— wears your collar{% endif %}

{% if not m.fp_confirmed_at %}
{% endif %} {% if m.status == 'pending' %}
{% endif %} {% if m.card_handler %} {% if m.card_handler.paused %}

๐Ÿ›‘ They paused โ€” nothing is shown and no command lands.

{% else %}
What they show you {% for ph in m.card_handler.photos or [] %}{% if ph.sha %}a photo they show you{% endif %}{% endfor %}
{{ m.card_handler|tojson(indent=2) }}
{% endif %} {% endif %} {% if m.grants_stmt %}
What they granted
{{ m.grants_stmt.grants|tojson(indent=2) }}
{% endif %} {% if m.status == 'active' and pk.handler_kind != 'none' and not is_ai %}
Ask something of them {% if m.paused %}

๐Ÿ›‘ They paused โ€” nothing can be queued for them until they resume, so these are off.

{% endif %} {% for k in cmd_kinds %}{% set f = m.forms[k] %}
{{ k[4:] }}{% if not f.granted %} not granted โ€” their box will refuse{% elif f.no_room %} their daily cap is under one step{% endif %} {% if k == 'cmd.add_time' %} {% elif k == 'cmd.freeze' %} {% elif k == 'cmd.assign' %} {% elif k == 'cmd.prompt' %} {% elif k == 'cmd.line' %} {% elif k == 'cmd.maintenance' %} {% endif %}
{% endfor %}

Their box decides: what they granted, their daily caps and ceiling, their safeword. The largest amounts above are what their cap allows in a day โ€” what was already used today still counts.

{% endif %} {% if m.over_cap_today %}

{{ m.over_cap_today }} command{{ '' if m.over_cap_today == 1 else 's' }} refused over their cap today.

{% endif %} {% if m.results %}
What their box answered
    {% for r in m.results %}
  • {{ r.cmd }} โ†’ {{ r.code or 'not yet' }}
  • {% endfor %}
{% endif %} {% if m.status == 'active' %}
{% endif %} {% if m.status == 'pending' %}
{% endif %}
{% else %}

No members yet.

{% endfor %} {% if invited %}

{{ invited|length }} tag{{ '' if invited|length == 1 else 's' }} out, not yet used.

{% endif %}
{% if pending %}

Asked to countersign

{% for r in pending %}

{{ r.member.name or 'a pup' }} โ€” {{ r.body.kind }} {{ ((r.body.claim or {}).badge or {}).title or '' }}

{% endfor %}

A countersignature says it is dated inside your collar โ€” not that you saw it happen.

{% if pk.countersign == 'auto' or is_ai %}

This pack countersigns automatically: these came in while this box's Pup ID could not sign (locked, or sealed at rest โ€” the den's own listener cannot unlock it). Unlocked here, they are signed at the next sync โ€” or click.

{% endif %}
{% endif %} {% if alumni %}

Alumni

{% endif %} {% endblock %}