Releases: vivid-planet/dextinity
Release list
10.4.0
@dextinity/cms-admin@10.4.0
Minor Changes
-
4b9ead5: Add
iconoption toTipTapInlineStyleCustom inline styles shown in the rich text toolbar's "More options" menu can now specify an
icon, displayed next to the label the same way Superscript/Subscript already are:createTipTapRichTextBlock({ inlineStyles: [ { name: "highlight", label: <FormattedMessage id="..." defaultMessage="Highlight" />, icon: RteHighlight, element: (props) => <span style={{ backgroundColor: "#fff3cd" }} {...props} />, }, ], });
iconis optional; menu items without one keep rendering as before. -
4b9ead5: Move custom TipTap inline styles into the toolbar's "More options" menu
Custom
inlineStyles(e.g. a project-specific "Uppercase" style) used to render as their own always-visible dropdown in the rich text toolbar. They now appear as toggleable menu items inside the "More options" ("...") menu, next to Superscript/Subscript, matching how the previous Draft.js-based rich text editor exposed custom inline styles as toolbar toggles rather than a separate dropdown. -
a00f0b2: Support wildcard values for content scope dimensions in
getContentScopesForUsergetContentScopesForUsercan now use the wildcard value"*"as the value of a content scope dimension to grant access to any value for that dimension. The wildcard is matched during the content scope check, so it does not need to be part ofavailableContentScopes.Example
getContentScopesForUser(user: User): ContentScopesForUser { // Grant access to every language within the "main" domain return [{ domain: "main", language: "*" }]; }
For users with access to all content scopes,
currentUser.permissions[].contentScopesnow returns a single wildcard scope (e.g.[{ domain: "*", language: "*" }]) instead of the enumeratedavailableContentScopes. The defaultisAllowedandcurrentUser.allowedContentScopeshandle the wildcard; a customisAllowedmust treat"*"as matching any value of a dimension.
Patch Changes
-
b6cbbd9: Move icons to the start of the TipTap "More options" menu items
Superscript, Subscript, and custom inline-style menu items placed their icon directly after the label using a custom flexbox layout, so the icon's horizontal position varied with the label's length. They now use MUI's
ListItemIcon/ListItemTextwith the icon leading the label, matching MUI's own menu item convention.
@dextinity/cms-api@10.4.0
Minor Changes
-
a00f0b2: Support wildcard values for content scope dimensions in
getContentScopesForUsergetContentScopesForUsercan now use the wildcard value"*"as the value of a content scope dimension to grant access to any value for that dimension. The wildcard is matched during the content scope check, so it does not need to be part ofavailableContentScopes.Example
getContentScopesForUser(user: User): ContentScopesForUser { // Grant access to every language within the "main" domain return [{ domain: "main", language: "*" }]; }
For users with access to all content scopes,
currentUser.permissions[].contentScopesnow returns a single wildcard scope (e.g.[{ domain: "*", language: "*" }]) instead of the enumeratedavailableContentScopes. The defaultisAllowedandcurrentUser.allowedContentScopeshandle the wildcard; a customisAllowedmust treat"*"as matching any value of a dimension.
@dextinity/mail-react@10.4.0
Patch Changes
-
98c1097: Fix head CSS lost after the first
@mediablock in Outlook.com and the Outlook apps for iOS and AndroidThese clients stop reading a
<style>tag at the first}}, which minified CSS writes at the end of every@mediablock. -
bb5d22a: Apply the Storybook addon's "Use public image URLs" toggle to the Outlook VML image source
-
583dd13: Fix
borderRadiuson images in classic Outlook, which rounded corners twice as much as the value asked for
@dextinity/site-react@10.4.0
Patch Changes
- 0e88bab: Fix block preview outlines being cut off when
IFrameBridgeProviderdoes not start at the left edge of the page, for instance because of padding or centering
8.31.0
@comet/admin@8.31.0
Patch Changes
-
be2d64f: Show the GraphQL error messages in the error dialog again
createErrorDialogApolloLinkonly passed the message of network errors to theErrorDialog.
For GraphQL errors, the dialog showed "Unknown error" instead of the actual messages (e.g., the message of aBadRequestExceptionthrown by the API).
@comet/cms-admin@8.31.0
Minor Changes
-
f3907cc: Remove the "Permissions" and "Scopes" columns from the user permissions users list
The users list now shows the name, the email and the row actions. The
permissionsCountandcontentScopesCountfields ofUserPermissionsUserare deprecated and now return0. They will be removed in the next major version.
Patch Changes
-
8b5f06f: Stop deduplicating content scopes in the user permissions API
UserPermissionsService.getAvailableContentScopes(),getContentScopes()andgetPermissionsAndContentScopes()no longer deduplicate their content scopes. Deduplication only mattered for how the scopes are displayed, so it now happens in the admin where the lists are rendered. This also removes thelodash.uniqwithdependency.Projects that consume
UserPermissionsPublicServiceor thecurrentUser/availableContentScopesGraphQL fields directly and rely on the scopes being unique should deduplicate them on their side.
@comet/cms-api@8.31.0
Minor Changes
-
8b5f06f: Stop deduplicating content scopes in the user permissions API
UserPermissionsService.getAvailableContentScopes(),getContentScopes()andgetPermissionsAndContentScopes()no longer deduplicate their content scopes. Deduplication only mattered for how the scopes are displayed, so it now happens in the admin where the lists are rendered. This also removes thelodash.uniqwithdependency.Projects that consume
UserPermissionsPublicServiceor thecurrentUser/availableContentScopesGraphQL fields directly and rely on the scopes being unique should deduplicate them on their side. -
f3907cc: Remove the "Permissions" and "Scopes" columns from the user permissions users list
The users list now shows the name, the email and the row actions. The
permissionsCountandcontentScopesCountfields ofUserPermissionsUserare deprecated and now return0. They will be removed in the next major version.
10.3.0
@dextinity/admin@10.3.0
Patch Changes
-
4d6408f: Fix
FormMutationthrowing when renderedFormMutationaccessed its children throughthis.propsalthough it is a function component. Modules are always in strict mode, sothiswasundefinedand rendering the component failed withTypeError: Cannot read properties of undefined (reading 'props').
@dextinity/cms-admin@10.3.0
Minor Changes
-
504c97f: Expose
setPageStatein theusePagehook returned bycreateUsePageUntil now, the page state could only be read, so features that modify a page's content had to be built into
createUsePageitself (liketranslateContent).
setPageStateallows applications to change the page's content programmatically, for instance, to apply changes suggested by an assistant.
The changes are applied locally only,handleSavePagepersists them.Additionally, the
PageStatetype is exported now.Example
const { pageState, setPageState } = usePage({ pageId: id }); const applySuggestedHtmlTitle = (htmlTitle: string) => { setPageState((pageState) => { if (!pageState?.document) { return pageState; } return { ...pageState, document: { ...pageState.document, seo: { ...pageState.document.seo, htmlTitle }, }, }; }); };
-
ddea65d: Remove the "Permissions" and "Scopes" columns from the user permissions users list
The users list now shows the name, the email and the row actions. The
permissionsCountandcontentScopesCountfields ofUserPermissionsUserare deprecated and now return0. They will be removed in the next major version. -
66cb98a: DAM: Allow replacing a file with a file of the same category instead of the same mimetype
Previously, "Replace File" only accepted a file with the exact same mimetype, so a JPEG couldn't be replaced by a WebP even though both are pixel images. Now a file can be replaced by any file of the same category:
Category Examples pixelImageJPEG, PNG, WebP svgImageSVG audioMP3, OGG, WAV videoMP4, WebM, QuickTime documentPDF, DOCX, VTT, ZIP SVG images and pixel images remain separate categories.
Files in the
documentcategory still require the exact same mimetype, since their purposes vary too much: a VTT file is a video's subtitles, whereas a PDF is a download, so replacing one with the other must not be possible.The file's usages stay unchanged. Only the extension of the file's name is adjusted to match the new file (for instance,
photo.jpgbecomesphoto.webp). If a file with that name already exists in the same folder, a counter is appended to keep the name unique (for instance,photo-2.webp), and the Admin shows a snackbar informing about the new name.The new
getDamFileCategoryhelper is exported from both packages:import { getDamFileCategory } from "@dextinity/cms-api"; // or "@dextinity/cms-admin" getDamFileCategory("image/webp"); // "pixelImage" getDamFileCategory("image/svg+xml"); // "svgImage"
Patch Changes
-
12be273: Fix the block list not marking the block that is hovered in a block preview
HoverPreviewComponentbuilt the block's route fromuseRouteMatch, which does not see the path of aSubRoute. Below aSaveBoundarythe route therefore missed that segment and never matched the route the preview reports, so hovering a block in the preview left its list entry unmarked, and hovering a list entry left the block in the preview unmarked. The route is now built fromuseSubRoutePrefix, the prefix the block routes inBlockPreviewContextalready use. -
876887b: Fix order of
linkand special character (nonBreakingSpace,softHyphen) buttons in the TipTap rich text block toolbarThey were swapped;
linknow appears before the special character buttons. -
0c211e9: Stop deduplicating content scopes in the user permissions API
UserPermissionsService.getAvailableContentScopes(),getContentScopes()andgetPermissionsAndContentScopes()no longer deduplicate their content scopes. Deduplication only mattered for how the scopes are displayed, so it now happens in the admin where the lists are rendered. This also removes thelodash.uniqwithdependency.Projects that consume
UserPermissionsPublicServiceor thecurrentUser/availableContentScopesGraphQL fields directly and rely on the scopes being unique should deduplicate them on their side.
@dextinity/cms-api@10.3.0
Minor Changes
-
0c211e9: Stop deduplicating content scopes in the user permissions API
UserPermissionsService.getAvailableContentScopes(),getContentScopes()andgetPermissionsAndContentScopes()no longer deduplicate their content scopes. Deduplication only mattered for how the scopes are displayed, so it now happens in the admin where the lists are rendered. This also removes thelodash.uniqwithdependency.Projects that consume
UserPermissionsPublicServiceor thecurrentUser/availableContentScopesGraphQL fields directly and rely on the scopes being unique should deduplicate them on their side. -
ddea65d: Remove the "Permissions" and "Scopes" columns from the user permissions users list
The users list now shows the name, the email and the row actions. The
permissionsCountandcontentScopesCountfields ofUserPermissionsUserare deprecated and now return0. They will be removed in the next major version. -
66cb98a: DAM: Allow replacing a file with a file of the same category instead of the same mimetype
Previously, "Replace File" only accepted a file with the exact same mimetype, so a JPEG couldn't be replaced by a WebP even though both are pixel images. Now a file can be replaced by any file of the same category:
Category Examples pixelImageJPEG, PNG, WebP svgImageSVG audioMP3, OGG, WAV videoMP4, WebM, QuickTime documentPDF, DOCX, VTT, ZIP SVG images and pixel images remain separate categories.
Files in the
documentcategory still require the exact same mimetype, since their purposes vary too much: a VTT file is a video's subtitles, whereas a PDF is a download, so replacing one with the other must not be possible.The file's usages stay unchanged. Only the extension of the file's name is adjusted to match the new file (for instance,
photo.jpgbecomesphoto.webp). If a file with that name already exists in the same folder, a counter is appended to keep the name unique (for instance,photo-2.webp), and the Admin shows a snackbar informing about the new name.The new
getDamFileCategoryhelper is exported from both packages:import { getDamFileCategory } from "@dextinity/cms-api"; // or "@dextinity/cms-admin" getDamFileCategory("image/webp"); // "pixelImage" getDamFileCategory("image/svg+xml"); // "svgImage"
Patch Changes
-
3ffe174: Throw a validation error for malformed UUID id args in
@AffectedEntityThe permission check loads affected entities before input validation (e.g.,
@IsUUID()) runs, because guards execute before pipes. A malformed UUID therefore reached PostgreSQL, which failed withinvalid input syntax for type uuidand surfaced as an internal server error.Now id args for entities with a UUID primary key (and
pageTreeNodeIdArgvalues) are validated upfront, and aDextinityValidationExceptionis thrown for malformed UUIDs.
@dextinity/cli@10.3.0
Minor Changes
-
7e3a30f: Add
TipTapNodetype togenerate-block-typesoutput and use it for TipTap rich text blocksTipTap rich text blocks were typed as
unknown, forcing consumers to cast the content before rendering it.
They are now typed asTipTapNode, which is generated intoblocks.generated.ts(together withTipTapMark) whenever a TipTap rich text block is used.Example
// Before const content = data.tipTapContent as TipTapNode; // After const content = data.tipTapContent;
@dextinity/mail-react@10.3.0
Patch Changes
7.26.1
@comet/cms-admin@7.26.1
Patch Changes
-
ccda213: Update
axiosto^0.33.0to fix known security vulnerabilitiesThe previously used
axios@^0.21.0is affected by multiple published advisories (among them SSRF and credential leakage via absolute URLs,Proxy-Authorizationleakage across redirects, prototype-pollution gadgets and several denial-of-service issues). Version0.33.0of the maintained 0.x line contains the fixes for all of them while keeping the API compatible, so no changes are required in projects using Comet.
10.2.0
@dextinity/cms-admin@10.2.0
Minor Changes
-
7f9e1f7: Add
createDamVideoBlockfactoryThe factory allows restricting what the editor can set on a video, for sites that don't use all of it.
Pass what the site supports viasupports— anything left out isn't shown in the block's admin component anymore.
Values that are already stored stay untouched, the editor just can't change them anymore.
The preview image remains part of the block's data in any case, leaving it out only hides it from the editor.supportstakes"controls"(the playback options autoplay, loop and show controls, offered together since autoplay and show controls depend on each other) and"previewImage"(the poster image).DamVideoBlockis now created with the factory and is still exported, so nothing needs to be changed in existing applications.Example
A site that renders no poster image:
import { createDamVideoBlock } from "@dextinity/cms-admin"; export const DamVideoBlock = createDamVideoBlock({ supports: ["controls"] });
A site that only reads the video file's URL, so the editor is left with just the file to choose:
export const DamVideoBlock = createDamVideoBlock({ supports: [] });
-
edf2027: Allow restricting selectable heading levels in the TipTap rich text block via a new
headingLevelsoptioncreateTipTapRichTextBlockaccepts a newheadingLevels?: number[]option to limit which heading levels (1-6) are selectable. Defaults to[1, 2, 3, 4, 5, 6], so existing usages are unaffected. Must be a non-empty array of unique integers between 1 and 6, otherwise an error is thrown.createTipTapRichTextBlock({ supports: ["heading"], headingLevels: [2, 3, 4], });
Patch Changes
-
30fad2a: Make the TipTap rich text block's toolbar sticky
The toolbar now stays fixed at the top of the editor while scrolling through longer text content, matching the previous Draft.js-based rich text editor's behavior.
@dextinity/cms-api@10.2.0
Minor Changes
-
a4ec0fe: Make the DAM's scope-based access control optional
The DAM controllers required an
AccessControlService, soDamFilesModulecouldn't be registered withoutUserPermissionsModule. The service is optional now. A DAM that has neither the service nor the option below refuses to start, because its GraphQL resolvers would serve requests unguarded.Pass
disableScopeAccessControlto run the DAM behind your own authentication guard, without any scope checks:DamFilesModule.register({ damConfig, Scope: DamScope, File: DamFile, Folder: DamFolder, disableScopeAccessControl: true, });
The option is only available on
DamFilesModule, not onDamModule, which always runs withUserPermissionsModule.Applications using
DamModuletogether withUserPermissionsModuleare unaffected: the endpoints keep using the registeredAccessControlService. -
edf2027: Allow restricting selectable heading levels in the TipTap rich text block via a new
headingLevelsoptioncreateTipTapRichTextBlockaccepts a newheadingLevels?: number[]option to limit which heading levels (1-6) are allowed, mirroring the same option added to@dextinity/cms-admin. Content with a heading level outside this set is rejected during validation. Defaults to[1, 2, 3, 4, 5, 6], so existing usages are unaffected. Must be a non-empty array of unique integers between 1 and 6, otherwise an error is thrown.createTipTapRichTextBlock({ supports: ["heading"], headingLevels: [2, 3, 4], });
@dextinity/mail-react@10.2.0
Minor Changes
-
bdd62e9: Add a
borderRadiusprop toMjmlImage,HtmlImage,MjmlPixelImageBlockandHtmlPixelImageBlockExample
<MjmlImage src="https://example.com/image.jpg" alt="Example" width={520} borderRadius={16} />
A
styleprop passed by the caller wins overborderRadius.
Patch Changes
-
f3e81aa: Round images in classic Outlook
borderRadiusonMjmlImage,HtmlImage,MjmlPixelImageBlockandHtmlPixelImageBlocknow also rounds the image in classic Outlook.Classic Outlook rounds the image only when
widthandheightare given in pixels, and the radius is given in pixels or as"50%". In every other case the image stays square in that client. -
c980b75: Fix the
MjmlButtonbackground image not reaching clients that drop<style>blocks
10.1.0
@dextinity/mail-react@10.1.0
Minor Changes
-
b0577d5: Add
listto the RichText block'sblockTypes, so a custom block type renders as a listUse it for a list in more than one text variant. A draft block has only one block type, so each variant needs a block type of its own.
Example
export const { MjmlRichTextBlock, HtmlRichTextBlock } = createRichTextBlock({ blockTypes: { "unordered-list-item": { variant: "copy" }, "unordered-list-item-large": { variant: "copyLarge", list: "unordered" }, "ordered-list-item-large": { variant: "copyLarge", list: "ordered" }, }, });
For backward compatibility,
unordered-list-itemandordered-list-itemstill render as lists withoutlist.
10.0.1
@dextinity/admin@10.0.1
Patch Changes
-
48748b0: Show the GraphQL error messages in the error dialog again
createErrorDialogApolloLinkonly passed the message of network errors to theErrorDialog.
For GraphQL errors, the dialog showed "Unknown error" instead of the actual messages (e.g., the message of aBadRequestExceptionthrown by the API).
@dextinity/agent-features@10.0.1
Patch Changes
-
823d663: Fix the package being published without any skills and rules
The
skills/andrules/folders were symlinked to the folders at the repository root. Since pnpm v11 no longer follows symlinked directories when packing, every release since@comet/agent-featuresv9.4.0 contained nothing but the manifest, sodextinity install-agent-featuresfound no skills or rules to install. The folders are copied into the package when it's built now.
9.5.1
@comet/agent-features@9.5.1
Patch Changes
-
dd4d2f2: Fix the package being published without any skills and rules
The
skills/andrules/folders were symlinked to the folders at the repository root. Since pnpm v11 no longer follows symlinked directories when packing, every release since@comet/agent-featuresv9.4.0 contained nothing but the manifest, soinstall-agent-featuresfound no skills or rules to install. The folders are copied into the package when it's built now.
10.0.0
@dextinity/admin@10.0.0
Major Changes
-
f843a5e: Rename
@comet/adminto@dextinity/adminUpdate the dependency in
package.jsonand all imports:- import { MainContent } from "@comet/admin"; + import { MainContent } from "@dextinity/admin";
Breaking changes
- Rename
createCometThemetocreateDextinityTheme - Rename the theme component prefix from
CometAdmintoDextinityAdmin. This affectscomponentsoverrides passed tocreateDextinityTheme, thenamepassed touseThemePropsin custom components and the generated CSS class names (.CometAdminClearInputAdornment-root->.DextinityAdminClearInputAdornment-root) - Rename the CSS variables from
--comet-admin-*to--dextinity-admin-*, for instance,--comet-admin-master-layout-content-top-spacing->--dextinity-admin-master-layout-content-top-spacing - Remove the
CometLogocomponent. UseDextinityLogofrom@dextinity/admin-iconsinstead
- Rename
@dextinity/admin-babel-preset@10.0.0
Major Changes
-
f843a5e: Rename
@comet/admin-babel-presetto@dextinity/admin-babel-presetUpdate the dependency in
package.jsonand the preset name in your Babel configuration:- "presets": ["@comet/admin-babel-preset"] + "presets": ["@dextinity/admin-babel-preset"]
@dextinity/admin-color-picker@10.0.0
Major Changes
-
f843a5e: Rename
@comet/admin-color-pickerto@dextinity/admin-color-pickerUpdate the dependency in
package.jsonand all imports.Breaking changes
- Rename the theme component prefix from
CometAdmintoDextinityAdmin. This affectscomponentsoverrides passed tocreateDextinityThemeand the generated CSS class names
- Rename the theme component prefix from
@dextinity/admin-date-time@10.0.0
Major Changes
-
f843a5e: Rename
@comet/admin-date-timeto@dextinity/admin-date-timeUpdate the dependency in
package.jsonand all imports.Breaking changes
- Rename the theme component prefix from
CometAdmintoDextinityAdmin. This affectscomponentsoverrides passed tocreateDextinityThemeand the generated CSS class names
- Rename the theme component prefix from
@dextinity/admin-generator@10.0.0
Major Changes
-
f843a5e: Rename
@comet/admin-generatorto@dextinity/admin-generatorUpdate the dependency in
package.jsonand all imports.Breaking changes
-
Rename the
comet-admin-generatorbinary todextinity-admin-generator:- "generate-admin": "comet-admin-generator generate" + "generate-admin": "dextinity-admin-generator generate"
-
Rename the config file suffix from
.cometGen.tsxto.dextinityGen.tsx. The default file pattern is nowsrc/**/*.dextinityGen.{ts,tsx} -
Change the header of generated files. Rerun the generator to update them
-
@dextinity/admin-icons@10.0.0
Major Changes
-
f843a5e: Rename
@comet/admin-iconsto@dextinity/admin-iconsUpdate the dependency in
package.jsonand all imports.Breaking changes
-
Remove the
CometandCometOutlineicons -
Remove the
CometColorcomponent. UseDextinityIconinstead, which provides thelight,darkandmaskedvariants -
Remove the
CometDigitalExperienceLogocomponent. UseDextinityLogoinstead, which provides thelight,darkandmonochromevariants -
Rename the
CometColormember of theIconNametype toDextinityIconDextinityIconandDextinityLogoderive their size fromfontSize, so call sites no longer passwidth/heightpairs:- <CometDigitalExperienceLogo width={132} height={30} /> + <DextinityLogo sx={{ fontSize: 30 }} />
-
@dextinity/admin-rte@10.0.0
Major Changes
-
f843a5e: Rename
@comet/admin-rteto@dextinity/admin-rteUpdate the dependency in
package.jsonand all imports.Breaking changes
- Rename the theme component prefix from
CometAdmintoDextinityAdmin. This affectscomponentsoverrides passed tocreateDextinityThemeand the generated CSS class names - Rename the
--comet-admin-rte-outer-border-colorCSS variable to--dextinity-admin-rte-outer-border-color
- Rename the theme component prefix from
@dextinity/brevo-admin@10.0.0
Major Changes
-
f843a5e: Rename
@comet/brevo-adminto@dextinity/brevo-adminUpdate the dependency in
package.jsonand all imports.Breaking changes
- Resolve the configuration via
DextinityConfigProviderinstead ofCometConfigProvider
- Resolve the configuration via
@dextinity/cms-admin@10.0.0
Major Changes
-
f843a5e: Rename
@comet/cms-adminto@dextinity/cms-adminUpdate the dependency in
package.jsonand all imports.Breaking changes
- Rename
CometConfigProvidertoDextinityConfigProvider,useCometConfigtouseDextinityConfigand theCometConfigtype toDextinityConfig. By convention, the project'scomet-config.jsonis renamed todextinity-config.json - Rename the
cometTypeproperty of iframe messages todextinityType. The site must use a matching@dextinity/site-reactor@dextinity/site-nextjsversion - Rename the site preview cookie from
__comet_site_previewto__dextinity_site_previewand the impersonation cookie fromcomet-impersonate-user-idtodextinity-impersonate-user-id - Expect the renamed
DextinityImageResolutionExceptionandDextinityValidationExceptionerror codes in DAM file uploads. A matching@dextinity/cms-apiversion is required - Rename the theme component prefix from
CometAdmintoDextinityAdmin. This affectscomponentsoverrides passed tocreateDextinityThemeand the generated CSS class names - Rename the CSS variables from
--comet-admin-*to--dextinity-admin-* - Replace the Comet logo in the header, the about modal and the site preview with the Dextinity logo
- Rename
@dextinity/agent-features@10.0.0
Major Changes
-
f843a5e: Rename
@comet/agent-featuresto@dextinity/agent-featuresUpdate the dependency in
package.json.Breaking changes
- Rename the skills to Dextinity:
comet-admin-ui->dextinity-admin-ui,comet-block->dextinity-block,comet-core-admin-component-authoring->dextinity-core-admin-component-authoring,comet-mail-react->dextinity-mail-react,comet-major-migration->dextinity-major-migrationandcomet-minor-update->dextinity-minor-update. Rerundextinity install-agent-featuresand remove the previously installed skills
- Rename the skills to Dextinity:
@dextinity/api-generator@10.0.0
Major Changes
-
f843a5e: Rename
@comet/api-generatorto@dextinity/api-generatorUpdate the dependency in
package.jsonand all imports.Breaking changes
-
Rename the
comet-api-generatorbinary todextinity-api-generator:- "generate-crud": "comet-api-generator" + "generate-crud": "dextinity-api-generator"
-
Change the header of generated files. Rerun the generator to update them
-
@dextinity/brevo-api@10.0.0
Major Changes
-
f843a5e: Rename
@comet/brevo-apito@dextinity/brevo-apiUpdate the dependency in
package.jsonand all imports:- import { BrevoModule } from "@comet/brevo-api"; + import { BrevoModule } from "@dextinity/brevo-api";
@dextinity/cms-api@10.0.0
Major Changes
-
f843a5e: Rename
@comet/cms-apito@dextinity/cms-apiUpdate the dependency in
package.jsonand all imports.Breaking changes
- Rename
CometExceptionand its subclasses:CometValidationException->DextinityValidationException,CometEntityNotFoundException->DextinityEntityNotFoundException,CometImageResolutionException->DextinityImageResolutionException. The error codes returned by the API change accordingly, so a matching@dextinity/cms-adminversion is required - Rename
CometAuthGuardtoDextinityAuthGuardand the@DisableCometGuards()decorator to@DisableDextinityGuards() - Rename the database tables
CometFileUpload,CometUserPermissionandCometUserContentScopestoDextinityFileUpload,DextinityUserPermissionandDextinityUserContentScopes. A migration is shipped with the package, so running the migrations is sufficient - Rename the site preview cookie from
__comet_site_previewto__dextinity_site_previewand the impersonation cookie fromcomet-impersonate-user-idtodextinity-impersonate-user-id
- Rename
Minor Changes
-
86f90cb: Support
dextinity.com/*Kubernetes labels and annotationsThe Builds, Cron Jobs and Kubernetes modules now read the labels and annotations of Kubernetes resources with the
dextinity.comprefix:Previously Now comet-dxp.com/instancedextinity.com/instancecomet-dxp.com/parent-cron-jobdextinity.com/parent-cron-jobcomet-dxp.com/labeldextinity.com/labelcomet-dxp.com/builderdextinity.com/buildercomet-dxp.com/triggerdextinity.com/triggercomet-dxp.com/content-scopedextinity.com/content-scopeThe
comet-dxp.comprefix is still supported, so existing Helm charts keep working without changes.
Resources are expected to use one prefix or the other: if no resource matches thedextinity.comlabels, thecomet-dxp.comones are used instead.Example
9.5.0
@comet/cms-api@9.5.0
Minor Changes
-
4eadaf5: Deprecate
FilesService.calculateDominantColorComputing the dominant color of an image was the only part of
FilesServicethat used imgproxy. It moved to an internal service thatDamImagesModuleprovides, so file handling no longer depends on imgproxy.FilesService.calculateDominantColorreturns the color whenDamImagesModuleis registered, andundefinedwhen it is not. -
4eadaf5: Split
DamModuleinto composable sub-modulesDamModuleis now a facade composing four sub-modules:DamFilesModule(file and folder storage, upload and serving),DamImagesModule(image scaling via imgproxy, dominant color),DamBlocksModule(block transformers) andDamDependentsModule(thedependentsfield onDamFile).DamModule.register()keeps its signature and still composes all four.DamModuleand its sub-modules now throw when they are registered more than once in the same process. A second registration would mount the DAM routes twice and add thedependentsfield to the file type again, so it never worked as intended.Projects that only need DAM file upload and storage can register
DamFilesModuleon its own, withoutImgproxyModuleand withoutDependenciesModule:DamFilesModule.register({ damConfig, Scope: DamScope, File: DamFile, Folder: DamFolder });
In that setup,
FilesServicereceives no dominant color calculator, so uploads skip the color andFilesService.calculateDominantColorreturnsundefined.