Skip to content

Conversation

@roomote
Copy link
Contributor

@roomote roomote bot commented Jan 27, 2026

Related GitHub Issue

Linear issue: MKT-68

Roo Code Task Context (Optional)

View task on Roo Code Cloud

Description

Adds the /blog index page that lists published posts with request-time publish gating.

Key implementation details:

  1. Dynamic rendering: export const dynamic = "force-dynamic" ensures publish gating is evaluated at request time (no caching)
  2. Node.js runtime: export const runtime = "nodejs" required for filesystem reads
  3. Content loading: Uses getAllBlogPosts() from MKT-67 content pipeline
  4. Display: Shows title, description, date ("Posted YYYY-MM-DD"), and up to 3 tags
  5. Empty state: Shows friendly message when no posts are published

Build output shows dynamic rendering:

ƒ /blog                                  173 B         104 kB

Test Procedure

  1. Build passes: pnpm -C apps/web-roo-code build
  2. Visit /blog in dev: pnpm -C apps/web-roo-code dev
  3. Verify first post appears (after publish date/time in PT)
  4. Click post to navigate to /blog/[slug] (requires MKT-69)

Pre-Submission Checklist

  • Issue Linked: This PR is linked to Linear issue MKT-68
  • Scope: Blog index page only
  • Self-Review: Verified dynamic rendering and Node.js runtime
  • Testing: Build and lint pass
  • Documentation Impact: N/A
  • Contribution Guidelines: Reviewed

Screenshots / Videos

N/A - requires full stack for visual testing

Documentation Updates

  • No documentation updates required

Additional Notes

Dependencies:

  • MKT-67: Content pipeline (included via merge)
  • MKT-73: First post (included via merge)

Enables:

  • MKT-69: Blog post page (/blog/[slug])

Get in Touch

Via Roo Code Cloud task link above


Important

Adds a dynamic /blog index page with publish gating, using Node.js for filesystem reads and content validation.

  • Behavior:
    • Adds /blog index page in page.tsx with dynamic rendering using export const dynamic = "force-dynamic".
    • Uses Node.js runtime for filesystem reads with export const runtime = "nodejs".
    • Displays title, description, date, and up to 3 tags for each post.
    • Shows a message when no posts are published.
  • Content Loading:
    • Implements getAllBlogPosts() in content.ts to load and filter posts based on publish status.
    • Validates frontmatter using zod schema in types.ts.
    • Handles errors with BlogContentError class in content.ts.
  • Dependencies:
    • Adds gray-matter to package.json for parsing markdown frontmatter.
  • Misc:
    • Adds a sample blog post prds-are-becoming-artifacts-of-the-past.md.
    • Updates index.ts to export new blog functions and types.

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

- Add gray-matter for frontmatter parsing
- Create BlogPost type and zod schema for validation
- Implement PT timezone helpers (getNowPt, parsePublishTimePt)
- Implement content loading (getAllBlogPosts, getBlogPostBySlug)
- Implement isPublished for request-time publish gating
- Add validation for frontmatter and duplicate slugs
- Create content/blog directory for markdown files

Closes: MKT-67
…he Past

Adds the first canonical blog post to validate the content pipeline:
- Title: PRDs Are Becoming Artifacts of the Past
- Slug: prds-are-becoming-artifacts-of-the-past
- Status: published
- Publish date: 2026-01-12 at 9:00am PT

Content sourced from Office Hours S01E15 with Paige Bailey.

Closes: MKT-73
- Create blog index page at /blog
- Use force-dynamic for request-time publish gating
- Require Node.js runtime for filesystem reads
- Display posts with title, description, and date
- Add empty state when no posts are published
- Include tags display (up to 3)

Closes: MKT-68
@roomote
Copy link
Contributor Author

roomote bot commented Jan 27, 2026

Rooviewer Clock   See task on Roo Cloud

All issues resolved. The missing parsePublishTimePt import has been added.

  • Fix publish_time_pt sorting in content.ts - string comparison produces incorrect ordering for times in h:mmam/pm format
Previous reviews

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

@github-actions
Copy link
Contributor

github-actions bot commented Jan 27, 2026

🚀 Preview deployed!

Your changes have been deployed to Vercel:

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

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

@mp-roocode mp-roocode self-assigned this Jan 27, 2026
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
@mp-roocode
Copy link
Collaborator

@roomote fix failing tests

@roomote
Copy link
Contributor Author

roomote bot commented Jan 28, 2026

Fixaroo Clock   See task on Roo Cloud

Fixed the reported issues. All local checks passed.

View commit | Revert commit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

2 participants