Skip to content

Conversation

@roomote
Copy link
Contributor

@roomote roomote bot commented Jan 30, 2026

Implements MKT-66 through MKT-74 for the blog section on roocode.com/blog.

Summary

Adds a complete blog section with:

  • Content layer with Markdown/frontmatter and Pacific Time scheduling
  • Blog index page and individual post pages with dynamic SSR
  • SEO metadata and Schema.org structured data
  • PostHog analytics events
  • Navigation and sitemap integration
  • Previous/next post navigation

Initial Posts (4 total)

  1. PRDs Are Becoming Artifacts of the Past (Jan 12)
  2. Code Review Got Faster, Not Easier (Jan 19)
  3. Vibe Coders Build and Rebuild, They Do Not Migrate (Jan 26)
  4. Async Agents Change the Speed vs Quality Calculus (Feb 2)

Implementation Details

Content Layer (MKT-67):

  • Markdown files in src/content/blog/ with Zod-validated frontmatter
  • Pacific Time scheduling evaluated at request-time (no deploy needed for time-gating)
  • gray-matter for parsing, react-markdown + remark-gfm for rendering

Blog Pages (MKT-68, MKT-69):

  • Index page at /blog with dynamic SSR (force-dynamic, runtime: nodejs)
  • 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

Testing

  • TypeScript compiles with no errors
  • Lint passes with no warnings
  • Frontmatter validation catches invalid formats

Files Changed

  • 21 files changed
  • New: docs/blog.md, blog pages, blog components, blog content
  • Modified: nav-bar.tsx, footer.tsx, constants.ts, sitemap config

Important

Adds a dynamic blog section with initial posts, SEO, analytics, and navigation integration to the website.

  • Blog Section:
    • Adds blog section with dynamic SSR for /blog and /blog/[slug] pages in page.tsx and [slug]/page.tsx.
    • Integrates SEO metadata, Schema.org structured data, and PostHog analytics.
    • Implements previous/next post navigation.
  • Content Management:
    • Uses Markdown files in src/content/blog/ with Zod-validated frontmatter.
    • Supports Pacific Time scheduling for post visibility.
  • Navigation and Sitemap:
    • Updates nav-bar.tsx and footer.tsx to include blog links.
    • Configures dynamic sitemap paths in next-sitemap.config.cjs.
  • Initial Posts:
    • Adds 4 initial blog posts with specific publish dates and times.
  • Testing and Validation:
    • Ensures TypeScript and linting pass without errors.
    • Validates frontmatter schema to catch invalid formats.

This description was created by Ellipsis for 85736c8. You can customize this summary. It will automatically update as commits are pushed.

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)
@roomote
Copy link
Contributor Author

roomote bot commented Jan 30, 2026

Rooviewer Clock   See task on Roo Cloud

Review complete. No issues found.

The blog section implementation is well-structured with proper Pacific Time scheduling, dynamic SSR for request-time publish gating, comprehensive SEO metadata, and clean PostHog analytics integration. The test updates in HistoryPreview.spec.tsx correctly align with the refactored component, properly mocking useGroupedTasks and TaskGroupItem dependencies.

Previous reviews

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

@mp-roocode mp-roocode self-assigned this Jan 30, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Jan 30, 2026

🚀 Preview deployed!

Your changes have been deployed to Vercel:

Preview URL: https://roo-code-website-5vf5mlfro-roo-code.vercel.app

This preview will be updated automatically when you push new commits to this PR.

@mp-roocode
Copy link
Collaborator

@roomote fix the failing test

@roomote
Copy link
Contributor Author

roomote bot commented Jan 30, 2026

Fixaroo Clock   See task on Roo Cloud

Fixed the failing test. The HistoryPreview component was refactored to use useGroupedTasks and TaskGroupItem, but the test was still mocking the old TaskItem component. Updated the test to properly mock the new dependencies. All local checks passed.

View commit | Revert commit

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
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.

2 participants