diff --git a/src/app/page.tsx b/src/app/page.tsx index cc7e0bd..ea310e3 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,13 +1,13 @@ "use client"; import React, { useState, useEffect, useCallback, Suspense } from "react"; -import Image from "next/image"; import { useQueryState } from "nuqs"; import { AccountDialog } from "@/app/components/AccountDialog"; import { ChangePasswordDialog } from "@/app/components/ChangePasswordDialog"; import { ConfigDialog } from "@/app/components/ConfigDialog"; import { ErrorLogBell } from "@/app/components/ErrorLogBell"; import { ImageModelsDialog } from "@/app/components/ImageModelsDialog"; +import { SystemConfigDialog } from "@/app/components/system-config/SystemConfigDialog"; import { Button } from "@/components/ui/button"; import { DropdownMenu, @@ -29,6 +29,7 @@ import { PanelRight, PanelRightClose, LogOut, + ServerCog, SlidersHorizontal, UserRound, } from "lucide-react"; @@ -44,9 +45,15 @@ import { SkillsMarketplace } from "@/app/components/SkillsMarketplace"; import { MemoryPanel } from "@/app/components/MemoryPanel"; import { ScheduledTasksPanel } from "@/app/components/ScheduledTasksPanel"; import { ThemeToggle } from "@/app/components/ThemeToggle"; +import { VersionBadge } from "@/app/components/VersionBadge"; import { HealthIndicator } from "@/app/components/HealthIndicator"; import { InspectorPanel } from "@/app/components/InspectorPanel"; import { setThreadAutoApprove } from "@/lib/autoApprove"; +import { + DEFAULT_WORDMARK, + logoSrc, + usePublicSystemConfig, +} from "@/app/hooks/usePublicSystemConfig"; import type { MainChatReporter } from "@/lib/asyncAgents"; import { cn } from "@/lib/utils"; @@ -54,9 +61,11 @@ const FALLBACK_ASSISTANT_ID = "EvoScientist"; interface HomePageInnerProps { authEnabled: boolean; + isAdmin: boolean; } -function HomePageInner({ authEnabled }: HomePageInnerProps) { +function HomePageInner({ authEnabled, isAdmin }: HomePageInnerProps) { + const publicConfig = usePublicSystemConfig(); const [threadId, setThreadId] = useQueryState("threadId"); const [sidebar, setSidebar] = useQueryState("sidebar"); const [view, setView] = useQueryState("view"); @@ -75,6 +84,7 @@ function HomePageInner({ authEnabled }: HomePageInnerProps) { const [changePasswordOpen, setChangePasswordOpen] = useState(false); const [modelConfigOpen, setModelConfigOpen] = useState(false); const [imageModelsOpen, setImageModelsOpen] = useState(false); + const [systemConfigOpen, setSystemConfigOpen] = useState(false); // "Submit a message on the main thread" — registered by ChatInterface (only // while it's mounted, i.e. on the chat view), used by the Agents board to loop // an async result back to the main agent. Null when not on the chat view. @@ -293,25 +303,31 @@ function HomePageInner({ authEnabled }: HomePageInnerProps) { open={imageModelsOpen} onOpenChange={setImageModelsOpen} /> +
- EvoScientist {/* Show the wordmark only when the thread sidebar is open (it titles the panel). When collapsed, keep just the logo + the toggle / new-chat icons for a compact header. */} {sidebar && ( -

- EvoScientist -

+
+

+ {publicConfig?.wordmark ?? DEFAULT_WORDMARK} +

+
+ +
+
)}
@@ -394,19 +410,6 @@ function HomePageInner({ authEnabled }: HomePageInnerProps) { /> )} -