From 6c5223e2621131b63b7f3282aaf93b3f98c204da Mon Sep 17 00:00:00 2001 From: Eric Lammertsma Date: Thu, 22 Jan 2026 12:26:37 -0500 Subject: [PATCH 1/5] Made numerous minor layout changes to main layout and sidebar --- .../dashboard/[search_space_id]/layout.tsx | 6 ---- .../components/dashboard-breadcrumb.tsx | 5 +-- .../layout/providers/LayoutDataProvider.tsx | 8 +---- .../components/layout/ui/sidebar/Sidebar.tsx | 10 +++--- .../layout/ui/sidebar/SidebarHeader.tsx | 8 ++++- .../components/new-chat/model-selector.tsx | 33 +++++++++++-------- surfsense_web/messages/en.json | 1 + surfsense_web/messages/zh.json | 1 + 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/surfsense_web/app/dashboard/[search_space_id]/layout.tsx b/surfsense_web/app/dashboard/[search_space_id]/layout.tsx index 1631f00b9..e434d85fb 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/layout.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/layout.tsx @@ -39,12 +39,6 @@ export default function DashboardLayout({ icon: "SquareLibrary", items: [], }, - { - title: "Logs", - url: `/dashboard/${search_space_id}/logs`, - icon: "Logs", - items: [], - }, ]; return ( diff --git a/surfsense_web/components/dashboard-breadcrumb.tsx b/surfsense_web/components/dashboard-breadcrumb.tsx index 0e9374fdd..223c4764a 100644 --- a/surfsense_web/components/dashboard-breadcrumb.tsx +++ b/surfsense_web/components/dashboard-breadcrumb.tsx @@ -76,9 +76,6 @@ export function DashboardBreadcrumb() { const segments = path.split("/").filter(Boolean); const breadcrumbs: BreadcrumbItemInterface[] = []; - // Always start with Dashboard - breadcrumbs.push({ label: t("dashboard"), href: "/dashboard" }); - // Handle search space if (segments[0] === "dashboard" && segments[1]) { // Use the actual search space name if available, otherwise fall back to the ID @@ -182,7 +179,7 @@ export function DashboardBreadcrumb() { const breadcrumbs = generateBreadcrumbs(pathname); - if (breadcrumbs.length <= 1) { + if (breadcrumbs.length === 0) { return null; // Don't show breadcrumbs for root dashboard } diff --git a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx index 7f55e295f..f382aa395 100644 --- a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx +++ b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx @@ -2,7 +2,7 @@ import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useAtomValue } from "jotai"; -import { LogOut, Logs, SquareLibrary, Trash2 } from "lucide-react"; +import { LogOut, SquareLibrary, Trash2 } from "lucide-react"; import { useParams, usePathname, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { useTheme } from "next-themes"; @@ -151,12 +151,6 @@ export function LayoutDataProvider({ icon: SquareLibrary, isActive: pathname?.includes("/documents"), }, - { - title: "Logs", - url: `/dashboard/${searchSpaceId}/logs`, - icon: Logs, - isActive: pathname?.includes("/logs"), - }, ], [searchSpaceId, pathname] ); diff --git a/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx b/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx index 9a632506c..d87bf61e6 100644 --- a/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx @@ -95,6 +95,11 @@ export function Sidebar({ )} + {/* Platform navigation */} + {navItems.length > 0 && ( + + )} + {/* New chat button */}
{isCollapsed ? ( @@ -115,11 +120,6 @@ export function Sidebar({ )}
- {/* Platform navigation */} - {navItems.length > 0 && ( - - )} - {/* Scrollable content */} {isCollapsed ? ( diff --git a/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx b/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx index 6ca057819..4ed212b47 100644 --- a/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx +++ b/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx @@ -1,6 +1,7 @@ "use client"; -import { ChevronsUpDown, Settings, Users } from "lucide-react"; +import { ChevronsUpDown, ScrollText, Settings, Users } from "lucide-react"; +import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { Button } from "@/components/ui/button"; import { @@ -29,6 +30,7 @@ export function SidebarHeader({ className, }: SidebarHeaderProps) { const t = useTranslations("sidebar"); + const router = useRouter(); return (
@@ -52,6 +54,10 @@ export function SidebarHeader({ {t("manage_members")} + router.push(`/dashboard/${searchSpace?.id}/logs`)}> + + {t("logs")} + diff --git a/surfsense_web/components/new-chat/model-selector.tsx b/surfsense_web/components/new-chat/model-selector.tsx index ead378e86..5693c0b15 100644 --- a/surfsense_web/components/new-chat/model-selector.tsx +++ b/surfsense_web/components/new-chat/model-selector.tsx @@ -124,6 +124,11 @@ export function ModelSelector({ onEdit, onAddNew, className }: ModelSelectorProp ); }, [userConfigs, searchQuery]); + // Total model count for conditional search display + const totalModels = useMemo(() => { + return (globalConfigs?.length ?? 0) + (userConfigs?.length ?? 0); + }, [globalConfigs, userConfigs]); + const handleSelectConfig = useCallback( async (config: NewLLMConfigPublic | GlobalNewLLMConfig) => { // If already selected, just close @@ -230,15 +235,17 @@ export function ModelSelector({ onEdit, onAddNew, className }: ModelSelectorProp
)} -
- -
+ {totalModels > 3 && ( +
+ +
+ )} @@ -264,7 +271,7 @@ export function ModelSelector({ onEdit, onAddNew, className }: ModelSelectorProp value={`global-${config.id}`} onSelect={() => handleSelectConfig(config)} className={cn( - "mx-2 rounded-lg mb-1 cursor-pointer", + "mx-2 rounded-lg mb-1 cursor-pointer group", "aria-selected:bg-accent/50", isSelected && "bg-accent/80" )} @@ -295,7 +302,7 @@ export function ModelSelector({ onEdit, onAddNew, className }: ModelSelectorProp