feat(web): add blog section with initial posts#11127
feat(web): add blog section with initial posts#11127roomote[bot] wants to merge 12 commits intomainfrom
Conversation
Implements MKT-66 through MKT-74: Content Layer (MKT-67): - Markdown files in src/content/blog with Zod-validated frontmatter - Pacific Time scheduling evaluated at request-time (no deploy needed) - gray-matter for parsing, react-markdown + remark-gfm for rendering Blog Pages (MKT-68, MKT-69): - Index page at /blog with dynamic SSR - Post page at /blog/[slug] with dynamic SSR - Breadcrumb navigation and prev/next post navigation SEO (MKT-70): - Full OpenGraph and Twitter card metadata - Schema.org JSON-LD (Article, BreadcrumbList, CollectionPage) - Canonical URLs pointing to roocode.com/blog Analytics (MKT-74): - PostHog blog_post_viewed and blog_index_viewed events - Referrer tracking for attribution Navigation (MKT-72): - Updated nav-bar and footer to link to internal /blog - Blog link in Resources dropdown Sitemap (MKT-71): - Dynamic blog paths with PT scheduling check Initial Posts: - PRDs Are Becoming Artifacts of the Past (Jan 12) - Code Review Got Faster, Not Easier (Jan 19) - Vibe Coders Build and Rebuild (Jan 26) - Async Agents Change the Speed vs Quality Calculus (Feb 2)
No issues found in the latest commit. The commit is a merge of
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
|
🚀 Preview deployed! Your changes have been deployed to Vercel: Preview URL: https://roo-code-website-o1usvu1xx-roo-code.vercel.app This preview will be updated automatically when you push new commits to this PR. |
|
@roomote fix the failing test |
Fixed the failing test. The |
The HistoryPreview component was refactored to use useGroupedTasks and TaskGroupItem instead of rendering TaskItem directly. This updates the test file to properly mock the new dependencies: - Mock useGroupedTasks hook to provide grouped task data - Mock TaskGroupItem instead of TaskItem - Update assertions to test for task groups instead of individual tasks
- Add reading time display to blog posts - Create BlogPostCTA component with 4 variants (default, extension, cloud, enterprise) - Add zebra striping to tables in blog posts - Add CTA to blog landing and paginated pages - Remove 'Posted' prefix from dates - Update blog description: 'How teams use agents to iterate, review, and ship PRs with proof' - Add BlogPostList and BlogPagination components - Add 100+ new blog posts from content pipeline
|
Generated with ❤️ by ellipsis.dev |
…r Hours, Roo Cast) - Add BlogSource type to types.ts - Export BlogSource from blog index - Add SourceBadge component to BlogPostList with colored badges - Each podcast has distinct color: blue (Office Hours), purple (After Hours), emerald (Roo Cast)
|
Generated with ❤️ by ellipsis.dev |
…s, After Hours) - Add add-blog-sources.ts script to build title→source mapping - Updated 122 blog posts with correct podcast sources - Sources: Roo Cast (52), Office Hours (62), After Hours (8)
|
Generated with ❤️ by ellipsis.dev |
- Add source field to Zod validation schema - Source badges use same styling as tag badges (rounded, greyscale) - Badges display on /blog landing page for Office Hours, After Hours, Roo Cast
|
Generated with ❤️ by ellipsis.dev |
- Change @type from Article to BlogPosting (more specific) - Add image property using OG image URL - Add wordCount for AEO optimization
|
Generated with ❤️ by ellipsis.dev |
|
Generated with ❤️ by ellipsis.dev |
This issue was already resolved in a previous commit. View fix commit - The |
…ovin' to 'Tovan' - Changed 22 instances of 'Series A team' to 'Series A - C team' across 20 blog posts - Changed 12 instances of 'Tovin' to 'Tovan' across 4 blog posts This broadens the messaging to better represent teams that Roo Code serves (Series A through C).
|
Generated with ❤️ by ellipsis.dev |
|
@roomote look into the failing tests and fix them |
Investigated the CI failures. All tests pass locally:
The CI failure was due to a timeout ( |
|
Generated with ❤️ by ellipsis.dev |
No issues found. The latest commit was a CI retry with no code changes.
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
|
Generated with ❤️ by ellipsis.dev |
Implements MKT-66 through MKT-74 for the blog section on roocode.com/blog.
Summary
Adds a complete blog section with:
Initial Posts (4 total)
Implementation Details
Content Layer (MKT-67):
src/content/blog/with Zod-validated frontmatterBlog Pages (MKT-68, MKT-69):
force-dynamic,runtime: nodejs)SEO (MKT-70):
Analytics (MKT-74):
blog_post_viewedandblog_index_viewedeventsNavigation (MKT-72):
Sitemap (MKT-71):
Testing
Files Changed
Important
Adds a dynamic blog section with initial posts, SEO, analytics, and navigation integration to the website.
/blogand/blog/[slug]pages inpage.tsxand[slug]/page.tsx.src/content/blog/with Zod-validated frontmatter.nav-bar.tsxandfooter.tsxto include blog links.next-sitemap.config.cjs.This description was created by
for 85736c8. You can customize this summary. It will automatically update as commits are pushed.