From 8c8a6e130f6302ceae4a3faa54dd725febb2b437 Mon Sep 17 00:00:00 2001 From: MaheshtheDev <38828053+MaheshtheDev@users.noreply.github.com> Date: Wed, 6 May 2026 22:29:21 +0000 Subject: [PATCH] feat: nova dashboard improvements with theme (#905) ![image.png](https://app.graphite.com/user-attachments/assets/234115bd-9b60-4d3d-b17c-c27a79dcb2f2.png) --- apps/web/app/(app)/page.tsx | 26 +++--- .../chat/chat-graph-context-rail.tsx | 10 ++- .../components/chat/home-chat-composer.tsx | 4 +- apps/web/components/chat/input/actions.tsx | 6 +- apps/web/components/chat/input/index.tsx | 8 +- apps/web/components/chat/model-selector.tsx | 18 ++-- apps/web/components/dashboard-view.tsx | 84 +++++++++---------- apps/web/components/highlights-card.tsx | 32 +++---- apps/web/globals.css | 12 +++ 9 files changed, 107 insertions(+), 93 deletions(-) diff --git a/apps/web/app/(app)/page.tsx b/apps/web/app/(app)/page.tsx index ff3c73bf..e7d7caff 100644 --- a/apps/web/app/(app)/page.tsx +++ b/apps/web/app/(app)/page.tsx @@ -56,6 +56,7 @@ import { qParam, docParam, fullscreenParam, + threadParam, type IntegrationParamValue, } from "@/lib/search-params" import { getChatSpaceDisplayLabel } from "@/lib/chat-space-label" @@ -152,6 +153,7 @@ export default function NewPage() { "fullscreen", fullscreenParam, ) + const [, setThreadIdUrl] = useQueryState("thread", threadParam) // Ephemeral local state (not worth URL-encoding) const [fullscreenInitialContent, setFullscreenInitialContent] = useState("") @@ -168,6 +170,10 @@ export default function NewPage() { if (!docId) setSelectedDocument(null) }, [docId]) + useEffect(() => { + if (viewMode === "dashboard") void setThreadIdUrl(null) + }, [viewMode, setThreadIdUrl]) + // Resolve document from cache when loading with ?doc= (deep link / refresh) useEffect(() => { if (!docId || selectedDocument) return @@ -512,7 +518,7 @@ export default function NewPage() { const isGraphMode = viewMode === "graph" && !isMobile const isMemoriesDesktop = viewMode === "list" && !isMobile const isHomeDesktop = viewMode === "dashboard" && !isMobile - const showNovaBackdrop = isGraphMode || isMemoriesDesktop + const showNovaBackdrop = isGraphMode || isMemoriesDesktop || isHomeDesktop const isDashboardShell = viewMode === "dashboard" || (viewMode === "graph" && isMobile) @@ -520,31 +526,23 @@ export default function NewPage() {
{showNovaBackdrop && ( <>
)} @@ -716,7 +714,7 @@ export default function NewPage() { {isDashboardShell && (
diff --git a/apps/web/components/chat/chat-graph-context-rail.tsx b/apps/web/components/chat/chat-graph-context-rail.tsx index f4c7d928..5e712cf7 100644 --- a/apps/web/components/chat/chat-graph-context-rail.tsx +++ b/apps/web/components/chat/chat-graph-context-rail.tsx @@ -3,6 +3,7 @@ import { useMemo } from "react" import type { UIMessage } from "@ai-sdk/react" import { MemoryGraph } from "@/components/memory-graph" +import { AnimatedGradientBackground } from "@/components/animated-gradient-background" import { useProject } from "@/stores" import { extractHighlightDocumentIdsFromMessages } from "@/lib/chat-highlight-documents" import { cn } from "@lib/utils" @@ -25,11 +26,14 @@ export function ChatGraphContextRail({
+ +
+

Memory map

@@ -38,8 +42,8 @@ export function ChatGraphContextRail({ : "Memories used by Nova will be highlighted here"}

-
-
+
+
- + {chatSpaceLabel}
diff --git a/apps/web/components/chat/input/actions.tsx b/apps/web/components/chat/input/actions.tsx index a8b2351d..44f8132f 100644 --- a/apps/web/components/chat/input/actions.tsx +++ b/apps/web/components/chat/input/actions.tsx @@ -14,10 +14,10 @@ export function SendButton({ onClick={onClick} disabled={disabled} className={cn( - "bg-[#000000] border-[#161F2C] border p-2 rounded-lg shrink-0 transition-opacity", + "bg-surface-card border-surface-border border p-2 rounded-lg shrink-0 transition-opacity", disabled ? "opacity-50 cursor-not-allowed" - : "cursor-pointer hover:bg-[#161F2C]", + : "cursor-pointer hover:bg-surface-hover", )} > void }) { diff --git a/apps/web/components/chat/input/index.tsx b/apps/web/components/chat/input/index.tsx index d88e34fa..b1ee1109 100644 --- a/apps/web/components/chat/input/index.tsx +++ b/apps/web/components/chat/input/index.tsx @@ -122,14 +122,14 @@ export default function ChatInput({ ) : null} {stackedToolbar ? ( -
+