feat: add log viewer components and fix build issues
Some checks failed
Build and Push Docker Image to Gitea / build-and-push (push) Failing after 53s

- Add LogViewer component with syntax highlighting and auto-scroll
- Add LogControls for play/pause, auto-scroll, refresh, download, clear
- Add LogSearch component with search highlighting
- Add Input UI component
- Fix TypeScript type issues in ProcessCard and types.ts
- Fix XML-RPC client type issues
- Add force-dynamic to layout to prevent SSR issues with client components
- Add mounted state to Navbar for theme toggle hydration
- Add custom 404 page

Components added:
- components/logs/LogViewer.tsx - Main log viewer with real-time display
- components/logs/LogControls.tsx - Control panel for log viewing
- components/logs/LogSearch.tsx - Search input for filtering logs
- components/ui/input.tsx - Reusable input component

Fixes:
- ProcessStateCode type casting in ProcessCard
- XML-RPC client options type (use any to avoid library type issues)
- canStartProcess/canStopProcess type assertions
- Dynamic rendering to prevent SSR hydration issues

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-23 18:43:55 +01:00
parent e0cfd371c0
commit 5bda617339
11 changed files with 308 additions and 26 deletions

View File

@@ -14,6 +14,9 @@ export const metadata: Metadata = {
description: 'Modern web interface for Supervisor process management',
};
// Force dynamic rendering
export const dynamic = 'force-dynamic';
export default function RootLayout({
children,
}: Readonly<{

17
app/not-found.tsx Normal file
View File

@@ -0,0 +1,17 @@
import Link from 'next/link';
import { Button } from '@/components/ui/button';
export default function NotFound() {
return (
<div className="flex flex-col items-center justify-center min-h-[60vh] text-center px-4">
<h1 className="text-6xl font-bold mb-4">404</h1>
<h2 className="text-2xl font-semibold mb-2">Page Not Found</h2>
<p className="text-muted-foreground mb-8">
The page you're looking for doesn't exist.
</p>
<Link href="/">
<Button>Go Home</Button>
</Link>
</div>
);
}