{% extends "base.html" %} {% block title %}Updates · NEXXVU{% endblock %} {% block content %}

Portal software

Updates

Review a release, request authorization, then explicitly start its signed update.

Refresh status
{% if error %}{% endif %}

Current release

{{ state.health.release.semver or 'Development / unknown' }} · Schema {{ state.health.schema_level or 'unknown' }}

{{ state.health.release.git_sha or 'No deployed release identity' }}

{{ ('Installed or last updated: ' ~ state.health.release.last_successful_update_utc) if state.health.release.last_successful_update_utc else 'Installation time not recorded' }}

{{ 'Healthy' if state.health.ready else 'Update blocked: current release is not ready' }}

{% for reason in state.health.errors %}

{{ reason|replace('_',' ') }}

{% endfor %}
{% if not connected %}
Update control is unavailable. Ask the host administrator to configure the signed release catalog and update control socket. No execution is available.
{% endif %}

Available releases

Signature-verified offers published locally for this Portal. A release offer is not execution authorization.

{% for offer in state.offers %}

{{ offer.version }}

Schema {{ offer.schema_from }} → {{ offer.schema_to }}

Release notes

{{ offer.notes }}

{{ 'Eligible to request' if offer.eligible else 'Not eligible' }}

{% for reason in offer.reasons %}

{{ reason }}

{% endfor %} {% if offer.eligible %}
{% endif %}
{% else %}

No verified release offers are currently available.

{% endfor %} {% if state.transaction %}{% set tx=state.transaction %}

Update transaction

{{ tx.prior_release }} → {{ tx.requested_release }}

{{ tx.id }}

Progress: {{ tx.current_stage|replace('_',' ') }}

Outcome: {{ tx.final_result|replace('_',' ') if tx.final_result else 'Not completed' }}

{{ tx.safe_diagnostic or '' }}

{% if tx.current_stage == 'completed' and tx.final_result == 'succeeded' %}
Updated from {{ tx.prior_release }} to {{ tx.requested_release }} on {{ tx.updated_at }}. Identity, configuration and data were kept.
{% elif tx.final_result == 'rolled_back' %}
The update failed and the prior release was restored. Review the failure before requesting another release.
{% elif tx.current_stage == 'operator_required_stop' %}
Operator intervention required. Do not retry or reset this transaction.
{% elif tx.current_stage == 'failed' and tx.safe_diagnostic == 'StateConflict' and tx.events|length == 2 %}
This request was withdrawn before it started: the installation was reinstalled on another release. Nothing was changed. You can request a current release.
{% endif %}
    {% for event in tx.events %}
  1. {{ event.stage|replace('_',' ') }} — {{ event.created_at }}{% if event.safe_diagnostic %} · {{ event.safe_diagnostic }}{% endif %}
  2. {% endfor %}
{% if connected and tx.current_stage == 'requested' and not tx.final_result %} Download request for authorization {% if state.dispatch %}

Delivery dispatch was attempted. Delivery result: {{ state.dispatch.delivery.get('Result', 'unknown') if state.dispatch.delivery else 'unknown' }}. If progress has stopped, have the host operator inspect the pull unit and retained evidence. This screen will not launch the transaction again.

{% else %}

Have the signed per-Portal authorization published through the existing approval process, then start delivery. Missing or invalid authorization cannot reach the executor.

{% endif %}{% endif %}
{% endif %} {% endblock %} {% block scripts %}{% endblock %}