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
++ Nothing lives at this address — but the newsroom does. +
+ + Back to the newsroom + +