{#snippet filterFields(suffix: string)}
{#if server === undefined} {/if} {#if server === undefined}
{ event.preventDefault(); update({ q: search.trim() }); if (suffix) filtersOpen = false; }} > Press Enter to search by server name.
{/if} {#if suffix} {/if}
{/snippet}
{@render filterFields('')}
{data?.total ?? '—'} matches{filters.map ? ` · ${data?.maps.find((map) => map.key === filters.map)?.name ?? 'Selected map'}` : ''}
{@render filterFields('-mobile')} {#snippet actions()}{/snippet}
Times in {$timeZone}{filters.days ? ` · Last ${filters.days} days` : ''}{#if hasFilters}{/if}{#if !error}{/if}
{#if error}{/if} {#if loading} {:else if loadedUrl !== apiUrl && error} {:else if data?.matches.length}
{#each sorts.filter((item) => item.key !== 'started') as item} {/each} {#each data.matches as match (match.id)} {@const reporting = match.status === 'active' && !match.server_deleted_at && freshStatusTimestamp(timestampISO(match.lastReportedAt) ?? null, now)} {@const notReporting = match.status === 'active' && !reporting} {@const status = notReporting ? 'Not reporting' : match.status === 'active' ? 'In progress' : match.status === 'completed' ? 'Completed' : 'Interrupted'} {@const duration = match.status === 'active' ? reporting ? elapsedSince(timestampISO(match.startedAt) ?? null, now) : null : match.durationMs === null ? null : formatDuration(match.durationMs)} {/each}
Matches sorted by {sorts .find((item) => item.key === filters.sort) ?.label.toLowerCase()}, {filters.direction === 'desc' ? 'highest or newest' : 'lowest or oldest'} first
MatchStatus
{#if match.status === 'completed'}{match.map} · Match #{match.id} {:else if reporting}{match.map} {:else}{match.map}{/if} · {status}{duration !== null ? ` · ${duration}` : ''} {#if notReporting}Last report {/if} {#if server === undefined}
{matchInstanceLabel(match)}{#if match.server_deleted_at} · Historical instance{/if}
{/if}
{status}{#if notReporting}Last report {/if} {match.uniquePlayers} {duration ?? '—'} {match.status === 'completed' ? (match.finalRound ?? '—') : (match.observedRound ?? '—')}{#if match.status !== 'completed'}Highest observed{/if}
{:else if !error} {#snippet actions()}{#if hasFilters}{/if}{/snippet} {/if} Players counts unique players observed throughout the match.
About match history

Players counts unique players across all reports. A dash means the value is unavailable, not zero. In-progress matches show elapsed time since their recorded start and link to the live server while reports are current. Otherwise, they show Not reporting with the last report time. Completed durations require a recorded start and completed ending. Round shows the final round for completed matches and the highest observed round for unfinished matches. Open a completed match for exact timestamps and starting and ending player counts.