From 5574ffd1c80105f9e26be9b5db738ee685e032cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Mon, 17 Aug 2026 03:12:19 +0200 Subject: [PATCH] Add a minimal 404 page matching the app's style Two boundaries share the same content: src/app/not-found.tsx catches genuinely unmatched URLs (rendered bare in the root layout), and (app)/not-found.tsx catches notFound() calls from within app routes (already used by scripts/[scriptId] and runs/[runId]) so it renders nested inside AppLayout, keeping nav and footer visible. Co-Authored-By: Claude Sonnet 5 --- src/app/(app)/not-found.tsx | 5 ++++ src/app/not-found.tsx | 5 ++++ src/components/layout/not-found-content.tsx | 29 +++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 src/app/(app)/not-found.tsx create mode 100644 src/app/not-found.tsx create mode 100644 src/components/layout/not-found-content.tsx diff --git a/src/app/(app)/not-found.tsx b/src/app/(app)/not-found.tsx new file mode 100644 index 0000000..b211262 --- /dev/null +++ b/src/app/(app)/not-found.tsx @@ -0,0 +1,5 @@ +import { NotFoundContent } from "@/components/layout/not-found-content"; + +export default function NotFound() { + return ; +} diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx new file mode 100644 index 0000000..b211262 --- /dev/null +++ b/src/app/not-found.tsx @@ -0,0 +1,5 @@ +import { NotFoundContent } from "@/components/layout/not-found-content"; + +export default function NotFound() { + return ; +} diff --git a/src/components/layout/not-found-content.tsx b/src/components/layout/not-found-content.tsx new file mode 100644 index 0000000..2db1ab4 --- /dev/null +++ b/src/components/layout/not-found-content.tsx @@ -0,0 +1,29 @@ +import Link from "next/link"; +import { Home } from "lucide-react"; +import { buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; + +export function NotFoundContent() { + return ( +
+ + 404 + +

Page not found

+

+ The page you’re looking for doesn’t exist or may have been + moved. +

+ + + Back to dashboard + +
+ ); +}