diff --git a/.changeset/11591-org-flows-copy.md b/.changeset/11591-org-flows-copy.md new file mode 100644 index 0000000000..cacd51d0b6 --- /dev/null +++ b/.changeset/11591-org-flows-copy.md @@ -0,0 +1,10 @@ +--- +'@object-ui/app-shell': patch +'@object-ui/i18n': patch +--- + +Studio's "Organization flows" page no longer says its drafts publish atomically, and a deep link to a flow that is not on the page no longer says no metadata designers are registered (objectui#11591). + +On the package-less page (`/studio/~org/automations`), the pending-changes sheet read "Publishing releases the 1 pending draft of this package atomically." That page has no package, and its Publish promotes each draft by itself: a draft that fails stays pending while the others go live. The sheet now says so there, through a new `preview.changes.confirmNoteSeparate` plural family in all ten language packs. A package's sheet keeps its sentence unchanged. `DraftChangesPanel` picks the sentence from its `packageId` prop: with a package, the atomic sentence; without one, the per-draft sentence. + +On the Automations pillar, the canvas chip read the designer registry for the open flow's type. With no flow open (a deep link naming a flow the list does not hold, or an empty list), it found none and showed "No metadata designers are registered in this session…" beside the right message, on a page whose flow designer is registered. The chip now reads the registry for the pillar's own type, `flow`, as the configuration panel beside it already did. The notice still shows when no designer is registered, whether or not a flow is open. diff --git a/packages/app-shell/src/preview/DraftChangesPanel.tsx b/packages/app-shell/src/preview/DraftChangesPanel.tsx index 56532f29f8..26054d525a 100644 --- a/packages/app-shell/src/preview/DraftChangesPanel.tsx +++ b/packages/app-shell/src/preview/DraftChangesPanel.tsx @@ -335,7 +335,12 @@ function EntryDetail({ entry }: { entry: DraftChangeEntry }) { export interface DraftChangesPanelProps { open: boolean; onOpenChange: (open: boolean) => void; - /** When set, list only pending drafts belonging to this package (Studio is package-scoped). */ + /** + * When set, list only pending drafts belonging to this package (Studio is + * package-scoped), and the confirm note says they publish as one atomic + * batch. Without one, the note says each draft publishes by itself + * (objectui#11591). + */ packageId?: string | null; /** * Narrows the listed drafts further, for a host whose scope the `_drafts` @@ -627,11 +632,22 @@ export function DraftChangesPanel({ {onPublish && (entries?.length ?? 0) > 0 && !error && (

- {t('preview.changes.confirmNote', { - count: entries!.length, - defaultValue: - 'Publishing releases all {{count}} pending drafts of this package atomically.', - })} + {/* objectui#11591 — the note states what THIS scope's Publish + does. Only a package publishes as one atomic batch (`POST + /packages/:id/publish-drafts`); with no package there is no + batch door, so the caller promotes each draft by itself and a + draft that fails stays pending while the others go live. */} + {packageId + ? t('preview.changes.confirmNote', { + count: entries!.length, + defaultValue: + 'Publishing releases all {{count}} pending drafts of this package atomically.', + }) + : t('preview.changes.confirmNoteSeparate', { + count: entries!.length, + defaultValue: + 'Publishing releases the {{count}} pending drafts one at a time: a draft that fails stays pending while the others go live.', + })}