RCON diagnostic
{#if effectiveHealth === 'provisioning'}
Provisioning
{:else if effectiveHealth === 'starting'}
Waiting for container
{:else if hasDiagnosticIssue}
Issue
{:else}
Healthy
{/if}
{#if integrations}
Endpoint {endpointLabel(effectiveEndpoint)}
RCON password {integrations.rcon ? 'configured' : 'missing'}
Komodo {integrations.komodo ? 'configured' : 'missing'}
Timeout {integrations.rconTimeoutMs} ms
{/if}
{#if effectiveReason}
{effectiveReason}
{errorDetail}
{rconFixHint(effectiveReason)}
{:else if effectiveErr}
Error
{effectiveErr}
{/if}
{#if effectiveSnippet}
Raw reply ({effectiveSnippet.split('\n').length - 1} lines)
{effectiveSnippet}
{/if}
{#if effectiveEndpoint}
Probe RCON
{/if}
{#if !effectiveEndpoint && integrations?.komodo}
Probe Komodo
{/if}
Diagnose network
{#if rconProbe?.ok}
Connected
{rconProbe.status?.players ?? '?'} players
{#if rconProbe.status?.map} · map {rconProbe.status.map} {/if}
{#if rconProbe.status?.gametype} · {rconProbe.status.gametype}{/if}
{/if}
{#if netDiagnosis}
{#if netDiagnosis.ok && netDiagnosis.results}
{#if netDiagnosis.config}
KOMODO_ADDRESS = {netDiagnosis.config.komodoAddress ?? '(unset)'}
· RCON_HOST = {netDiagnosis.config.rconHost}
· probe timeout = {netDiagnosis.config.probeTimeoutMs} ms
{/if}
{:else}
Error
{netDiagnosis.error ?? 'network diagnostic failed'}
{/if}
{/if}
{#if komodoProbe}
{#if komodoProbe.ok}
Resolved
Port {komodoProbe.port} cached — RCON will retry on the next tick.
{#if komodoProbe.snippet}
Show response snippet
{komodoProbe.snippet}
{/if}
{:else}
{komodoProbe.reason}
{komodoProbe.detail}{#if komodoProbe.httpStatus} · HTTP {komodoProbe.httpStatus}{/if}
{#if komodoProbe.url}
Tried {komodoProbe.url}
{/if}
{#if komodoProbe.reason}
{komodoFixHint(komodoProbe.reason, komodoProbe.httpStatus)}
{/if}
{#if komodoProbe.snippet}
{komodoProbe.snippet}
{/if}
{/if}
{/if}
Configuration
Komodo {server.komodo_type} · {server.komodo_name}
RCON override {server.rcon_host ?? '(default)'}
Game port {server.game_port ?? '(unresolved)'}
Game {server.game ?? '(unset)'}
Map {server.map ?? '(unset)'}
{#if server.held.length > 0}
Held by beta {server.held.map((h) => `${h.target} (beta ${h.betaId})`).join(', ')}
{/if}
{/key}
{:else if activeTab === 'history'}
{#if operations.length}