Commit Graph
257 Commits
Author SHA1 Message Date
Matthew Meszaros 152f626469 feat: remove the free trial: a new hosted workspace starts on the free plan with no time limit, may hold up to 10 mailboxes (connected directly or through a linked self-hosted instance) and warm them in the free pool, and everything else (campaigns, inbox, contacts, CRM, integrations, API keys, audit) sits behind a Starter lock in the sidebar and a SubscriptionGate overlay until a plan is active; the pool-link allowance now counts every mailbox in the workspace, and the marketing site and guide say free workspace instead of 14-day trial 2026-08-29 08:34:22 -07:00
Matthew Meszaros 37b60b59d3 feat: let a self-hosted instance warm its mailboxes in the hosted pool: device-code link approved at /connect, instance-token API that enrolls SMTP/IMAP mailboxes as warmup-only accounts (no history import, non-warmup mail dropped), free for 10 mailboxes and unlimited on the seeded $15 pool plan, tier fallback to proven healthy mailboxes when a pool runs thin, local warmup stands down for enrolled mailboxes, Settings > Warmbly Cloud step flow and linked-instances page, docs guide, marketing copy, and fix SetWarmupLifecycle re-reading the row with an org-scoped lookup so every warmup start/pause returned 404 2026-08-29 07:09:04 -07:00
Matt 46beea4884 feat: keep cd warmbly in the self-host terminal so make up runs inside the cloned repository instead of the parent directory where no Makefile exists 2026-08-27 16:12:09 +02:00
Matt 932a29cda4 feat: replace the how-we-differ comparison table with six drawn guardrail cards joined into one connected panel like pricing, showing the cap bar, send spacing dots, the 10-vs-80 percent quarantine axis, the warmup staircase, auth check pills and the real CampaignLimitDefault constant, and rebuild the changelog into a plinth release feed on a rail that dissolves off the bottom edge with its columns mirrored against the open-source split below 2026-08-27 16:05:46 +02:00
Matt 4426278f9b feat: redesign the personalization section as a rendered-per-recipient artifact, one template panel beside three recipient results showing the if branch, the else branch and the default fallback with color-coded merge, spintax and fallback spans plus a feature grid covering custom CSV fields with spaces, coercing helper functions, nested spintax, per-step A/B variants, real-engine preview and launch-blocking validation 2026-08-27 15:44:18 +02:00
Matt 13ddfc6607 feat: rebuild the index bento as layered product-UI artifact cards with viewport-gated continuous motion, join the pricing tiers into one connected panel with yearly savings and log-scaled volume meters in place of the dedicated-IPs bullet, redesign the open-source band from the dark cloud gradient into a light repo-browser-plus-terminal plinth, drop the templating section separator borders, and update pool copy so self-hosted instances connect to the shared warmup pool with a free tier 2026-08-27 15:31:00 +02:00
Matthew Meszaros 8bd2c2b57a feat: make self-hosting work end to end and rewrite the guide around what was tested (#97) 2026-08-13 09:47:46 +02:00
Matthew Meszaros a7518a8558 docs: refresh the documentation site, fix inaccurate claims and contact addresses, add SEO primitives (#90)
* feat: rewrite the self-hosting docs against repo ground truth: turn the deployment guide into a full self-host guide (quick start with first-admin bootstrap via make grant-admin, .env secrets with exact key formats, PUBLIC_HOST derivation and HTTPS reverse-proxy vars, provider switches with build-tag caveats, mailbox OAuth, remote worker enrollment via SSH or wmenroll tokens, real CI image tags, upgrades and backups), rewrite the events page around the real NATS/Kafka bus topics and {type,body} envelopes, fix Kafka-era and make-target claims in architecture/local-development/deploy README, add API_PUBLIC_URL and drop the dead LOG_DISCORD_WEBHOOK_URL in env.example, and remove the docker-compose.kafka.yml comment pointing at a file that does not exist

* feat: make the self-hosting docs visual and skimmable by adding a Mermaid MDX component (client-rendered, theme-aware) to the docs site, condensing the self-host guide around a control-plane topology diagram, a worker enrollment sequence diagram, a dashboard screenshot, and symptom/check troubleshooting + optional-subsystem tables, and adding an execution-plane flowchart to the architecture page

* feat: stop the docs root flashing a 'Continue to the Warmbly docs' link before redirecting by navigating with an inline location.replace that runs during HTML parse, and demoting the visible link and meta refresh to no-JS fallbacks inside noscript

* feat: cut docs bulk and duplication by deleting three orphaned API pages that were stale forks of the reference section and were unreachable from the sidebar (porting their unique social sign-in, promo-code, and referral endpoints into api/reference/account-org.mdx as compact tables), condensing the deliverability and warmup guides to roughly half their length around tables instead of prose, replacing prose em dashes across the guides and MCP pages, and adding the required trailing slashes to internal links in 24 files

* feat: condense the sequences guide by about 40 percent, folding the switch-step deciders and branch conditions into tables and cutting restated prose while keeping every rule about threading, instant branches, reply matching, and stop on reply

* feat: condense the automations, unibox, advisor, and expressions guides by roughly 40 percent each, folding trigger lists, action catalogs, sending controls, and advisor checks into tables, adding a trigger-condition-action flow diagram to automations, and cutting restated prose while preserving every threshold, permission boundary, and rule

* feat: condense the mailboxes, campaigns, analytics, and team-roles guides by roughly 45 percent each, replacing prose walks through providers, rotation modes, lead statuses, counting rules, A/B confidence, and the permission matrix with compact tables and collapsing the four-way role grid into one capability table plus a one-line mapping

* feat: condense the AI-steps, security, and contacts-CRM guides by roughly 40 percent, turning sign-in methods, AI step modes, switch deciders, credit and failure behavior, import field mappings, and deal views into tables while keeping every safety boundary and dedupe rule

* feat: condense the meetings, notifications, AI-credits, and AI-assistant guides by roughly 40 percent, merging notification categories and their defaults into one table, collapsing credit costs, spend controls, and plan allowances into tables, and tightening the assistant page around its approval and permission boundaries

* feat: condense the integrations, collaboration, zapier, and make guides by roughly 35 percent, grouping the thirty-row Zapier and Make action lists into eight labelled areas, folding CRM default field mappings and presence indicators into tables, and promoting the destructive-action and unattended-delete warnings into callouts

* fix: correct three factual errors in the development docs: NOTIFICATION_EMAIL_DAILY_CAP=0 means uncapped rather than disabled (overEmailBudget returns false at limit<=0, so documenting it as a kill switch inverted the behavior), and the worker-SSH and warmup-pool migration citations in architecture.mdx pointed at pre-squash filenames that no longer exist or now belong to unrelated migrations, so both now cite the tables in 000001_baseline.up.sql

* feat: add the missing docs SEO primitives: a build-time sitemap.xml covering all 64 pages, a robots.txt that points at it and keeps the llms.mdx and og mirrors out of the index as duplicate content, and per-page canonical plus richer OpenGraph URL/title/description metadata

* fix: use the single real team@warmbly.com address everywhere a human is told to write in, replacing the invented hello/sales/legal/support inboxes across the marketing site, the transactional email footer, and the admin outreach composer default Reply-To (which pointed replies at a mailbox that does not exist), and collapse the contact page's two-inbox framing into one inbox with one published response time
2026-08-05 10:37:27 +02:00
Matthew Meszaros cca3bd5ba0 fix: keep the marketing site on sharp 0.34.5 since 0.35 breaks its Cloudflare build, bump svgo to 4.0.2, and suppress the remaining build-only sharp HIGH in the documented .trivyignore 2026-07-22 17:53:13 +02:00
Matthew Meszaros 66e9856ea8 fix: bump sharp to 0.35 in docs and site and linkify-it to 5.0.2 in web via pnpm overrides to clear the HIGH-severity Trivy CVEs blocking the security scan 2026-07-22 17:33:52 +02:00
Matthew Meszaros 14587b9cd1 feat: swap the OG and Twitter social image for the new Social.jpg and update its width and height to 1280x640 2026-07-22 17:05:08 +02:00
Matthew Meszaros d4b201eef0 fix: bump axios and js-yaml to clear the trivy security scan 2026-07-21 17:59:46 +02:00
Matthew Meszaros 2af4bd084e copy: say largest instead of biggest across the marketing site 2026-07-20 11:21:57 +02:00
Matthew Meszaros 3b3fc0fe62 feat: show the iOS app showcase on the homepage, slotted between the integrations feature section and the automations centerpiece so the sky band breaks up two light sections 2026-07-16 18:43:11 +02:00
Matthew Meszaros c68ee02a20 feat: drive the mobile showcase — scale-to-fit phone stage capped at real-device size, story segments that fill and auto-advance the screens with tap-to-jump, cycling push notifications with long quiet gaps, and an IntersectionObserver lifecycle that pauses everything off-screen 2026-07-16 18:43:02 +02:00
Matthew Meszaros 28830a2718 feat: style the mobile showcase motion — screen slide transitions, status-bar glyph cross-fade, notification drop-in under the Dynamic Island, health-ring and chart draw-in states, phone entrance reveal, and prefers-reduced-motion fallbacks 2026-07-16 18:42:51 +02:00
Matthew Meszaros cc1a35e835 feat: add the MobileAppShowcase section markup — sky band with a story-bar switcher and a bottom-cut iPhone whose Home/Inbox/Campaigns screens recreate the SwiftUI app 1:1 on a 393pt canvas (AirSkyWash hero, gradient-stroke stat chips, health rings, unibox and campaign rows, fixed status bar, frosted notification with the real app icon) 2026-07-16 18:42:37 +02:00
Matthew Meszaros 69c634a68c feat: ship the real Warmbly iOS app icon (AppIcon-Light downscaled to a 10KB 128px png) as site/public/brand/app-icon.png for the mobile showcase notification banner 2026-07-16 18:42:27 +02:00
Matthew Meszaros fb5e22030e feat: wire per-post cover frontmatter into the nine remaining blog posts so each renders its own grid thumbnail and og/twitter card 2026-07-07 07:15:06 +02:00
Matthew Meszaros d2afbf9319 feat: rewrite the quarantine-early blog post with the four-band health table, sample-size floors, engagement-signal rule, and earned re-entry 2026-07-07 07:15:06 +02:00
Matthew Meszaros bba7a8fcb3 feat: rewrite the bulk sender rules blog post to full cluster length, converting it to mdx and covering the current Google and Microsoft 5000-a-day SPF DKIM DMARC alignment enforcement bar 2026-07-07 07:15:06 +02:00
Matthew Meszaros 339e3495b2 feat: add eleven 1200x600 webp blog cover images (29-59KB each) under public/blog for post grid thumbnails and social share cards 2026-07-07 07:15:06 +02:00
Matthew Meszaros f6a6a310ac feat: enrich blog structured data with BreadcrumbList, wordCount, keywords, inLanguage, articleSection, and a per-post share image on BlogPosting 2026-07-06 06:28:11 +02:00
Matthew Meszaros 721aced30f feat: replace the social OG card with the Figma export as an optimized 52KB mozjpeg JPG (1200x600) and switch every og:image reference from PNG to JPG 2026-07-06 06:28:11 +02:00
Matthew Meszaros 1f38604fcd feat: cross-link the three existing blog posts into the new warmup, sending, and deliverability topic clusters with contextual internal links 2026-07-06 06:28:11 +02:00
Matthew Meszaros 074f484c43 feat: add eight SEO blog posts on cold email sending limits, warmup mechanics, delivery vs inbox placement, DMARC alignment, reputation recovery, and self-hosting 2026-07-06 06:28:11 +02:00
Matthew Meszaros 5809247980 style: replace an em dash with a colon in the terms usage-limits clause to match the no-em-dash copy rule 2026-07-06 06:28:11 +02:00
Matthew Meszaros 7aa1390f21 feat: add FAQPage JSON-LD to /faq, correct the per-user to per-organization DEK claim, and drop em dashes from two answers 2026-07-06 06:28:11 +02:00
Matthew Meszaros 534f6eb263 fix: correct the encryption claim from per-user to per-organization DEKs on the about, trust, and integrations pages to match the envelope-encryption model 2026-07-06 06:27:43 +02:00
Matthew Meszaros dcf50cb99a feat: change the trial to three mailboxes everywhere and add free-tier limitation copy (unfilled warmup pool, for evaluation not production) on the homepage and pricing page 2026-07-06 06:27:43 +02:00
Matthew Meszaros a9384ca72c feat: add reciprocal Deep dives blog link blocks to the warmup, sending, and deliverability pillar pages so clusters link both directions 2026-07-06 06:27:43 +02:00
Matthew Meszaros 71a4275e59 feat: surface the self-host warmup pool notice on the warmup page and sharpen the open-source section caveat that the pool needs the cloud 2026-07-06 06:27:43 +02:00
Matthew Meszaros d9c8d3c9bd feat: add a reusable PillarPosts component for a 'Deep dives' blog link block on pillar pages 2026-07-06 06:27:43 +02:00
Matthew Meszaros e37a340bb4 feat: add a reusable WarmupPoolNotice component explaining the shared warmup pool is a cloud feature a single self-hosted instance cannot replicate 2026-07-06 06:27:43 +02:00
Matthew Meszaros 1d4357e4af feat: add a site-wide coming-soon launch banner (LaunchBanner) announcing Warmbly Cloud and the shared warmup pool with a waitlist CTA, rendered above the header in Layout 2026-07-06 06:27:43 +02:00
Matthew Meszaros af4fa7b1d2 Merge remote-tracking branch 'origin/main' into referral-credits 2026-06-28 06:38:50 +00:00
Matthew Meszaros 2187af0470 fix(security): migrate site from Astro 5.18 to 6.4.8 (and @astrojs/mdx to 6, sitemap to 3.7.3) to clear CVE-2026-50146 and CVE-2026-54299; build verified, 35 pages 2026-06-28 06:21:16 +00:00
Matthew Meszaros ceb54c25c3 fix(security): bump site transitive vite to 6.4.3 to clear the vite server.fs.deny bypass CVE-2026-53571 2026-06-28 06:09:35 +00:00
Matthew Meszaros dce555689f feat: add the referral program marketing page and a Product footer link in site 2026-06-28 05:10:04 +00:00
Matthew Meszaros 3b987f38d0 feat: replace the fabricated SDK code samples and First-class SDKs claims on the developers page with honest plain-HTTP examples and an accurate OpenAPI-and-generate-your-own-client story 2026-06-13 07:29:17 +02:00
Matthew Meszaros fa83e55763 Merge pull request #47 from warmbly/feature/redesign-developers-page
feat: redesign developers page
2026-06-11 07:18:26 +02:00
Matthew Meszaros 65455b907d feat: redesign developer page content 2026-06-11 05:15:56 +00:00
Matthew Meszaros 78b8a73fa8 feat: refactor developer page data model 2026-06-11 05:15:34 +00:00
Matthew Meszaros dcc68f6eb4 feat: add automations navigation and featured product entry 2026-06-11 06:11:42 +02:00
Matthew Meszaros 79935060ef feat: add automations landing page and homepage showcase 2026-06-11 06:11:33 +02:00
Matthew Meszaros 1e4116ab0f Merge remote-tracking branch 'origin/main' into chore/update-docs
# Conflicts:
#	site/src/components/Header.astro
#	site/src/layouts/Learn.astro
#	site/src/pages/learn/cold-email-rules.astro
#	site/src/pages/learn/deliverability.astro
#	site/src/pages/learn/email-warmup.astro
#	site/src/pages/learn/glossary.astro
#	site/src/pages/learn/inbox-placement.astro
#	site/src/pages/learn/index.astro
#	site/src/pages/learn/personalization.astro
#	site/src/pages/learn/reputation-recovery.astro
#	site/src/pages/learn/spf-dkim-dmarc.astro
#	site/src/pages/learn/warmup-pools.astro
2026-06-10 18:35:12 +02:00
Matthew Meszaros 9706458b10 feat: move the marketing site learn articles into a docs learn tab and point every site learn link at docs.warmbly.com 2026-06-10 18:27:42 +02:00
Matthew Meszaros 9cc42546a4 feat: align the deliverability handbook with the registry and real caps
The hand-rolled flagship page now reads the shared learn registry for its
rail (it had drifted and was missing an essay), emits the BlogPosting
JSON-LD every other essay already had, and corrects its repeated 100/day
per-mailbox claim: the product default is 50/day, with 100 only as the
validation ceiling under positive reputation evidence.
2026-06-10 17:16:07 +02:00
Matthew Meszaros 0f5fd64580 feat: give learn essays editorial headlines and repair broken copy
Every essay passes a real display headline instead of surfacing its SEO
title as the H1. Repairs roughly forty sentences left broken by an
earlier em-dash strip ('The safest assumption. for them. is spammer.')
using colons, commas and real sentence splits. Drops the internal DEK
term from the customer-facing glossary.
2026-06-10 17:16:07 +02:00
Matthew Meszaros 9ebc776d1b feat: rework the learn article layout
Adds a headline prop so the visible H1 stops rendering the SEO title
suffix ('... | Warmbly'), real prev/next navigation from the registry, a
sticky top bar with reading progress, a mobile on-this-page disclosure
(there was no TOC below desktop), hover heading anchors, and the shared
.article-prose typography. The rail no longer flashes 'Loading...'.
2026-06-10 17:15:43 +02:00