diff --git a/panel/src/components/LogConsole.tsx b/panel/src/components/LogConsole.tsx index bfd92dc..bf268cc 100644 --- a/panel/src/components/LogConsole.tsx +++ b/panel/src/components/LogConsole.tsx @@ -47,7 +47,7 @@ function StatusIndicator({ status }: { status: StreamStatus }) { * read history it stops yanking you down and offers a "Jump to latest" pill; * scrolling back to the bottom re-pins. The buffer is bounded by the controller. */ -export function LogConsole({ url }: { url: string }) { +export function LogConsole({ url, className }: { url: string; className?: string }) { const { t } = useTranslation("servers"); const { lines, status, clear, reconnect } = useLogStream(url); const scrollRef = useRef(null); @@ -72,7 +72,7 @@ export function LogConsole({ url }: { url: string }) { const jumpToLatest = useCallback(() => setPinned(true), []); return ( -
+
{/* Toolbar */}
diff --git a/panel/src/pages/ServerConsole.tsx b/panel/src/pages/ServerConsole.tsx index 5dfd391..9edf7c8 100644 --- a/panel/src/pages/ServerConsole.tsx +++ b/panel/src/pages/ServerConsole.tsx @@ -2,7 +2,7 @@ import { useState, useRef, useCallback, useLayoutEffect, type KeyboardEvent } fr import { Link, useParams } from "react-router-dom"; import { ArrowLeft, Terminal, Moon, ShieldAlert, HelpCircle, Loader2, Users, Archive, ChevronRight, type LucideIcon } from "lucide-react"; import { useTranslation } from "react-i18next"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { PhaseBadge } from "@/components/PhaseBadge"; import { LogConsole } from "@/components/LogConsole"; @@ -240,29 +240,29 @@ export function ServerConsole() {
{/* Left/Main column: Console */}
- - - - {t("console_card_title")} - - - + + {!streamable ? ( -
+
) : cfg ? ( -
- {/* key on name so navigating between servers remounts the viewport - (fresh stream + scroll state). useLogStream also resets its - controller when the url changes, so this is belt-and-suspenders. */} - +
+ {data.phase === "Running" && ( - +
+ +
)}
) : ( - +
+ +
)}