{#if loadingError} {:else if !loaded}

Loading maps…

{:else}
{preview?.name ? serverTitle(preview.name) : (maps.find((map) => map.slug === mapSlug)?.friendly ?? 'Choose a map')}

Uses the current production setup when the server starts.

{#if checking}Checking availability… {:else} {hostStatus.missingGames.length ? 'Game files missing' : hostStatus.filesReady ? 'Game files ready' : 'Game files preparing'} {#if preview?.hasSavedKey}Key available{/if} Automatic host & port {/if}
{#if launchError}{/if} {#if missingKey}

No unused {game === 't5' ? 'Black Ops I' : 'Black Ops II'} keys are available.

Manage keys ↗
{/if} {#if hostStatus.error} {:else if !hostStatus.loading && hostStatus.missingGames.length}

Upload game files before launching.

Manage game files ↗
{:else if !hostStatus.loading && !imageValid}

Enter a valid runtime image in Advanced settings.

{:else if view.error && hostStatus.hasHosts}{/if} {#if !hostStatus.loading && !hostStatus.error && !hostStatus.hasHosts}

Add a host to run your server.

Manage hosts ↗
{/if} {#each checksBlocked as check}

{check.detail}

{/each} {#if !checking && !unconfirmedLaunch && (view.error || hostStatus.error || missingKey || checksBlocked.length)}{/if} {#if open}{/if} {#if preview}
Setup details
Server ID
{preview.name ?? 'No lobby available'}
Configuration
{preview.recipe.configSource}
Container image
{preview.recipe.image}
{#if hostStatus.uploadedAt}
Game files uploaded
{$timeFormat.dateTime(hostStatus.uploadedAt)}
{/if}

{preview.recipe.files.length} managed files

    {#each preview.recipe.files as file}
  • {file.name}{file.version === null ? 'Generated' : `v${file.version}`} · {file.kind}
    {file.path}
  • {/each}
{/if} {/if}
{#snippet actions()}

{footerStatus}

{/snippet}