{% macro _t_identity(s) %}{{ s }}{% endmacro %} {#- i18n adapter (panel-rbac-i18n-refresh 4.3): this row renders from two contexts — the auth partial's loop (station as `stn`, translate helper as `t`) and the reclaim route's direct render, whose context key `t` is taken by the station row itself so the panel cannot inject the translate helper. Normalize both: `stn` is always the station; `tr` is translate when it reached us, else the identity macro above (zh passthrough — the next 15s poll replaces this transient swap with a fully-localized row). -#} {% set stn = t if t is not callable else stn %} {% set tr = t if t is callable else _t_identity %} {% set badge = {'launching': 'running', 'waiting_operator': 'refused', 'completed': 'success', 'failed': 'failed', 'timeout': 'zero_yield', 'reclaimed': 'cancelled'}.get(stn.status, 'no_op') %} #{{ stn.id }} {{ stn.source }} / {{ stn.account_alias }} {{ stn.status }} {{ stn.proxy_url_masked }} {{ stn.deadline_at or '—' }} {% if stn.error %}
{{ stn.error }}{% endif %} {% if stn.live %} {% else %} {#- A dead station's only useful action is to try again with the same identity: no re-registration, no hunting for the source name. Previously this cell was a bare —, which read as "nothing to do". The egress picker lets the operator move the login to another exit instead of being stuck with the auto-assigned one. -#}
{% if egresses %} {% endif %}
{% endif %}