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