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 ? ( -
+