feat(press): add native press & brand kit page - #2662
Conversation
Replaces the Notion-hosted press kit (peanut.me/presskit redirect) with a native /press page reading from content/press/en.md. - New route: src/app/[locale]/(marketing)/press/page.tsx, mirrors the /team page pattern (readSingletonContentLocalized) - Brand assets (logos, brand guidelines PDF, fonts, mascot webp, team photos) migrated from Notion into public/press/assets/ as individual files, EXIF/GPS stripped from team photos - redirects.json: /presskit and /press-kit now point to /en/press instead of the Notion page - i18n: pressTitle/pressSubtitle strings across en/es-419/es-ar/pt-br, 'press' added to ROUTE_SLUGS for hreflang alternates
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe PR adds a localized press page with singleton content loading, translated metadata, Organization JSON-LD, brand and team sections, company facts, media contacts, press-kit redirects, and two Peanut logo assets. ChangesPress page
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Code-analysis diffPainscore total: 7157.18 → 7164.93 (+7.75) 🆕 New findings (15)
✅ Resolved (8)
📈 Painscore deltas (top movers)
|
🧪 UI test report — ✅ all greenSuites
📊 Coverage (unit)
⏱ 10 slowest test cases
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@public/press/assets/Peanut_Full_Logotype.ai`:
- Line 112: Sanitize both public Illustrator assets to remove embedded author
identity and other Illustrator document metadata before release: update
public/press/assets/Peanut_Full_Logotype.ai at lines 112-112 and
public/press/assets/Peanut_Wordmark.ai at lines 123-123 by re-exporting or
cleaning their metadata while preserving the artwork.
In `@src/app/`[locale]/(marketing)/press/page.tsx:
- Around line 75-79: Update the metadataHelper call in the press page metadata
configuration to pass the validated locale value, ensuring localized pages
populate openGraph.locale and openGraph.alternateLocale while preserving the
existing title, description, and canonical metadata.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 26384ce4-30a0-47ee-bbe3-017608f7dd77
⛔ Files ignored due to path filters (20)
public/press/assets/Peanut_Brand_Guidelines.pdfis excluded by!**/*.pdfpublic/press/assets/Peanut_Full_Logotype.svgis excluded by!**/*.svg,!**/*.svgpublic/press/assets/Peanut_Icon.svgis excluded by!**/*.svg,!**/*.svgpublic/press/assets/Peanut_Wordmark.svgis excluded by!**/*.svg,!**/*.svgpublic/press/assets/font/Fill.otfis excluded by!**/*.otfpublic/press/assets/font/Fill.ttfis excluded by!**/*.ttfpublic/press/assets/font/KNERDFilled-Regular.woffis excluded by!**/*.woffpublic/press/assets/font/KNERDFilled-Regular.woff2is excluded by!**/*.woff2public/press/assets/font/KNERDOutline-Regular.woffis excluded by!**/*.woffpublic/press/assets/font/KNERDOutline-Regular.woff2is excluded by!**/*.woff2public/press/assets/font/Outline.otfis excluded by!**/*.otfpublic/press/assets/font/Outline.ttfis excluded by!**/*.ttfpublic/press/assets/team-photos/founder-photo-1.jpgis excluded by!**/*.jpgpublic/press/assets/team-photos/founder-photo-2.jpgis excluded by!**/*.jpgpublic/press/assets/team-photos/founder-photo-3.jpgis excluded by!**/*.jpgpublic/press/assets/team-photos/founder-photo-4.jpgis excluded by!**/*.jpgpublic/press/assets/team-photos/founder-photo-5.pngis excluded by!**/*.pngpublic/press/assets/team-photos/founder-photo-6.pngis excluded by!**/*.pngpublic/press/assets/team-photos/founder-photo-7.pngis excluded by!**/*.pngpublic/press/assets/team-photos/founder-photo-8.pngis excluded by!**/*.png
📒 Files selected for processing (18)
public/press/assets/Peanut_Full_Logotype.aipublic/press/assets/Peanut_Full_Logotype.epspublic/press/assets/Peanut_Icon.epspublic/press/assets/Peanut_Wordmark.aipublic/press/assets/Peanut_Wordmark.epspublic/press/assets/mascots/peanut-angry.webppublic/press/assets/mascots/peanut-cool.webppublic/press/assets/mascots/peanut-pointing-down.webppublic/press/assets/mascots/peanut-walking.webppublic/press/assets/mascots/peanut-waving-hello.webpredirects.jsonsrc/app/[locale]/(marketing)/press/page.tsxsrc/i18n/config.tssrc/i18n/en.jsonsrc/i18n/es-419.jsonsrc/i18n/es-ar.jsonsrc/i18n/pt-br.jsonsrc/i18n/types.ts
…otos Addresses /code-review findings: - canonical/hreflang now use singletonLocaleFor + availableSingletonLocales (only content/press/en.md exists today), matching the pricing.tsx pattern instead of always advertising all SUPPORTED_LOCALES - pass locale to metadataHelper for og:locale tags - brand_assets file.href and team_photos entries are author-editable content/press/en.md frontmatter pushed straight to mono main with no code review — guard with the same safeHttpUrl() protocol check team.tsx uses for member.social links, so a javascript:/data: value can't reach a rendered href - team photos: next/image instead of raw <img> (same-origin static assets, some are multi-MB PNGs)
|
@coderabbitai review |
|
…content This PR's press page introduced a second, slightly-diverged copy of team/page.tsx's TeamMember/TeamFrontmatter interfaces (missing image/social). Moved the one real shape into src/lib/content.ts, exported, both pages import from there now — one source of truth for content/team/en.md's frontmatter shape instead of two that can drift.
Summary
Replaces the Notion-hosted press kit with a native
/presspage./presskitand/press-kitnow redirect to/en/pressinstead of bouncing to Notion.src/app/[locale]/(marketing)/press/page.tsx, mirrors the/teampage pattern (readSingletonContentLocalized), reusingcontent/team/en.mdfor founder cards so there's one source of truth for names/roles/bios.content/press/en.md(mono, already pushed tomain— content task, no PR): boilerplate (short/medium/press tiers), tagline + secondary line + 5 context headlines, brand asset manifest, company facts, media contact. All copy pulled verbatim frommono/content/_system/context/messaging.md§2/§3/§12.public/press/assets/: logos (svg/eps/ai), icon (svg/eps — no.aisource exists), wordmark (svg/eps/ai), brand guidelines PDF, KNERD Bubble font (individual ttf/otf/woff/woff2 files), mascot webps, and 8 team photos (EXIF/GPS metadata stripped before committing).redirects.json:/presskit,/press-kit→/en/press(was → Notion).pressTitle/pressSubtitleadded toen/es-419/es-ar/pt-br,'press'added toROUTE_SLUGSfor hreflang alternates.Task
https://app.notion.com/p/3b983811757981f1bd40c4f43c66dd32
Risks / breaking changes
redirects.jsonchange means anyone with the old/presskitlink now lands on-site instead of Notion — intentional, per the task.content/team/en.mdare placeholder text (pre-existing TODO in that file, not introduced by this PR) — same bios already live on/teamtoday.media_contactissupport@peanut.me(proven, already used everywhere in legal/support copy) rather thanpress@peanut.me, which doesn't exist as an alias yet. Flip it via a one-line content edit (no redeploy) once provisioned.QA
pnpm prettier --check .— cleannpm run typecheck— cleannpm test— 228 suites, 2903 passed, 3 skippednpm run lint— 64 pre-existing warnings (baseline), 0 new from this PR's filesnpm run build— not completed locally (OOM under heavy concurrent sandbox load, unrelated to this change); CI is the authoritative build gate/en/pressrenders all sections (hero, company description, tagline/headlines, brand assets, team + photos, media contact) via local dev server + screenshots at 375×667Screenshots
Mobile (375×667),
/en/press. Assets branchpr-assets-2662— delete after merge.Summary by CodeRabbit
/presskitand/press-kitlinks to permanently redirect to the new press page.