{deployment ? (deployment.action === 'destroy' ? 'Destroy ' : 'Create ') + deployment.server : 'Deployment'} | Electric Cherry
{#snippet crumbs()}{/snippet} {#if error}{/if} {#if detail?.collection}← Back to {detail.collection.name} collection{/if} {#if deployment}
{stateLabel(deployment.state)} {#if deployment.server_exists}View server{/if}

{deployment.state === 'done' ? (deployment.action === 'destroy' ? 'Server destroyed' : 'Server creation completed') : deployment.stage}

{explanation}

Total time {duration(deployment.started_at, deployment.finished_at ? new Date(deployment.finished_at).getTime() : now)}{#if active && stageStarted}This step {duration(stageStarted, now)}{/if}
{#if detail?.canResumeVerification}
{/if} {#if detail?.canResumeCleanup}
{/if} {#if deployment.error}{/if} {#each warnings as warning}

{warning}

{/each} {#if deployment.expected_map}

Expected map: {deployment.expected_map}

{/if}
Started
{fmt(deployment.started_at)}
Finished
{deployment.finished_at ? fmt(deployment.finished_at) : 'In progress'}
Requested by
{deployment.triggered_by}

Operation flow

    {#each steps as step, index}
  1. {index < currentStep ? '✓' : index + 1}{step}
  2. {/each}
{#if detail?.recipe}

{detail.blueprintName ? `Launched from ${detail.blueprintName}` : 'Recorded launch recipe'}

Reuse the original managed files with a fresh lobby and port. Review the launch to save it as a blueprint.

{/if}

Activity

{#if active}Updates automatically{/if}
{#if detail && detail.events.length > 0}
    {#each detail.events as event (event.id)}
  1. {event.message}

  2. {/each}
{:else}

This operation predates detailed activity tracking. Its recorded status and timestamps are shown above.

{/if}
{:else if !error}

Loading deployment...

{/if}