{# One application. This is the page the list links to, and it exists to answer the questions an operator would otherwise open an SSH session for: what is it, what runs it, what is in front of it, what was it told, and what has happened to it. The environment section reads and writes the application's own .env file through the same helper the CLI's `wasm env` commands use. Its secrets are masked by default, revealing one is audited, and editing it never restarts the application on its own: a database password is not something this screen changes as a side effect of the operator glancing at it. #} {% extends "base.html" %} {% import "_macros.html" as m %} {% block title %}{{ domain }}{% endblock %} {% block content %} {% call m.page_head(domain, status) %} {{ m.follow_button("Logs", domain, log_url) }} {{ m.action_button("Restart", restart_endpoint, none, "Restarted " ~ domain) }} {{ m.action_button("Stop", stop_endpoint, "Stop " ~ domain ~ "? The site stops answering until it is started again.", "Stopped " ~ domain) }} {{ m.action_button("Start", start_endpoint, none, "Started " ~ domain) }} {# No rows on this screen: the button targets itself and swaps nothing. The deletion is a job, and the job is reported by the feed and the activity screen. #} {{ m.danger_button("Delete", delete_endpoint, domain, delete_consequence, none, "this") }} {% endcall %}

Application

{{ m.badge(state, status) }}

{{ m.facts(facts) }}
{# The unit's own vital signs, loaded over htmx like the webhook and history sections below so the fragment lives entirely in views/app_charts.py. Reading the deployment history for the marks is store work the first paint should not wait on. The placeholder is the charts' own silhouette. #}

Resources

Reading resource history…

Certificate

{{ m.facts(certificate) }}

Issuing and renewal live on the certificates screen.

Service

{% if service %} {{ m.facts(service) }} {% else %}

No systemd unit is recorded for this application.

{% endif %}

Site

{% if site %} {{ m.facts(site) }} {% else %}

No web server configuration is recorded for this application.

{% endif %}

Environment

{% include "fragments/app_env.html" %}
{# The webhook, deployment history and rollback sections load over htmx rather than rendering inline, so they live entirely in views/deploy_form.py and views/deployments.py and this page's handler does not have to know they exist. Listing rollback points also walks the backup directory, which is work the first paint should not wait on. #}

Git webhook

Reading webhook state…

Deployments

Reading deployment history…

Rollback

Reading rollback points…

Recent jobs

{% if jobs %}
{% for job in jobs %} {% call m.row(job.name, job.state, [("result", job.status), ("finished", job.finished)], "/activity", "row-" ~ job.id) %} Open {% endcall %} {% endfor %}
{% else %}

Nothing has run against this application since the panel started.

{% endif %}
{% endblock %}