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 IslandExtras from "~/components/nook/IslandExtras"; import PhoneBeta from "~/components/nook/PhoneBeta"; 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"; /* * Downloads are logged and resolved server-side. `/api/the-nook/download` * records the click in the analytics buffer, then 302s to the latest * release dmg the appcast names. Pointing the button straight at the * enclosure would skip the funnel's second step entirely. */ function downloadNook() { window.location.href = "/api/the-nook/download"; } export default function NookLanding() { const site = useSite(); const { isDark } = useDarkMode(); const brandColor = () => 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.2+ · 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

{/* ── Everything else: marquee + live module bento ───────────── */} {/* ── iPhone + Watch companion, TestFlight beta ──────────────── */} {/* ── CTA ──────────────────────────────────────────────────────── */}

Try it free for 14 days

Orchestrate your coding agents, take control of your fans and battery, give every app its own volume, capture your screen, and keep your day in the notch. 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.

); }