+
+
Chat
Recent messages from the game log · refreshes every 5 seconds
+
+ {#if !follow}{/if}
+
+
+
+ {#if error}{error} {loaded ? 'Showing the last loaded messages.' : ''}
{/if}
+ {#if !loaded && !error}
+ Loading chat…
+ {:else if loaded && !messages.length}
+ {missing ? 'Waiting for the game log. Player messages will appear here.' : 'No player messages in the recent game log.'}
+ {:else if messages.length}
+
+
+
+ {#each messages as message}
+ -
+ {message.time}
+
{message.player}{message.message}
+
+ {/each}
+
+
+ {/if}
+ Times are elapsed game-log times. Older messages may fall outside the recent log window.
+
+
+
diff --git a/src/lib/ui/components/ServerCard.svelte b/src/lib/ui/components/ServerCard.svelte
index a803785..1b9dabf 100644
--- a/src/lib/ui/components/ServerCard.svelte
+++ b/src/lib/ui/components/ServerCard.svelte
@@ -67,7 +67,7 @@
(roster ?? [])
.slice()
.sort((a, b) => b.score - a.score)
- .slice(0, 3)
+ .slice(0, 4)
);
let showRoster = $derived(health === 'online' || health === 'stale');
let title = $derived(serverTitle(name));
diff --git a/src/routes/servers/[name]/+page.svelte b/src/routes/servers/[name]/+page.svelte
index db29a6b..1967eab 100644
--- a/src/routes/servers/[name]/+page.svelte
+++ b/src/routes/servers/[name]/+page.svelte
@@ -18,6 +18,7 @@
import { elapsedSince } from '$ui/duration.js';
import PlayerScoreboard from '$ui/components/PlayerScoreboard.svelte';
import LogPanel from '$ui/components/LogPanel.svelte';
+ import ChatPanel from '$ui/components/ChatPanel.svelte';
import { gametypeLabel } from '$ui/gametype.js';
import { decodeRconError, rconFixHint } from '$ui/rconError.js';
import { komodoFixHint, type KomodoPortFailure } from '$ui/komodoError.js';
@@ -101,7 +102,7 @@
let rconProbe = $state