feat: add a reusable WarmupPoolNotice component explaining the shared warmup pool is a cloud feature a single self-hosted instance cannot replicate

This commit is contained in:
Matthew Meszaros
2026-07-06 06:27:43 +02:00
parent 1d4357e4af
commit e37a340bb4
@@ -0,0 +1,42 @@
---
/**
* Reusable notice: the shared warmup pool is a cloud feature, and a single
* self-hosted instance starts with an empty pool. Drop it on any light-
* background page where a reader might assume self-hosting gives them a
* working warmup pool (warmup, deliverability, open-source sections).
*
* The numbers and behaviour match the warmup pool model in the repo
* (internal/repository/pg_warmup.go, migration 000010).
*/
import Icon from './Icon.astro';
interface Props {
/** extra margin/utility classes on the outer card */
class?: string;
/** show the cloud waitlist link (default true) */
showWaitlist?: boolean;
}
const { class: className = '', showWaitlist = true } = Astro.props;
---
<aside class={`rounded-[14px] ring-1 ring-[color:var(--border)] bg-white overflow-hidden shadow-[var(--shadow-sm)] ${className}`}>
<div class="flex items-start gap-4 p-5 md:p-6">
<span class="shrink-0 mt-0.5 w-9 h-9 rounded-lg bg-sky-50 ring-1 ring-sky-100 grid place-items-center text-[color:var(--sky-6)]">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" aria-hidden="true"><rect width="20" height="8" x="2" y="2" rx="2"/><rect width="20" height="8" x="2" y="14" rx="2"/><path d="M6 6h.01M6 18h.01"/></svg>
</span>
<div class="min-w-0">
<div class="text-[10.5px] uppercase tracking-[0.18em] font-mono text-muted-foreground mb-1.5">Self-hosting and the warmup pool</div>
<p class="text-[14px] text-foreground/80 leading-relaxed">
The shared warmup pool runs on Warmbly Cloud. It works because a large base of vetted mailboxes send and reply to each other, and any mailbox that starts landing in spam gets quarantined. A self-hosted instance starts with an empty pool, so warmup has no healthy partners to exchange mail with. To run your own pool you need many real, monitored mailboxes and the ongoing work to keep them clean.
</p>
<p class="mt-2.5 text-[14px] text-foreground/80 leading-relaxed">
Everything else runs on your own infrastructure: sending, sequences, the unified inbox, CRM, tracking, and the API.
</p>
{showWaitlist && (
<a href="https://app.warmbly.com" class="mt-3 inline-flex items-center gap-1.5 text-[13px] font-medium text-[#0369a1] hover:text-[#075985]">
Want the pool without running the mailboxes? Join the cloud waitlist
<Icon name="arrowRight" size={12} />
</a>
)}
</div>
</div>
</aside>