diff --git a/apps/web/src/app/(main)/files/page.tsx b/apps/web/src/app/(main)/files/page.tsx index 6cb560d..6be80b3 100644 --- a/apps/web/src/app/(main)/files/page.tsx +++ b/apps/web/src/app/(main)/files/page.tsx @@ -133,7 +133,10 @@ export default function FilesPage(): React.ReactElement { return; } setSource("live"); - setError(errorMessage(err)); + const message = errorMessage(err); + // Solo accounts have no collective yet: the API's validation text leaks + // an implementation detail, so give the human next step instead. + setError(/groupid/i.test(message) ? "Files live inside a collective — create or join one, then its library appears here." : message); }) .finally(() => { if (!controller.signal.aborted) setLoading(false); diff --git a/apps/web/src/app/not-found.tsx b/apps/web/src/app/not-found.tsx new file mode 100644 index 0000000..9ceb6e9 --- /dev/null +++ b/apps/web/src/app/not-found.tsx @@ -0,0 +1,19 @@ +import Link from "next/link"; + +export default function NotFound(): React.ReactElement { + return ( +
+

404

+

This page was silenced. Our stories aren't.

+

+ Nothing lives at this address — but the newsroom does. +

+ + Back to the newsroom + +
+ ); +} diff --git a/apps/web/src/components/shell/sidebar.tsx b/apps/web/src/components/shell/sidebar.tsx index f43b888..9b9750c 100644 --- a/apps/web/src/components/shell/sidebar.tsx +++ b/apps/web/src/components/shell/sidebar.tsx @@ -42,7 +42,7 @@ export function Sidebar(): React.ReactElement {
-
Tactical Media Broadcast Hub
+
Tactical Media Broadcast Hub
{workspaceName} ▾