diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index c5693978..47fa7986 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,13 +1,11 @@
-import React from 'react'
-import { BrowserRouter as Router, Routes, Route, useLocation } from 'react-router-dom'
-import { AnimatePresence, motion, useReducedMotion } from 'framer-motion'
+import React, { Suspense, lazy } from 'react'
+import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
import { I18nextProvider } from 'react-i18next'
import i18n from './i18n'
import { WalletProvider } from './context/WalletContext'
import { ToastProvider } from './context/ToastContext'
import { NotificationProvider } from './context/NotificationContext'
import { ThemeProvider } from './context/ThemeContext'
-import { RouteProgressProvider } from './context/RouteProgressContext'
import { NotFoundPage } from './pages/NotFoundPage'
import AppShell from './components/layout/AppShell'
import LandingPage from './pages/LandingPage'
@@ -15,6 +13,7 @@ import ErrorBoundary from './components/common/ErrorBoundary'
import { ProtectedRoute } from './components/auth/ProtectedRoute'
import { CommandPalette } from './components/common/CommandPalette'
import { useCommandPalette } from './hooks/useCommandPalette'
+import { SkeletonCard } from './components/common/Skeleton'
import './components/common/Toast.css'
// Lazy-loaded pages
@@ -47,7 +46,7 @@ const RouteLoadingFallback: React.FC = () => (
* `` rather than beside it.
*/
const AppContent: React.FC = () => {
- const { isOpen, closePalette, search, recentSearches } = useCommandPalette()
+ const { isOpen, closePalette, search, recentSearches, runRecentSearch } = useCommandPalette()
return (
<>
@@ -57,60 +56,62 @@ const AppContent: React.FC = () => {
path="/*"
element={
-
-
-
-
- }
- />
-
-
-
- }
- />
-
-
-
- }
- />
-
-
-
- }
- />
-
-
-
- }
- />
-
-
-
- }
- />
- {import.meta.env.DEV && (
- } />
- )}
- } />
-
+ }>
+
+
+
+
+ }
+ />
+
+
+
+ }
+ />
+
+
+
+ }
+ />
+
+
+
+ }
+ />
+
+
+
+ }
+ />
+
+
+
+ }
+ />
+ {import.meta.env.DEV && (
+ } />
+ )}
+ } />
+
+
}
/>
diff --git a/frontend/src/components/agents/TaskSubmissionForm.tsx b/frontend/src/components/agents/TaskSubmissionForm.tsx
index 56cf7df7..5c6259fb 100644
--- a/frontend/src/components/agents/TaskSubmissionForm.tsx
+++ b/frontend/src/components/agents/TaskSubmissionForm.tsx
@@ -8,7 +8,6 @@ import { AlertCircle } from 'lucide-react';
import type { TFunction } from 'i18next';
import { DAGPreview } from './DAGPreview';
import { useTaskSubmit } from '../../hooks/useTaskSubmit';
-import { useToast } from '../../hooks/useToast';
import { useToast } from '../../context/ToastContext';
import { useTaskDraft } from '../../hooks/useTaskDraft';
import { buildLiveDag } from '../../utils/buildLiveDag';
diff --git a/frontend/src/components/landing/Hero.tsx b/frontend/src/components/landing/Hero.tsx
index d82b53ef..b3520158 100644
--- a/frontend/src/components/landing/Hero.tsx
+++ b/frontend/src/components/landing/Hero.tsx
@@ -24,8 +24,11 @@ const Hero: React.FC = () => {
const { canvasRef, prefersReducedMotion } = useParticles()
return (
-
{!prefersReducedMotion ? (
@@ -56,7 +59,7 @@ const Hero: React.FC = () => {
>
{t('landing.hero.badge')}
-
+
{/* Headline */}
{
,
]}
/>
-
+
{/* Subtext */}
{
className="text-base sm:text-lg text-text-secondary max-w-[540px] mx-auto mb-10 leading-[1.6]"
>
{t('landing.hero.subtitle')}
-
+
{/* CTAs */}
= ({
isDrawerOpen = false,
}) => {
const { publicKey, connected, ready, connectionMethod, disconnect } = useWallet()
- const { unreadCount } = useNotifications()
- const [isNotificationOpen, setIsNotificationOpen] = useState(false)
- const bellButtonRef = useRef(null)
const { t, i18n } = useTranslation()
const location = useLocation()
const { mode, setMode } = useTheme()
@@ -108,31 +103,7 @@ const TopNav: React.FC = ({
-
-
-
- setIsNotificationOpen(false)}
- anchorRef={bellButtonRef}
- />
-
+
{/* Theme toggle: cycles light -> dark -> system */}