import { useEffect, useState } from "react";
import { useStore } from "../store/useStore";
import { getVersion } from "../api/client";
import { SessionMenu } from "./SessionMenu";
/** Barre supérieure : conversation courante, ressources, statut Ollama. */
export function TopBar() {
const status = useStore((s) => s.status);
const stats = useStore((s) => s.systemStats);
const connected = status?.connected ?? false;
const [version, setVersion] = useState("");
useEffect(() => {
getVersion().then(setVersion);
}, []);
return (
{/* La marque vit désormais dans la barre latérale : on ne garde ici que
le contexte de la conversation en cours. */}
{version && version !== "dev" && (
{version.slice(0, 7)}
)}
{/* Stats système temps réel : CPU, RAM, GPU/VRAM */}
{stats && (
CPU {stats.cpu_pct.toFixed(0)}%
·
RAM {stats.ram_pct.toFixed(0)}%
{stats.gpu && (
<>
·
GPU {stats.gpu.util_pct.toFixed(0)}%
VRAM {(stats.gpu.vram_used_mb / 1024).toFixed(1)}/
{(stats.gpu.vram_total_mb / 1024).toFixed(1)}G
>
)}
)}
{/* Statut Ollama */}
Ollama
{connected ? status?.host.replace(/^https?:\/\//, "") : "déconnecté"}
);
}