Skip to content

Email brand pass: drop gradient header, use new palette#277

Merged
blove merged 2 commits into
mainfrom
claude/email-brand-pass
May 13, 2026
Merged

Email brand pass: drop gradient header, use new palette#277
blove merged 2 commits into
mainfrom
claude/email-brand-pass

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented May 13, 2026

Summary

Group B.1 of the post-merge brand sweep. Migrates the shared `wrapEmail()` and `lead-notification` email templates off the legacy aesthetic (pastel-gradient header band + zinc-200/400 palette) to the Statusbrew-shaped tokens used by the marketing site.

Customer-touching impact: every drip campaign, whitepaper-download confirmation, newsletter welcome, and lead notification email now renders with a clean white card on a slightly tinted body — no more 4-stop pastel gradient at the top. Aligns with what they'll see when they land on the marketing site after clicking through.

Changes

  • `apps/website/emails/email-wrapper.ts` — drops the gradient header band; white card with hairline `#e6e8ee` borders; body bg `#e8eaf0` → `#f4f6fb` (surfaceTinted); card border-radius 12px → 14px; box-shadow replaced with the same hairline border; footer palette normalized to `#e6e8ee` + `#8b8fa3`.
  • `apps/website/emails/lead-notification.ts` — divider color + meta-text color brought into line.
  • `apps/website/src/app/api/email-preview/route.ts` — the dev-only preview-route wrapper matches so the dev experience doesn't look two-brand.

Per-library accent colors (`#004090` LangGraph blue, `#5a00c8` chat purple, `#1a7a40` render green, `#DD0031` angular red) preserved in template bodies — those are intentional library/brand signals, not chrome.

Test plan

  • All 7 `/api/email-preview` endpoints return HTTP 200 (whitepaper-download, newsletter-welcome, lead-notification, drip-day-{2,5,10,20})
  • Grep on the rendered HTML for legacy palette (`linear-gradient`, `#e4e4e7`, `#a1a1aa`, `#d4d4d8`, `#e8eaf0`) returns zero matches
  • Manual visual check of at least one template in a real email client (Gmail/Outlook) before mass-send

Follow-up

Group B.2 — whitepaper PDF covers — still pending; will be a separate PR once the PDF build pipeline is confirmed.

🤖 Generated with Claude Code

…alette (Group B.1)

Migrates the shared wrapEmail() and lead-notification templates off the
legacy aesthetic (pastel gradient header band + zinc-200/400 palette)
to the Statusbrew-shaped tokens used by the marketing site:

- email-wrapper.ts: drops the 4-stop pastel linear-gradient header band
  for a white header with a hairline #e6e8ee bottom border. Body
  background switches from #e8eaf0 to #f4f6fb (surfaceTinted). Card
  drops the box-shadow in favor of a 1px #e6e8ee border with
  border-radius bumped 12px → 14px. Footer divider + text colors
  unified to #e6e8ee + #8b8fa3.
- lead-notification.ts: same palette swap (3 references).
- /api/email-preview dev route: matching swap so the preview wrapper
  doesn't read like two different brands.

All 7 dev preview endpoints (whitepaper-download, newsletter-welcome,
lead-notification, drip-day-{2,5,10,20}) return HTTP 200 and a grep
of the rendered HTML for the legacy palette returns zero matches.

Per-library accent colors (#004090 LangGraph blue, #5a00c8 chat purple,
#1a7a40 render green, #DD0031 angular red) intentionally preserved in
template bodies — those are brand signals, not chrome.

Whitepaper-PDF covers are Group B.2 (separate PR — requires figuring
out the PDF build pipeline).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cacheplane Ready Ready Preview, Comment May 13, 2026 0:40am

Request Review

Updates apps/website/scripts/generate-whitepaper.ts so the next regen
of the 4 whitepapers produces covers matching the Statusbrew-shaped
marketing aesthetic.

- coverGradient per paper: 4-stop pastel rainbows replaced with
  subtle two-stop gradients in the new palette. Each paper carries a
  light hint of its library's brand accent:
  - whitepaper.pdf  (agent):  #fafbfc → #eaf3ff (LangGraph blue)
  - angular.pdf:              #fafbfc → #eaf3ff (LangGraph blue)
  - render.pdf:               #fafbfc → #e8f5e9 (render green)
  - chat.pdf:                 #fafbfc → #f3e8ff (chat purple)
- Cover footer cacheplane.ai text: #888 → #8b8fa3 (textMuted)
- TOC row border + meta color: rgba(0,0,0,.06)/#444 →
  #e6e8ee/#555770 (border + textSecondary)

The committed PDF artifacts under apps/website/public/whitepaper*.pdf
and public/whitepapers/*.pdf are unchanged — they regenerate next time
someone runs the whitepaper script (requires ANTHROPIC_API_KEY). Until
then the deployed PDFs continue to use the legacy cover; the source of
truth for the new cover lives in this script.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@blove
Copy link
Copy Markdown
Contributor Author

blove commented May 13, 2026

Group B.2 added: whitepaper PDF covers

Updates apps/website/scripts/generate-whitepaper.ts to drop the 4-stop pastel-rainbow cover gradients for subtle two-stop tints in the new palette. Each whitepaper gets a light hint of its library's brand accent (LangGraph blue / render green / chat purple).

The 4 committed PDF artifacts (whitepaper.pdf, whitepapers/angular.pdf, whitepapers/render.pdf, whitepapers/chat.pdf) are not regenerated in this PR — that needs ANTHROPIC_API_KEY (the script LLM-generates each chapter). Deployed PDFs continue to show the legacy covers until someone runs:

ANTHROPIC_API_KEY=sk-... pnpm tsx apps/website/scripts/generate-whitepaper.ts

This PR is the source-of-truth change. The artifact refresh is a separate, run-once action.

@blove blove merged commit 7d1d5a2 into main May 13, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant