Skip to content

feature(cms): serve backend-native article documents - #58

Merged
seoJing merged 4 commits into
mainfrom
feature/ops-article-list-detail
Oct 8, 2026
Merged

seoJing merged 4 commits into
mainfrom
feature/ops-article-list-detail

Conversation

@seoJing

@seoJing seoJing commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • Replace the owner article workspace with a paginated/searchable list and a rich JSON-document editor; retain the legacy review queue for migration visibility.
  • Read public posts, search index, sitemap and RSS from a D1 snapshot of backend-published documents, with backend fallback on a missing snapshot row.
  • Remove MDX authoring/rendering/build dependencies from the normal post path; retain original MDX source files only for migration and rollback.
  • Add D1 migration, staged/public snapshot export, public readback checks, and a zero-downtime cutover runbook in docs/native-article-transition.md.

Verification

  • 346 web tests passed with 80% branch coverage; editor smoke (2), formatting, lint, build, public readback tests (4), and Worker bundle-size gate passed (645.65 KiB gzip).
  • 201/201 existing MDX posts passed JSON conversion audit against the paired backend PR; local D1/Worker HTTP index, detail, sitemap and RSS smoke passed.
  • Owner review screenshots of list and editor were delivered in the private OpenClaw chat with sample data. They are not attached to this PR or a production visual-parity claim.

Deployment ordering — important

This repository's main-branch CI automatically deploys the Worker. Keep this PR unmerged until backend PR #15 is merged/released, the production DB has a verified 201-post private JSON conversion, the remote D1 migration is applied, and all 201 staged snapshots are preloaded and read back. Then merge this PR, verify public pages, and only afterward publish the backend JSON revisions and reconcile D1. Full procedure and rollback: docs/native-article-transition.md.

Remaining verification

Production data cutover, authenticated CMS visual interaction, and public-page visual parity have not been claimed by this PR.

seoJing and others added 3 commits October 7, 2026 13:44
Add paginated CMS management, a focused detail route, and Tiptap MDX prose controls.

Keep the MDX review queue and gate incomplete backend conversions.

Co-authored-by: seoJing <68586661+seoJing@users.noreply.github.com>
Forward publication issues to Ops and render safe inline formatting in backend article blocks.

Co-authored-by: seoJing <68586661+seoJing@users.noreply.github.com>
Co-authored-by: seoJing <68586661+seoJing@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 41 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: seoJing/SEOJing/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a333798a-0c78-49ec-8126-4bc95fb9e4e1
📥 Commits

Reviewing files that changed from the base of the PR and between 27a11cb and fefb62e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (55)
  • .github/workflows/ci.yml
  • apps/web/migrations/0002_public_articles.sql
  • apps/web/package.json
  • apps/web/scripts/check-public-blog-readback.mjs
  • apps/web/scripts/check-public-blog-readback.test.mjs
  • apps/web/scripts/content-fallback.integration.tsx
  • apps/web/scripts/deployment-backend-article-config.test.mjs
  • apps/web/scripts/generate-content-tree.ts
  • apps/web/scripts/prepare-public-article-snapshots.mjs
  • apps/web/scripts/public-article-migration-registry.mjs
  • apps/web/src/app/api/ops/articles/route.test.ts
  • apps/web/src/app/api/ops/articles/route.ts
  • apps/web/src/app/api/public/articles/index/route.ts
  • apps/web/src/app/blog/[...slug]/page.tsx
  • apps/web/src/app/blog/page.tsx
  • apps/web/src/app/llms.txt/route.ts
  • apps/web/src/app/ops/articles/edit/page.tsx
  • apps/web/src/app/ops/articles/page.tsx
  • apps/web/src/app/page.tsx
  • apps/web/src/app/rss.xml/route.ts
  • apps/web/src/app/sitemap.ts
  • apps/web/src/shared/analytics/analytics-dashboard-data.ts
  • apps/web/src/shared/config/index.ts
  • apps/web/src/shared/content/backend-article-document.tsx
  • apps/web/src/shared/content/backend-article.test.tsx
  • apps/web/src/shared/content/backend-article.tsx
  • apps/web/src/shared/content/public-article-store.test.ts
  • apps/web/src/shared/content/public-article-store.ts
  • apps/web/src/shared/content/resume-document.json
  • apps/web/src/shared/seo/content.ts
  • apps/web/src/widgets/blog-search/BlogSearch.tsx
  • apps/web/src/widgets/mdx-renderer/MdxRenderer.test.tsx
  • apps/web/src/widgets/mdx-renderer/MdxRenderer.tsx
  • apps/web/src/widgets/new-posts-carousel/NewPostsCarousel.tsx
  • apps/web/src/widgets/ops-articles/MdxReviewQueue.test.tsx
  • apps/web/src/widgets/ops-articles/MdxReviewQueue.tsx
  • apps/web/src/widgets/ops-articles/MdxRichEditor.test.tsx
  • apps/web/src/widgets/ops-articles/MdxRichEditor.tsx
  • apps/web/src/widgets/ops-articles/NativeDocumentEditor.test.tsx
  • apps/web/src/widgets/ops-articles/NativeDocumentEditor.tsx
  • apps/web/src/widgets/ops-articles/OpsArticleEditor.smoke.tsx
  • apps/web/src/widgets/ops-articles/OpsArticleEditor.tsx
  • apps/web/src/widgets/ops-articles/OpsArticleList.test.tsx
  • apps/web/src/widgets/ops-articles/OpsArticleList.tsx
  • apps/web/src/widgets/ops-articles/OpsArticleStepper.tsx
  • apps/web/src/widgets/ops-articles/OpsArticlesHome.tsx
  • apps/web/src/widgets/post-explorer/PostExplorer.tsx
  • apps/web/src/widgets/post-grid/PostGrid.tsx
  • apps/web/src/widgets/recently-read/RecentlyRead.tsx
  • apps/web/vitest.content-fallback.config.ts
  • apps/web/worker-configuration.d.ts
  • apps/web/worker/analytics.ts
  • apps/web/wrangler.jsonc
  • docs/native-article-transition.md
  • packages/ui/package.json
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Co-authored-by: seoJing <68586661+seoJing@users.noreply.github.com>
@seoJing
seoJing merged commit 7b8acac into main Oct 8, 2026
5 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