Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
71d912c
refactor(content-releases): remove status from default table columns
extpavelkhurs Apr 29, 2026
ccad5ac
feat(content-releases): pill display for release status field
extpavelkhurs Apr 29, 2026
b4f40b2
fix(content-releases): drop unused React import in ReleaseStatusField
extpavelkhurs Apr 29, 2026
97a8d90
feat(content-releases): pill display for release-item status field
extpavelkhurs Apr 29, 2026
4d36414
feat(content-releases): rename action label to 'Release action'
extpavelkhurs Apr 29, 2026
b6ddcc2
feat(content-releases): pill cell for release-item action column
extpavelkhurs Apr 29, 2026
eba1c70
feat(content-releases): label items join field as 'Resources'
extpavelkhurs Apr 29, 2026
d34a2df
test(content-releases): nested snapshot depth coverage for executePub…
extpavelkhurs Apr 29, 2026
610ad60
refactor(content-releases): remove errorLog field per single-release …
extpavelkhurs Apr 29, 2026
686e3f7
chore: regenerate importMap and add missing dev deps
extpavelkhurs Apr 29, 2026
b1ff35a
feat(content-releases): UX polish + rollback updates item status
extpavelkhurs Apr 29, 2026
6e4ee15
fix(content-releases): auto-derive release status from scheduledAt
extpavelkhurs Apr 29, 2026
370b60b
fix(content-releases): Publish Now button uses whitelist + reverted r…
extpavelkhurs Apr 29, 2026
d77f6f2
feat(content-releases): 'Reset to draft' button for failed/reverted r…
extpavelkhurs Apr 29, 2026
07a613c
fix(content-releases): sync release-item baseVersion on rollback restore
extpavelkhurs Apr 29, 2026
d866fb9
feat(content-releases): conflict recovery — failed banner with refres…
extpavelkhurs Apr 30, 2026
14dbf77
Merge remote-tracking branch 'origin/main' into feature/releases-plugin
extpavelkhurs Apr 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion apps/dev/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@
"start": "cross-env NODE_OPTIONS=--no-deprecation next start"
},
"dependencies": {
"@eslint/eslintrc": "^3.3.5",
"@focus-reactive/payload-plugin-ab": "workspace:*",
"@focus-reactive/payload-plugin-presets": "workspace:*",
"@focus-reactive/payload-plugin-comments": "workspace:*",
"@focus-reactive/payload-plugin-content-releases": "workspace:*",
"@focus-reactive/payload-plugin-presets": "workspace:*",
"@focus-reactive/payload-plugin-scheduling": "workspace:*",
"@payloadcms/db-sqlite": "3.79.0",
"@payloadcms/live-preview-react": "3.79.0",
Expand All @@ -28,6 +30,7 @@
"cross-env": "7.0.3",
"dotenv": "16.4.7",
"graphql": "16.8.1",
"libsql": "^0.5.29",
"next": "15.4.11",
"payload": "3.79.0",
"react": "19.2.1",
Expand Down
12 changes: 12 additions & 0 deletions apps/dev/src/app/(payload)/admin/importMap.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

113 changes: 112 additions & 1 deletion apps/dev/src/payload-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,19 +72,27 @@ export interface Config {
pages: Page;
presets: Preset;
comments: Comment;
releases: Release;
'release-items': ReleaseItem;
'payload-kv': PayloadKv;
'payload-jobs': PayloadJob;
'payload-locked-documents': PayloadLockedDocument;
'payload-preferences': PayloadPreference;
'payload-migrations': PayloadMigration;
};
collectionsJoins: {};
collectionsJoins: {
releases: {
items: 'release-items';
};
};
collectionsSelect: {
users: UsersSelect<false> | UsersSelect<true>;
media: MediaSelect<false> | MediaSelect<true>;
pages: PagesSelect<false> | PagesSelect<true>;
presets: PresetsSelect<false> | PresetsSelect<true>;
comments: CommentsSelect<false> | CommentsSelect<true>;
releases: ReleasesSelect<false> | ReleasesSelect<true>;
'release-items': ReleaseItemsSelect<false> | ReleaseItemsSelect<true>;
'payload-kv': PayloadKvSelect<false> | PayloadKvSelect<true>;
'payload-jobs': PayloadJobsSelect<false> | PayloadJobsSelect<true>;
'payload-locked-documents': PayloadLockedDocumentsSelect<false> | PayloadLockedDocumentsSelect<true>;
Expand Down Expand Up @@ -292,6 +300,70 @@ export interface Comment {
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "releases".
*/
export interface Release {
id: number;
name: string;
description?: string | null;
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'reverting' | 'reverted' | 'failed' | 'cancelled';
scheduledAt?: string | null;
publishedAt?: string | null;
/**
* Resources are added from the sidebar of any document — open a page and use 'Add Current State to Release' or 'Add Version to Release'.
*/
items?: {
docs?: (number | ReleaseItem)[];
hasNextPage?: boolean;
totalDocs?: number;
};
rollbackSnapshot?:
| {
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null;
rollbackSkipped?:
| {
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "release-items".
*/
export interface ReleaseItem {
id: number;
release: number | Release;
targetCollection: 'pages';
targetDoc: string;
action: 'publish' | 'unpublish';
status: 'pending' | 'published' | 'failed' | 'skipped' | 'reverted';
snapshot:
| {
[k: string]: unknown;
}
| unknown[]
| string
| number
| boolean
| null;
baseVersion?: string | null;
updatedAt: string;
createdAt: string;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-kv".
Expand Down Expand Up @@ -427,6 +499,14 @@ export interface PayloadLockedDocument {
| ({
relationTo: 'comments';
value: number | Comment;
} | null)
| ({
relationTo: 'releases';
value: number | Release;
} | null)
| ({
relationTo: 'release-items';
value: number | ReleaseItem;
} | null);
globalSlug?: string | null;
user: {
Expand Down Expand Up @@ -599,6 +679,37 @@ export interface CommentsSelect<T extends boolean = true> {
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "releases_select".
*/
export interface ReleasesSelect<T extends boolean = true> {
name?: T;
description?: T;
status?: T;
scheduledAt?: T;
publishedAt?: T;
items?: T;
rollbackSnapshot?: T;
rollbackSkipped?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "release-items_select".
*/
export interface ReleaseItemsSelect<T extends boolean = true> {
release?: T;
targetCollection?: T;
targetDoc?: T;
action?: T;
status?: T;
snapshot?: T;
baseVersion?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-kv_select".
Expand Down
Loading