import { PageHead } from "~/components/PageHead"; import { EdgeCacheHeaders } from "~/components/EdgeCacheHeaders"; import SubdomainHeader from "~/components/SubdomainHeader"; import FeatureCollage from "~/components/nook/FeatureCollage"; import FeatureBreakdowns from "~/components/nook/FeatureBreakdowns"; import Button from "~/components/ui/Button"; import Input from "~/components/ui/Input"; import { createSignal, Show } from "solid-js"; import { useDarkMode } from "~/context/darkMode"; import { useSite } from "~/context/SiteContext"; /* The appcast's first enclosure always names the latest release dmg. */ async function downloadNook() { try { const res = await fetch("/api/TheNook/appcast.xml"); const xml = await res.text(); const url = xml.match(/ isDark() ? (site().brandColorDark ?? site().brandColor) : site().brandColor; const [resendEmail, setResendEmail] = createSignal(""); const [resendSending, setResendSending] = createSignal(false); const [resendSent, setResendSent] = createSignal(false); const [resendError, setResendError] = createSignal(false); const resendLicense = async () => { if (resendSending()) return; const email = resendEmail().trim(); if (!email) return; setResendSending(true); setResendSent(false); setResendError(false); try { const res = await fetch("/api/the-nook/resend-license", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ email }) }); if (!res.ok) throw new Error("resend failed"); setResendSent(true); } catch { setResendError(true); } finally { setResendSending(false); } }; return ( <> {/* ── Hero ─────────────────────────────────────────────────────── */} {/* -mt-14 pulls the hero under the sticky header; pt-14 re-clears content, so the gradient fills the full viewport incl. the bar */}
The Nook App Icon
The Nook

Your Mac and Agents, under control

Agent orchestration, fan and thermal control in a beautiful native UI.

macOS 14+ · 14-day free trial · up to 3 devices

Beta pricing · 33% off

$15{" "} $10 one-time

{/* ── Feature collage ─────────────────────────────────────────── */} {/* ── Feature breakdowns: the features in action ─────────────── */}

In action

Built for the way you actually run agents

{/* ── CTA ──────────────────────────────────────────────────────── */}

Try it free for 14 days

Orchestrate your coding agents, watch temperatures, take control of your fans, and keep background services quiet. When the trial ends, unlock everything with a single one-time payment — no subscription, ever.

Beta pricing — full price will be $15. One license covers up to 3 of your own Macs.

{/* ── Resend license ─────────────────────────────────────────── */}

Lost your license?

Enter the email you purchased with and we'll resend your key.

{ e.preventDefault(); resendLicense(); }} > setResendEmail(e.currentTarget.value)} />

Check your inbox — if a license is registered to that email, your key is on its way.

Something went wrong. Please try again.

); }