{% extends "dlux/base.html" %} {% load dlux_tags %} {% block title %}{{ DLUX_STRINGS.control_link_title|default:"Control Panel" }}{% endblock %} {% block extra_head %} {{ block.super }} {% include_once "dlux/forms/assets_head.html" %} {% endblock %} {% block content %}
{% dlux_card tag="section" class="dlux-control-hero" %}
{{ DLUX_STRINGS.control_link_kicker|default:"Composer agent" }}

{{ DLUX_STRINGS.control_link_title|default:"Control Panel" }}

{{ DLUX_STRINGS.control_link_desc|default:"Pair this application with your central control panel — no .env editing or redeploy." }}

{% if link.connection_status == 'connected' %} {{ DLUX_STRINGS.control_link_connected|default:"Connected" }} {% elif link.connection_status == 'pending' %} {{ DLUX_STRINGS.control_link_pending|default:"Pairing…" }} {% elif link.connection_status == 'disconnected' %} {{ DLUX_STRINGS.control_link_disconnected_badge|default:"Disconnected" }} {% else %} {{ DLUX_STRINGS.control_link_not_connected|default:"Not connected" }} {% endif %} {% enddlux_card %} {% if link.connection_status == 'disconnected' %} {% dlux_alert level="warning" class="dlux-control-notice" attrs="data-control-link-disconnected" %} {% if link.revoked %} {{ DLUX_STRINGS.control_link_revoked_title|default:"Control Panel access was revoked." }} {{ DLUX_STRINGS.control_link_revoked_note|default:"The control panel revoked this deployment's enrollment. Local updates still work; pair again below to reconnect." }} {% else %} {{ DLUX_STRINGS.control_link_disconnected_title|default:"Disconnected from the control panel." }} {{ DLUX_STRINGS.control_link_disconnected_note|default:"This deployment was connected but is no longer. Pair again below to reconnect." }} {% endif %} {% if link.control_url %}({{ link.control_url }}){% endif %} {% enddlux_alert %} {% endif %} {% if not link.bridge_available %} {% dlux_alert level="warning" class="dlux-control-notice" %} {{ DLUX_STRINGS.control_link_bridge_unavailable|default:"The agent runtime bridge is unavailable on this host." }} {% enddlux_alert %} {% endif %} {% if link.pending %} {% dlux_alert level="warning" class="dlux-control-notice dlux-control-notice--action" role="status" attrs="data-control-link-pending" %} {{ DLUX_STRINGS.control_link_pending_note|default:"Waiting for the agent to redeem the pairing token…" }}
{% csrf_token %}
{% enddlux_alert %} {% endif %} {% if link.queue_error %} {% dlux_alert level="danger" class="dlux-control-notice dlux-control-notice--action" %} {{ DLUX_STRINGS.control_link_queue_failed|default:"The update worker could not publish the pairing request:" }} {{ link.queue_error }}
{% csrf_token %}
{% enddlux_alert %} {% endif %} {% if link.last_enroll.state == "error" %} {% dlux_alert level="danger" class="dlux-control-notice" %} {{ DLUX_STRINGS.control_link_failed|default:"Last pairing failed:" }} {{ link.last_enroll.error|default:"unknown error" }} {% enddlux_alert %} {% endif %}
{% dlux_card tag="section" class="dlux-control-card dlux-control-card--form" %}

{% if link.enrolled %}{{ DLUX_STRINGS.control_link_repair_title|default:"Pair again" }}{% else %}{{ DLUX_STRINGS.control_link_connect_title|default:"Connect to control panel" }}{% endif %}

{% if link.enrolled %}

{{ DLUX_STRINGS.control_link_repair_hint|default:"To move this app to a different control panel, pair again below with a fresh token." }}

{% else %}

{{ DLUX_STRINGS.control_link_tile_desc|default:"Pair this app with your central control panel." }}

{% endif %}
{% csrf_token %}
{{ DLUX_STRINGS.control_link_token_help|default:"Generate it in the control panel: Add application → Create enrollment token." }}
{% enddlux_card %} {% dlux_card tag="aside" class="dlux-control-card dlux-control-card--status" %}

{{ DLUX_STRINGS.control_link_connection_title|default:"Connection details" }}

{{ DLUX_STRINGS.control_link_secure_note|default:"The one-use token is handed to the resident agent through the private runtime bridge and cleared after enrollment." }}

{% if link.enrolled %}
{{ DLUX_STRINGS.control_link_url_label|default:"Control panel URL" }}
{{ link.control_url|default:"—" }}
{{ DLUX_STRINGS.control_link_agent_id|default:"Agent ID" }}
{{ link.agent_id|default:"—" }}
{{ DLUX_STRINGS.control_link_agent_version|default:"Agent version" }}
{{ link.composer_version|default:"—" }}
{{ DLUX_STRINGS.control_link_enrolled_at|default:"Enrolled" }}
{{ link.enrolled_at|default:"—" }}
{{ DLUX_STRINGS.control_link_last_contact|default:"Last contact" }}
{{ link.last_contact_at|default:"—" }}
{% else %}
{{ DLUX_STRINGS.control_link_bridge_label|default:"Agent bridge" }}
{% if link.bridge_available %} {{ DLUX_STRINGS.control_link_bridge_ready|default:"Ready" }} {% else %} {{ DLUX_STRINGS.control_link_bridge_offline|default:"Unavailable" }} {% endif %}
{{ DLUX_STRINGS.control_link_transport_label|default:"Transport" }}
{{ DLUX_STRINGS.control_link_transport_value|default:"HTTPS required" }}
{{ DLUX_STRINGS.control_link_credential_label|default:"Enrollment" }}
{{ DLUX_STRINGS.control_link_credential_value|default:"One-use token" }}
{% endif %}
{% enddlux_card %}
{% endblock %} {% block scripts %} {{ block.super }} {% endblock %}