From 35986239c1901c585f4ac1d67a2adbb17a28bc16 Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Sun, 4 Oct 2026 23:33:11 -0400 Subject: [PATCH] nook: dispatch /agents, /changelog and /faq at the top level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The new subdomain pages 404ed in production: the vercel.json host rewrites do not fire — SSR sees /agents, never /nook/agents — so pages that only exist under src/routes/nook/* are unreachable from the subdomain. Every pre-existing subdomain surface survives on top-level host-dispatch routes (index, privacy, checkout, deletion), which is why only the new pages broke. Give the three pages the same dispatch, falling back to 404 on other sites. Tests: full bun test run unchanged (539 pass); vinxi build clean. Issue: FRE-12 --- src/routes/agents.tsx | 24 ++++++++++++++++++++++++ src/routes/changelog.tsx | 23 +++++++++++++++++++++++ src/routes/faq.tsx | 23 +++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 src/routes/agents.tsx create mode 100644 src/routes/changelog.tsx create mode 100644 src/routes/faq.tsx diff --git a/src/routes/agents.tsx b/src/routes/agents.tsx new file mode 100644 index 0000000..0adb861 --- /dev/null +++ b/src/routes/agents.tsx @@ -0,0 +1,24 @@ +import { Switch, Match } from "solid-js"; +import { useSite } from "~/context/SiteContext"; +import NotFound from "./[...404]"; +import NookAgentsPage from "./nook/agents"; + +/** + * Host-aware agents route — `/agents`. + * + * The supported-agents page is a Nook-subdomain surface; all other sites + * fall back to 404. Mirrors the dispatch pattern in `src/routes/index.tsx` + * and `src/routes/checkout.tsx` — and like them, this is what makes the + * page render at all: production does not apply the vercel.json host + * rewrites (SSR sees `/agents`, never `/nook/agents`). + */ +export default function AgentsPage() { + const site = useSite(); + return ( + }> + + + + + ); +} diff --git a/src/routes/changelog.tsx b/src/routes/changelog.tsx new file mode 100644 index 0000000..e918f8a --- /dev/null +++ b/src/routes/changelog.tsx @@ -0,0 +1,23 @@ +import { Switch, Match } from "solid-js"; +import { useSite } from "~/context/SiteContext"; +import NotFound from "./[...404]"; +import NookChangelogPage from "./nook/changelog"; + +/** + * Host-aware changelog route — `/changelog`. + * + * The release-notes page is a Nook-subdomain surface; all other sites fall + * back to 404. Mirrors the dispatch pattern in `src/routes/index.tsx` and + * `src/routes/checkout.tsx` — production does not apply the vercel.json + * host rewrites (SSR sees `/changelog`, never `/nook/changelog`). + */ +export default function ChangelogPage() { + const site = useSite(); + return ( + }> + + + + + ); +} diff --git a/src/routes/faq.tsx b/src/routes/faq.tsx new file mode 100644 index 0000000..5d664df --- /dev/null +++ b/src/routes/faq.tsx @@ -0,0 +1,23 @@ +import { Switch, Match } from "solid-js"; +import { useSite } from "~/context/SiteContext"; +import NotFound from "./[...404]"; +import NookFaqPage from "./nook/faq"; + +/** + * Host-aware FAQ route — `/faq`. + * + * The FAQ is a Nook-subdomain surface; all other sites fall back to 404. + * Mirrors the dispatch pattern in `src/routes/index.tsx` and + * `src/routes/checkout.tsx` — production does not apply the vercel.json + * host rewrites (SSR sees `/faq`, never `/nook/faq`). + */ +export default function FaqPage() { + const site = useSite(); + return ( + }> + + + + + ); +}