Commit Graph
613 Commits
Author SHA1 Message Date
Matthew Meszaros 454744b723 site(crm): cleaner deal-detail mock, dropped URL chrome, aligned buttons
- Removed the traffic-light + URL window chrome at the top.
- Header row now has an eyebrow 'DEAL · DEAL-2026-0184' label, big
  company name 'Stratech', then the Negotiation chip + primary
  contact line. Right side: 3 stat tiles (Value / Close / Weighted)
  with consistent label-to-value vertical rhythm.
- Sidebar uses a flex column with three logical blocks (Fields /
  Contact / Actions), each separated by hairline rule. The two
  action buttons are now a 2-col grid at the bottom of the sidebar
  (full-width per cell) so they line up.
- Activity timeline: each row now has a 3-column grid (icon /
  content / timestamp) so timestamps align right consistently.
  Dropped the legend chips above the timeline in favour of an
  event count.
- Footer label simplified.
2026-05-27 03:47:59 +00:00
Matthew Meszaros a6e9866928 site(crm): replace kanban with a real deal-detail view
The kanban-board mock was thin. Now the floating mock is a real
deal record screen:
- Window chrome with app.warmbly.com/deals/stratech-fy26-q2.
- Header row: company name + Negotiation chip + deal id + primary
  contact + Value ($45k) · Close (Jun 30) · Weighted ($27k · 60%).
- Left sidebar: deal fields (Value, Close date, Owner, Stage, Source,
  Probability), then the primary contact card (RC avatar, name, title,
  email, phone, tag chips) and Log activity / Add task buttons.
- Right side: activity timeline spanning 14 days with 8 events
  (sequence sends, replies, meeting, stage change, task, note),
  each with type chip (reply/meeting/stage/task/note/send), actor,
  and timestamp.
- Footer: two-way CRM sync line.
Reads like a real CRM record. Kanban data array is gone.
2026-05-27 03:30:21 +00:00
Matthew Meszaros 1d132a9f6c site(crm): shared hero + unique kanban + ER data model + contacts pane
- Hero: same HeroAtmosphere pattern with 'A CRM that lives next to
  your sending.' headline and platform eyebrow chip.
- Kanban mock floats below the hero with 5 stages (New / Reached /
  Demoed / Negotiation / Closed won) and color-tinted stage dots.
  Footer: 'Drag between stages... Two-way sync HubSpot/Salesforce/
  Pipedrive'.
- Data model section (unique): six entities laid out as a real
  three-column ER table with relations and cardinality on the right.
  Reads like a schema reference.
- Contacts power tools: split layout. Left: 4 numbered power-tool
  rows (Import wizard CSV/XLSX, Export CSV/XLSX/JSON, Dedup
  email/domain/key, Bulk update). Right: a real-looking contacts
  table mock with stage chips and a '2,431 rows · 0 dupes' status.
- FAQ: 4 CRM questions, smooth grid-rows accordion.
2026-05-26 15:53:44 +00:00
Matthew Meszaros 79ac50ab48 site(inbox): unique 3-pane product mock + classification action table
- Hero: same HeroAtmosphere as the other product pages.
- Unique floating mock: a 3-pane inbox view with filters sidebar
  (Inbox / Awaiting reply / Snoozed / Assigned to me / Suppressed +
  Classification chips), thread list in the middle, and a thread
  preview pane on the right showing the open thread, three auto-action
  lines that already fired (sequence paused / routed to assignee /
  posted to Slack), and Reply/Snooze/Assign buttons.
- Classifications action table: 6 rows (Positive, Negative, Referral,
  OOO, Unsubscribe, Bounce) each with the class chip, what it is
  detected on, and the deterministic auto-action.
- Capabilities: clean 2-col spec list (no icon grid), 6 numbered rows.
- FAQ: 4 reply questions with the grid-rows accordion.
2026-05-26 15:51:31 +00:00
Matthew Meszaros 901249ff5f site(analytics): full redesign with shared hero + unique body sections
- Hero: same HeroAtmosphere pattern as the other product pages, with
  'Numbers we trust. Not vanity opens.' headline + two CTAs.
