feat(cms): draft mode, versioning and CI improvements#419
Conversation
|
|
There was a problem hiding this comment.
Pull request overview
Enables draft mode + versioning for Payload pages/posts, adds Next.js preview route handlers to toggle draft mode after validating an authenticated admin session, and includes related access-control, media-storage, seeding, migrations, E2E tests, and CI improvements.
Changes:
- Add
_status+ Payload drafts/versioning (autosave) forpages/posts, including migrations and seed updates. - Introduce
/api/previewand/api/preview/exit, and passdraft: truethrough site data-access when draft mode is enabled. - Improve local dev media handling (no S3 required) and optimize CI behavior (paths-ignore + better cache keys), plus add E2E coverage for preview/drafts.
Reviewed changes
Copilot reviewed 31 out of 41 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| libs/shared/util/seed/src/lib/static-data/read-media-files.ts | Switch expected remote seed images from PNG to JPG. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-1.jpg | Add smaller seed image asset. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-2.jpg | Add smaller seed image asset. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-3.jpg | Add smaller seed image asset. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-1.png | Remove/replace oversized seed image. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-2.png | Remove/replace oversized seed image. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-3.png | Remove/replace oversized seed image. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-4.png | Remove/replace oversized seed image. |
| libs/shared/util/seed/src/lib/static-data/media/abstract-image-5.png | Remove/replace oversized seed image. |
| libs/shared/util/payload-types/src/lib/payload-types.ts | Add _status to Page/Post types; remove prefix from Media types/selectors. |
| libs/shared/util/payload-api/src/lib/utils/resolve-navigation-tree.ts | Avoid crashing when navigation references are missing (deleted docs). |
| libs/app-cms/util/plugins/src/lib/plugins/get-s3-storage-plugin.ts | Don’t disable local storage unless S3 is configured; remove prefix usage. |
| libs/app-cms/feature/seed/src/lib/local-api/ensure-post.ts | Seed posts as published. |
| libs/app-cms/feature/seed/src/lib/local-api/ensure-page.ts | Seed pages as published. |
| libs/app-cms/data-access/src/lib/get-authenticated-payload.ts | Update doc comment to reflect session auth behavior. |
| libs/app-cms/data-access/src/lib/collections/types.ts | Add draft?: boolean to query options. |
| libs/app-cms/data-access/src/lib/collections/get-posts.ts | Forward draft option to Payload find for posts. |
| libs/app-cms/data-access/src/lib/collections/get-post.ts | Support draft fetching and bypass status filter in preview context. |
| libs/app-cms/data-access/src/lib/collections/get-page.ts | Support draft fetching and bypass status filter in preview context. |
| apps/cms/src/security/user-or-api-key-access.ts | Add hasStatus flag to restrict API key reads to published/null-status docs. |
| apps/cms/src/payload.config.ts | Route live preview through /api/preview to enable draft mode before redirect. |
| apps/cms/src/migrations/index.ts | Register new migrations for drafts/versioning and dropping media prefix. |
| apps/cms/src/migrations/20260416_053006_cod_293.ts | Create drafts/versioning tables/types; add _status for pages/posts. |
| apps/cms/src/migrations/20260418_101207_cod_293_drop_media_prefix.ts | Drop unused media.prefix column (and restore on down). |
| apps/cms/src/components/NavigationArrayRowLabel.tsx | Guard against missing navigation references when rendering row labels. |
| apps/cms/src/collections/posts/posts.collection.ts | Add _status column in admin list, enable drafts/autosave, tighten API key access. |
| apps/cms/src/collections/pages/pages.collection.ts | Add _status column in admin list, enable drafts/autosave, tighten API key access. |
| apps/cms/src/app/api/preview/route.ts | New route to validate session and enable Next.js draft mode. |
| apps/cms/src/app/api/preview/exit/route.ts | New route to disable Next.js draft mode. |
| apps/cms/src/app/(site)/posts/[...slug]/page.tsx | Pass draft-mode state into getPost. |
| apps/cms/src/app/(site)/page.tsx | Pass draft-mode state into getPage for landing page. |
| apps/cms/src/app/(site)/[...slug]/page.tsx | Pass draft-mode state into getPageData. |
| apps/cms/.env.local | Remove hardcoded dev S3 credentials; document optional S3 usage. |
| apps/cms-e2e/src/site/draft-mode.spec.ts | New E2E coverage for draft visibility + preview + publish flow. |
| apps/cms-e2e/src/api/preview.spec.ts | New E2E coverage for preview enable/exit behaviors. |
| apps/cms-e2e/src/admin/pages.admin.spec.ts | Update admin UI test to match new publish button label. |
| apps/cms-e2e/src/admin/drafts.admin.spec.ts | New E2E coverage for status column visibility. |
| .github/workflows/e2e-matrix.yml | Fix cache key to use lockfile hash instead of run_id. |
| .github/workflows/ci.yml | Skip CI for docs/media-only PRs; skip E2E/integration/smoke in merge queue. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
View your CI Pipeline Execution ↗ for commit 1b8b66f
☁️ Nx Cloud last updated this comment at |
|
✨ Your pull request projects are ready for preview
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #419 +/- ##
=======================================
Coverage 64.19% 64.19%
=======================================
Files 207 207
Lines 5348 5348
Branches 735 735
=======================================
Hits 3433 3433
Misses 1865 1865
Partials 50 50 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
✨ Your pull request projects are ready for preview
|
|
✨ Your pull request projects are ready for preview
|
Summary
versions.draftswith autosave (3 s interval) onpagesandpostscollections; adds_statusfield and DB migration for_pages_v/_posts_vtables/api/previewand/api/preview/exitNext.js route handlers enable/disable draft mode after verifying a Payload admin user session; site pages passdraft: trueto data-access functions when draft mode is activeuserOrApiKeyAccessextended withhasStatusflag to restrict API key clients to published/null-status documents while leaving admin users unrestrictedprefixcolumn from the media table via migrationpaths-ignoreon PR trigger skips CI for docs/media-only changes; merge queue skips E2E, integration and smoke tests (already verified in PR); fixes ephemeralrun_idcache key in e2e-matrixTest plan
nx dev-fresh cms— verify migrations apply cleanly and seed completesapps/cms/public/media/locally (no S3 credentials needed)nx e2e cms-e2e— new tests inapi/preview.spec.ts,admin/drafts.admin.spec.ts,site/draft-mode.spec.tspass🤖 Generated with Claude Code