- Drill-down ladder · unique: a single panel where six layers cascade
  with increasing left padding (workspace → pool → worker → mailbox →
  sequence → contact), each row has its own sky-shaded icon tile,
  layer label, and one-line description. Reads as a visual hierarchy.
- Signal vs noise: 2-col side-by-side. Left (emerald): 6 headline
  metrics with the 'why we trust it' rationale per row. Right (rose):
  3 ignored metrics with the 'why this is noise' reasoning (Apple Mail
  Privacy prefetch, cold-CTR incentive trap, unauditable vendor scores).
- Sample dashboard mock: clearly framed as illustrative. KPI strip
  with em-dash placeholders + sample-size disclaimer, placement chart
  with premium vs free pool lines, mailbox health histogram (75% / 17%
  / 6% / 2% across the four bands). Footnote that real data appears
  only after band sample-size thresholds are met.
- Exports: 5-row spec sheet (on-demand, scheduled, webhooks, REST,
  S3 push) in the warmup defaults layout.
- FAQ: 4 reporting questions, smooth grid-rows accordion.
2026-05-26 15:47:20 +00:00
Matthew Meszaros 30b3ed618c site(sending): remove worker fleet panel below the hero
Hero now flows straight into the anatomy section without the floating
fleet card. Dropped the fleet[] data and tones() helper since they
were only used by that panel.
2026-05-26 15:44:13 +00:00
Matthew Meszaros b1042ea024 site(sending): revert hero to HeroAtmosphere · keep unique body sections
Same hero treatment as home / pricing / warmup / campaigns. The dark
ops-dashboard hero is gone but the worker fleet panel survives as a
floating white card below the hero. Anatomy diagram, single-send
trace, and scaling story still distinct from other pages.
2026-05-26 15:43:05 +00:00
Matthew Meszaros e36387195c site(sending): unique ops-dashboard treatment, distinct from other pages
Dropped the HeroAtmosphere + floating card pattern used by warmup
and campaigns. Sending now has its own shape:
- Hero: dark datacenter background (#0a0f1e + sky grid) with a live
  worker-fleet panel on the right showing 6 workers, their IPs,
  regions, load bars, plus a 'w-03 approaching concentration' warning.
- Anatomy section: big architecture SVG (control plane | Kafka spine
  | workers | providers) with backend/Postgres/consumer on the left,
  Kafka topics in a vertical bar, 4 workers, and 4 provider boxes.
  Animated send-dots flow left-to-right. Legend underneath.
- Trace a single send: timeline of one message from queue to delivered
  with timestamps (T+0ms to T+326ms), actor labels, and one-line
  descriptions per handoff (kafka.publish, oauth, gmail api, ack,
  consumer fold).
- Scaling story: 3 progressive scenarios (Founder 1 mailbox | Sales
  team 10 mailboxes featured | Agency 50 mailboxes) each with a
  mailbox dot-grid and stats.
- Providers: compact 3-card row with brand-colored top rules.
- FAQ: same grid-rows accordion.
2026-05-26 15:39:06 +00:00
Matthew Meszaros 3a87369810 site(sending): full redesign in the warmup/campaigns pattern
- Hero: HeroAtmosphere with 'Many mailboxes. Many workers. Many IPs.'
  headline, eyebrow chip 'Distributed across many machines, many IPs',
  two CTAs.
- Floating worker fleet card: live topology SVG on the left (control
  plane on left, 5 workers on right with IPs, animated send dots
  traveling) plus a worker table on the right (id, ip, region, mailbox
  count, status chip). Footer flags w-03 hitting the concentration
  threshold of 10 mailboxes.
- Control plane vs execution plane: 2-card side-by-side with colored
  top rules. Each card lists the 4 things that plane is responsible
  for, with cmd/backend cmd/consumer and cmd/worker file labels.
- Per-mailbox math: 'Worker capacity is the sum of its mailboxes'
  with a Go code block (worker_scheduler.go) showing the actual
  budget = sum(mailbox caps) + concentration warning emit.
- Message lifecycle: 6 numbered editorial rows (scheduled, dispatched,
  sent, acknowledged, tracked, reconciled) each with a code-style
  signature (kafka.publish, provider.send, etc) and prose.
- Providers: 3 cards with brand-colored top rules (Gmail red, Outlook
  blue, BYOS sky) and verifiable detail.
- Limits: 2-col spec sheet (cap, gap, concentration, worker budget,
  send window, dependencies) with source-file mono footer.
- FAQ: 4 engine questions with the same grid-rows accordion.
2026-05-26 15:33:59 +00:00
Matthew Meszaros 0028bc054d site(campaigns): full redesign in the warmup/pricing pattern
- Hero: HeroAtmosphere with '12 steps. 4 variants. One source of truth.'
  headline, eyebrow chip, two CTAs.
- Floating live-sequence card: realistic step list with 6 rows (send /
  wait / branch / send / send / event), each with kind chip (SEND /
  WAIT / BRANCH / EVENT in distinct colors), delay, label, body note,
  variant count, and a spine line connecting steps.
- Variables + fallbacks: code block showing the real template engine
  (pipe fallbacks + conditional blocks for sender-specific copy).
- Sender pool distribution: SVG fan-out diagram showing one campaign
  feeding four mailboxes with animated dots, then a pool table with
  today / cap / headroom progress bars per mailbox.
- Auto-stop rules: 6-card grid of suppression triggers (replied,
  hard bounce, 3x soft, unsubscribe, OOO, manual).
- Limits: 2-col spec sheet (12 steps, 4 variants, 1 day min delay,
  100/day cap, 10m gap, recipient TZ) with source-file mono footer.
- FAQ: 4 operational questions with the smooth grid-rows accordion.
- CTA: standard sky.
2026-05-26 15:30:04 +00:00
Matthew Meszaros e8475a227d site(warmup): redesign defaults / pool isolation / health bands
- Defaults: full-width 2-column spec sheet. Each row = numbered key,
  description prose, and a big 22-26px mono value on the right.
  Hover tints the row. Source-of-truth file paths in mono footer.
- Pool isolation: 2x2 grid of pool cards, each topped with a colored
  rule (slate / sky / amber / black). Premium pool is featured with a
  sky ring, drop shadow, and a 'Most paid plans' tag tucked into the
  rule. Each card has 3 verifiable isolation rules.
- Health bands: replaced the table with a horizontal threshold gauge.
  4 bands fill widths proportional to their range (Healthy 0-10%,
  Watch 10-20%, Quarantined 20-40%, Blocked 40-100%) along a single
  bar, with tick marks below at 0/10/20/40/80/100% and a 'providers
  act' marker at 80%. Below the gauge: 4 detail cards with spam,
  complaint, bounce, and action per band.
2026-05-26 15:19:32 +00:00
Matthew Meszaros b22c6d7fca site(warmup): inline editorial ramp section, no overlap or card
Dropped the floating card that overlapped into the hero (the layout
that 'just didn't fit'). The ramp is now a normal flowing section
with a split layout:
- Left (sticky): eyebrow, '10 emails on day 1. 40 emails on day 30.'
  headline, one-paragraph explanation.
- Right: 3 rows (Day 1 / Each day / Day 30), each row is stage label
  + big mono number + one-line note. Hairline dividers between rows.
  Day 30 row uses sky color for the highlight.
- Footer mono row with the operational facts.
2026-05-26 15:12:10 +00:00
Matthew Meszaros 36fe8055d2 site(warmup): drop calendar, replace with clean typographic ramp
Big editorial numbers instead of a chart or grid:
- Three columns: Day 1 (10/day), Each day after (+1/day), Day 30 (40/day)
  with 80-96px mono numerals and a one-line explanation each.
- Single horizontal sky-gradient bar below with 4 milestone labels.
- Footer mono row: ~10m gap, business-hour scheduling, weekends skipped,
  plain text only.
Quiet, premium, no grid noise.
2026-05-26 15:10:38 +00:00
Matthew Meszaros cfe820a32a site(warmup): hoist calendar data to frontmatter to fix JSX < parsing 2026-05-26 15:08:27 +00:00
Matthew Meszaros b278826d18 site(warmup): calendar-grid ramp + smooth FAQ animation
- Replaced the line chart + bar chart with a 5-week x 7-day calendar
  grid. Each cell shows the day label, the warmup volume that day,
  and is shaded by intensity (sky-1 to sky-8). Weekends are skipped
  visibly. Side panel: 4 stat tiles (Day 1 send, daily ramp, ceiling
  reached at Day 30, ~550 total sends).
- FAQ converted from native <details> to the smooth grid-template-rows
  animation pattern used on pricing: click expands panel from 0fr to 1fr
  over 300ms, plus icon rotates 0->45deg.
2026-05-26 15:06:12 +00:00
Matthew Meszaros f4eaf64272 site(warmup): qualitative without/with comparison instead of fake A/B
Replaced a section with fabricated 'internal A/B' percentages with a
qualitative two-column side-by-side: 'Without warmup' (5 reputation
liabilities) vs 'With Warmbly warmup' (5 actual platform behaviours).
Footnote explicitly states why we don't publish placement-improvement
numbers (it depends on domain age, content, hygiene, DMARC). No fake
stats.
2026-05-26 15:01:28 +00:00
Matthew Meszaros 780aa48ffd site(warmup): add verification-token anatomy + technical loop detail
- New section: 'Every warmup message carries proof it is real'. Shows
  the actual token format (wbly:ulid:exp:hmac), embeds it as a realistic
  body footer, and shows the receiver's verification pseudocode. Side
  panel lists the 5 validation rules (HMAC, expiry, single-use ULID,
  pool membership, sender/recipient binding), with the quarantine
  threshold footer (>= 3 invalid / 24h).
- 'The daily loop' rewritten with code-style signature snippets for
  each step (partner = pool.draw(...), token = hmac(...), etc) plus
  the prose explanation. Real implementation language, not marketing.
2026-05-26 14:59:36 +00:00
Matthew Meszaros 5800dce4ba site(warmup): ramp section now packs chart + week breakdown + day grid
Three layers of detail in one panel:
- Chart (340px tall): full 30-day curve with daily dots, week dividers,
  ceiling reference line, milestone markers at Day 1, Week 1 (17/d),
  and Day 30 (40/d at ceiling).
- Week-by-week breakdown on the right: 5 weeks with start/end rate,
  total sends, status label (Initial ramp / Building reputation /
  Provider learning / Approaching ceiling / At ceiling).
- Day-by-day mini bar chart at the bottom: 30 bars scaling with the
  daily volume, ceiling days in darker sky.
- Stats footer: 775 total sends, 30% reply target, ~10m gap, 9-5 TZ.
2026-05-26 14:57:50 +00:00
Matthew Meszaros d32bb739ff site(warmup): switch ramp curve to inline Array.from polygon points
Astro compiler tripped on the <= in the IIFE inside the SVG block.
Replaced with two inline Array.from(...) expressions producing the
polygon and polyline points strings directly. Same visual output.
2026-05-26 14:53:54 +00:00
Matthew Meszaros e7c46278ca site(warmup): unique sections instead of borrowed shapes
- Replaced the 3-card 'ramp numbers' (borrowed from pricing) with a
  unique real SVG ramp curve. Charts the 30-day path from 10/day to
  40/day with a dashed ceiling line, day-1 and day-30 markers, axis
  ticks, and a mono summary row underneath.
- Replaced the 3-card pool grid (also borrowed from pricing plans)
  with a single 'pool isolation' table showing 4 layered rows: Free /
  Premium (highlighted in sky) / Recovery / Dedicated, each with a
  plain-language rule and the plan label.
2026-05-26 14:51:36 +00:00
Matthew Meszaros a26d754375 site(warmup): entirely new product-dashboard-driven redesign
- Hero: editorial split with a real-looking warmup dashboard mock on
  the right. Six mailboxes listed with day-in-warmup, tiny sparkline
  showing the ramp, today's send vs cap, and a state chip. Watch state
  has an amber sparkline. Footer row shows 'next send in 12m'.
- The daily loop: 6-step horizontal cycle visualization with a
  connecting rail and circular step badges.
- Health bands: state-machine table on the right showing each transition
  with from/to chips, trigger condition (spam >= 10%, etc), and action.
  Left side has the four states as soft-tinted chip cards.
- Defaults: clean spec table on a muted band, monospace values.
- Final CTA: deep Warmbly sky band with the standard white-CTA pattern.
Dropped the radial pool ring SVG, the 8-card grid, and the traffic-light
band cards from the previous version.
2026-05-26 14:41:42 +00:00
Matthew Meszaros ddf92476af site(header): panel hit-area extends 40px upward to bridge the gap
The cursor traveling from the Product trigger down to the fixed panel
was hitting a few px of dead space between the bottom of the header
and the top of the panel. Cursor was outside both rects, mousemove
scheduled a close, panel shut. Expanding the panel's hit-test rect
upward by 40px lets that gap count as 'inside the panel' for the
hover check, so the menu stays open.
2026-05-26 14:30:19 +00:00
Matthew Meszaros 99183d9d4e site(header): clean white left block, stagger animation, robust hover
- Left intro block is now plain white (matches right): eyebrow,
  'Six systems. One platform.' headline, short tagline, and a single
  'Read the handbook' link. No sky gradient, no clouds, no status row.
- Product cards: dropped the leading number, kept only the tag eyebrow
  plus title + description; cleaner repeated rhythm.
- Open animation: cards stagger fade-up (220ms) with 32ms steps for
  a quiet entrance on hover.
- Hover hit-test: replaced mouseenter/leave (which mis-fired under
  position:fixed) with a global mousemove that checks the cursor
  against both the trigger and panel bounding rects. The panel only
  closes when the cursor is outside BOTH, with a 180ms grace.
2026-05-26 14:26:38 +00:00
Matthew Meszaros d42bf995eb site(header): full-bleed panel chrome, container-width content
- White panel chrome now spans the full viewport edge-to-edge with
  shadow + bottom border.
- Inner content uses container-page so brand block + product grid + the
  footer band all align with the page baseline width.
- Brand sky-gradient bleeds left of the container into the white edge
  via negative margin so the visual feels continuous.
- Removed the 100/d cold cap stat from the brand block (kept only a
  small status + Apache 2.0 mono row).
2026-05-26 14:22:03 +00:00
Matthew Meszaros fec72124f8 site(header): full container-width dropdown, square corners, hover bridge
- Panel is now position: fixed under the header at top: 56px, anchored
  full-width with an inner container-page wrapper so it matches the
  baseline width of page content.
- Removed border radius (square edges).
- Left brand block widened to 320px with slightly larger headline.
- Product cards lose card-level rounded corners and gap; they now share
  hairline borders between cells for an editorial grid look.
- Removed transforms on cards/chevron to prevent layout shifts that
  caused the hover flicker.
- Added a 24px invisible hover-bridge above the panel so the cursor
  can travel from the Product trigger into the panel without falling
  into a dead gap.
2026-05-26 14:17:18 +00:00
Matthew Meszaros 77f396f89f site(header): big wide platform dropdown · brand block + 3x2 grid
960px panel split into a 260px brand column and a 3x2 product grid.
- Brand column: soft sky gradient with cloud accent, 'The cold-email
  platform' headline, tagline, and a mono stat row (6 systems, 100/d
  cold cap, Apache open source).
- Grid: 6 large product cards (17px titles), each with mono number +
  uppercase tag, 1-line description, and an 'Open →' hint that lights
  on hover. Current page is sky tinted with a sky dot.
- Footer band: GitHub URL + Deliverability/Integrations/Pricing links.
- Anchored left:-180px so the wide panel sits centered under the nav.
2026-05-26 14:11:17 +00:00
Matthew Meszaros ee04170275 site(header): sky-themed compact dropdown
- 340px panel with a sky-gradient header strip (sky-6 to sky-8 deep
  gradient + soft cloud accents in screen blend) and white body.
- Header strip says 'CHOOSE A PRODUCT' (mono uppercase) plus the count.
- Body: 6 product rows, each row title + mono uppercase tag on one line,
  hover light surface bg, current page sky tinted with sky dot.
- Compact, sky-family, not the typical icon-grid mega-menu.
2026-05-26 14:07:49 +00:00
Matthew Meszaros 54c08acc5c site(header): serious editorial mega-menu
- 720px panel, dark accent rule on top, square-ish 10px radius
- Left: editorial index of 6 products with numbers (01-06), title, and
  small uppercase mono tag (Deliverability, Infrastructure, Triage,
  Outreach, Reporting, Workflow); hover slides a chevron in.
- Right: 'From the handbook' featured callout linking to the
  deliverability handbook (Essential pill, title, 2-line excerpt,
  meta + Read CTA).
- Footer: thin mono utility row with GitHub URL and /pricing link.
2026-05-26 14:04:22 +00:00
Matthew Meszaros 0af27659a2 site(header): WIP minimal column, will rework 2026-05-26 14:03:25 +00:00
Matthew Meszaros ba0f58888a site(header): list+preview mega-menu, entirely different shape
- 580px panel split 210px / 1fr.
- Left: bare numbered list of 6 products (no icons, no descriptions),
  numbered 01-06, soft text color, sky highlight + dot on the current
  page.
- Right: live preview pane that swaps to follow the hovered list row.
  Each preview shows tag eyebrow, big title, full description, and a
  'Open {Product} →' CTA.
- Default preview = first product, opacity transitions on swap.
2026-05-26 14:02:16 +00:00
Matthew Meszaros 561ed7b874 site(header): cooler mega-menu + trim to 6 meaningful products
- Removed /product, /security, /workers (Footer, 404, privacy, dpa, trust
  references updated).
- Mega-menu now 620px wide with a sky-tinted header strip showing
  'The platform · 6 systems', a 2-col grid of products where each item
  has a 40x40 icon tile that goes from quiet surface ring to a sky
  gradient on hover (with a sky drop-shadow), current page is shown
  with the gradient tile active + a sky dot next to the name. Footer
  band kept (GitHub link + pricing CTA).
2026-05-26 13:59:39 +00:00
Matthew Meszaros 9ccfb519ba site(header): inline script, 250ms close delay, focus support 2026-05-26 13:54:25 +00:00
Matthew Meszaros 27ecd66d70 site(header): fix mega-menu positioning (left-anchored, no x-translate) 2026-05-26 13:50:23 +00:00
Matthew Meszaros 66f047e1aa site(header): Cursor-style mega-menu for Product
Hover or focus the Product nav item to reveal a wide (720px) mega-menu:
- Top: featured 'Product overview' card with sky-gradient icon tile, plus
  a Resources column (Deliverability, API, Integrations, Changelog).
- Two-column product grid grouped 'Send & deliver' (Warmup, Sending,
  Workers, Security) and 'Engage & analyse' (Inbox, Campaigns, CRM,
  Analytics) with icon + title + 1-line description per item.
- Footer band with open-source link and pricing link.
- Caret rotates 180° on open, panel fades + slides down 200ms.
- Hover-bridge with 140ms close delay so cursor can travel from
  trigger to panel without flicker. Escape closes.
2026-05-26 13:48:54 +00:00
Matthew Meszaros b80495cc9b site(handbook): rewrite prose with technical depth, not surface bullets
Every chapter rewritten with specific, verifiable detail:
- §01: the three gates (acceptance / filtering / placement), Postmaster
  Tools as the only after-the-fact placement signal, the formal
  conditional-probability definition.
- §02: DMARC strict vs relaxed alignment, Postmaster Tools reputation
  buckets (High/Medium/Low/Bad), engagement signal weighting (reply >
  move-from-spam > add-to-contacts), specific content fingerprints
  (image ratio, TLDs, fonts, footer mismatch), volume cadence as 2-3σ
  anomaly detection.
- §03: provenance of the threshold numbers (Google Feb 2024 bulk-sender
  update, SES Account-Level Reputation, Microsoft EOP), hard vs soft
  bounce treatment, ARF vs Postmaster Tools complaint sources.
- §04: per-mailbox = per-reputation, Warmbly's worker concentration
  warning at ~10 active cold mailboxes/worker, scaling = more mailboxes
  not higher caps.
- §05: sub-domain isolation rationale (cascade direction), DMARC pct
  ramp procedure, derivation of the 100/day + 600s defaults.
- §06: per-mailbox vs workspace aggregates, warmup-pool probe sample
  size (20 deliveries / 7 days), ARF + Postmaster Tools complaint
  aggregation.
- §07: Apple Mail Privacy Protection prefetch (iOS 15.4+), why click
  optimisation produces link-heavy content, unauditable vendor scores.
- §08: explicit tripwire conditions, common silent failure (a new
  service sending unaligned From-domain mail).
2026-05-26 12:49:07 +00:00
Matthew Meszaros 0cc163ee2a site(handbook): same rail as other essays, scroll-spy + switcher
- Replaced the static chapter list with a 2-pane rail matching Learn.astro:
  'On this page' (chapter-link list with scroll-spy active state) plus
  'All essays' switcher showing every learn article with this handbook
  highlighted as current.
- Active state uses only a soft sky color shift + semibold, no bg or ring,
  with a 300ms color transition.
2026-05-26 12:44:30 +00:00
Matthew Meszaros 264588e36c site(learn): rail uses soft color transitions, no border or bg
- Chapter rail active state: only color shifts to sky (no background,
  no ring), font weight bumps to semibold, smooth 300ms color transition.
- Article switcher: same treatment. Current article shows a small sky
  dot on the right where read time would normally be, so you can spot
  the current spot at a glance.
2026-05-26 12:41:49 +00:00
Matthew Meszaros dc6e63f6bf site(learn): active section highlight + other-essays switcher on left rail
- Added scroll-spy to the chapter rail: as you scroll, the H2 closest
  to the upper third of the viewport becomes the active link (white
  background, sky text, sky ring).
- Below the chapter rail, an 'Other essays' list shows every other
  learn article (6 on each page) with read-time, plus an 'All articles'
  link back to the library.
2026-05-26 12:40:19 +00:00
Matthew Meszaros 79fb1d58c7 site(learn): remove em dashes from all learn subpages 2026-05-26 12:33:56 +00:00
Matthew Meszaros 2739499a0e site(learn): apply handbook docs-style layout to all learn subpages
Rebuilt Learn.astro to mirror the deliverability handbook:
- top bar with library breadcrumb + eyebrow/reading/updated meta
- sticky chapter rail on the left, auto-populated from H2 headings via
  inline JS (each H2 gets a slugged anchor, rail lists numbered links)
- main column with page header (eyebrow, big title, description) and
  prose body with handbook-tuned typography (numbered ol counters,
  bulleted ul with sky bullets, section anchor § glyph, sky blockquotes,
  code blocks)
- footer with 'continue reading' cards excluding the current page
All seven learn subpages (email-warmup, spf-dkim-dmarc, inbox-placement,
cold-email-rules, warmup-pools, reputation-recovery, glossary) now use
this layout. No sky background.
2026-05-26 12:33:27 +00:00
Matthew Meszaros 88b834b59d site(learn): inline reference panel, docs-style handbook
- learn index: dropped the sky-atmosphere library + glossary bands.
  Library is now a quiet inline section with article rows on the left
  and a sticky reference panel on the right showing 6 sample glossary
  entries with a stat strip. White background, no sky.
- handbook: rebuilt as a docs-style 2-column layout (Stripe API style).
  Sticky chapter rail on the left, page header + 8 chapter rows on the
  right. Each chapter has prose on the left and a side example panel
  on the right (definitions list, signal-weight table, threshold table,
  right vs wrong code blocks, numbered recipe, measure list, noise
  cards, incident runbook). Closing rule + continue-reading footer.
2026-05-26 12:20:15 +00:00
Matthew Meszaros 676850e778 site: redesign all pages with sky-themed system
Full site redesign:
- pricing: HeroAtmosphere hero, animated toggle with sliding indicator,
  slide-up price digits, refined plan cards (no dark gradient on featured),
  feature matrix trimmed of unverified claims, lighter Warmbly-deep-sky CTA
- learn index: sky atmosphere band with floating cards + deep-sky glossary panel
- learn/deliverability: rebuilt as a magazine-essay layout with drop-cap,
  numbered chapter index, single 820px reading column, ornamental dividers,
  closing pull-quote. Original prose preserved, em dashes removed
- product, warmup, sending, inbox, campaigns, analytics, crm, workers,
  about, contact, brand, trust, changelog, roadmap, faq, 404, integrations,
  developers, deliverability, security, use-cases: each page got its own
  distinct shape on top of the shared theme tokens
- shared components: PageHero, Section, SectionHead, Card, CTA, Button,
  UseCasePage, Learn layout, Legal layout themed for the sky/serious style
2026-05-26 12:15:49 +00:00
Matthew Meszaros 163c3e9de1 site: warmup row layout - merged Day into mailbox name inline, ramp progress is now a clean full-width bar with no left padding gap. Pool active + status pills now just dot+text, no bordered pill backgrounds. Campaign timeline boxes upgraded with colored header bars (sky/slate/violet/emerald per step kind), icon + text body, faint horizontal connecting rail behind the row. 2026-05-26 09:35:05 +00:00
Matthew Meszaros a433a3b3cf site: warmup section gets a real dashboard panel (6 mailbox rows with day count, mini ramps, today/cap, status pills) instead of one big static ramp chart. Dropped the top 4-stats strip. Gap-strip language broadened beyond 'Docker Compose' to 'Run it on our cloud or your own infra'. 2026-05-26 09:24:46 +00:00
Matthew Meszaros a56da5ef39 site: minimal one-line facts strip in the hero→warmup gap (GitHub URL · Apache 2.0 · self-hostable · stack) replacing the heavy terminal mock. Inbox flow gradients switched to userSpaceOnUse so the horizontal center connectors render with the same gradient as every other path. 2026-05-26 09:17:59 +00:00
Matthew Meszaros 8ab3e534c8 site: fill the white gap between hero and warmup with a self-host CLI section (git clone + docker compose up snippet in dark terminal, headline 'One command on your own infra', Apache 2.0 + stack note). Inbox center horizontal connectors now use solid #0284c7 stroke (objectBoundingBox gradient on zero-height path was rendering invisible). 2026-05-26 09:13:10 +00:00
Matthew Meszaros 065dd23b78 site: warmup background dialled back to mid-dark sky (#0284c7 → #0a3d5c radial, clouds at screen blend) with a 4-cell top stats strip filling the empty space (+1/day · 40/day · 5 health bands · 7 days). Inbox top space gets a 3-cell info strip (5 labels / < 1s tag latency / ∞ mailboxes). Inbox flow diagram upgraded: stronger #7dd3fc→#0284c7 gradients, dedicated solid center horizontal connectors, 6px glowing traveling dots in label-matching colors, subtle background grid behind the canvas. Campaign timeline now auto-marquees forever (60s loop) with no scrollbar. 2026-05-26 09:08:54 +00:00
Matthew Meszaros 7e05c83e4e site: completely distinct layouts for sections 2, 3, 4. Warmup back to airy sky-blue panel with drifting clouds. Inbox is now an architectural flow diagram: 5 mailbox pills on the left, classifier card in the middle, 5 label pills on the right, with SVG bezier connectors and traveling dots showing live flow. Campaigns is a horizontal step timeline (8 cards, SEND/WAIT/BRANCH/END kinds) plus a syntax-highlighted YAML config block paired with API-reference framing. Each section now has its own visual approach instead of repeating text-left + mock-right. 2026-05-26 08:55:15 +00:00
Matthew Meszaros 1d5a75d0e9 site: serious-tone pass — declarative section headlines (Mailbox warmup, built in / Reply triage in one place / Multi-step sequences with branching / Defaults that protect reputation / Pick a plan when the trial ends); compare replaced with clean data table; pricing dropped Most-popular pill + sweep animation + cloud bloom for an unornamented edge-to-edge grid; warmup panel darkened to deep slate (#0c1b2c); section eyebrows plain (no 01/02 numbering) 2026-05-26 08:47:29 +00:00
Matthew Meszaros b0f269a7f5 site: humanize copy throughout — hero now reads 'The biggest open-source cold email platform' with 'Start 14-day trial' + 'Star on GitHub' CTAs and accurate trial caveat (14 days, 1 mailbox, no card). Dropped templated eyebrow pills (Unified inbox, Pricing, Campaigns) and italic-brand pattern. Direct section headlines: 'Mailboxes warm themselves' / 'All your replies, one inbox' / 'Build a campaign the way you'd write one' / 'Pick a plan when the trial ends' / 'Send cold email people actually open'. Tightened section padding to py-14/16/20. Final CTA links to GitHub self-host as alternative. 2026-05-26 08:37:30 +00:00