Skip to content

Releases: vivid-planet/dextinity

10.4.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 10:24
234469b

@dextinity/cms-admin@10.4.0

Minor Changes

  • 4b9ead5: Add icon option to TipTapInlineStyle

    Custom 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} />,
            },
        ],
    });

    icon is 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 getContentScopesForUser

    getContentScopesForUser can 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 of availableContentScopes.

    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[].contentScopes now returns a single wildcard scope (e.g. [{ domain: "*", language: "*" }]) instead of the enumerated availableContentScopes. The default isAllowed and currentUser.allowedContentScopes handle the wildcard; a custom isAllowed must 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/ListItemText with 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 getContentScopesForUser

    getContentScopesForUser can 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 of availableContentScopes.

    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[].contentScopes now returns a single wildcard scope (e.g. [{ domain: "*", language: "*" }]) instead of the enumerated availableContentScopes. The default isAllowed and currentUser.allowedContentScopes handle the wildcard; a custom isAllowed must treat "*" as matching any value of a dimension.

@dextinity/mail-react@10.4.0

Patch Changes

  • 98c1097: Fix head CSS lost after the first @media block in Outlook.com and the Outlook apps for iOS and Android

    These clients stop reading a <style> tag at the first }}, which minified CSS writes at the end of every @media block.

  • bb5d22a: Apply the Storybook addon's "Use public image URLs" toggle to the Outlook VML image source

  • 583dd13: Fix borderRadius on 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 IFrameBridgeProvider does not start at the left edge of the page, for instance because of padding or centering

8.31.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 10:23
a00f0b2

@comet/admin@8.31.0

Patch Changes

  • be2d64f: Show the GraphQL error messages in the error dialog again

    createErrorDialogApolloLink only passed the message of network errors to the ErrorDialog.
    For GraphQL errors, the dialog showed "Unknown error" instead of the actual messages (e.g., the message of a BadRequestException thrown 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 permissionsCount and contentScopesCount fields of UserPermissionsUser are deprecated and now return 0. They will be removed in the next major version.

Patch Changes

  • 8b5f06f: Stop deduplicating content scopes in the user permissions API

    UserPermissionsService.getAvailableContentScopes(), getContentScopes() and getPermissionsAndContentScopes() 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 the lodash.uniqwith dependency.

    Projects that consume UserPermissionsPublicService or the currentUser / availableContentScopes GraphQL 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() and getPermissionsAndContentScopes() 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 the lodash.uniqwith dependency.

    Projects that consume UserPermissionsPublicService or the currentUser / availableContentScopes GraphQL 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 permissionsCount and contentScopesCount fields of UserPermissionsUser are deprecated and now return 0. They will be removed in the next major version.

10.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 14:59
93e6f7e

@dextinity/admin@10.3.0

Patch Changes

  • 4d6408f: Fix FormMutation throwing when rendered

    FormMutation accessed its children through this.props although it is a function component. Modules are always in strict mode, so this was undefined and rendering the component failed with TypeError: Cannot read properties of undefined (reading 'props').

@dextinity/cms-admin@10.3.0

Minor Changes

  • 504c97f: Expose setPageState in the usePage hook returned by createUsePage

    Until now, the page state could only be read, so features that modify a page's content had to be built into createUsePage itself (like translateContent).
    setPageState allows applications to change the page's content programmatically, for instance, to apply changes suggested by an assistant.
    The changes are applied locally only, handleSavePage persists them.

    Additionally, the PageState type 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 permissionsCount and contentScopesCount fields of UserPermissionsUser are deprecated and now return 0. 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
    pixelImage JPEG, PNG, WebP
    svgImage SVG
    audio MP3, OGG, WAV
    video MP4, WebM, QuickTime
    document PDF, DOCX, VTT, ZIP

    SVG images and pixel images remain separate categories.

    Files in the document category 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.jpg becomes photo.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 getDamFileCategory helper 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

    HoverPreviewComponent built the block's route from useRouteMatch, which does not see the path of a SubRoute. Below a SaveBoundary the 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 from useSubRoutePrefix, the prefix the block routes in BlockPreviewContext already use.

  • 876887b: Fix order of link and special character (nonBreakingSpace, softHyphen) buttons in the TipTap rich text block toolbar

    They were swapped; link now appears before the special character buttons.

  • 0c211e9: Stop deduplicating content scopes in the user permissions API

    UserPermissionsService.getAvailableContentScopes(), getContentScopes() and getPermissionsAndContentScopes() 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 the lodash.uniqwith dependency.

    Projects that consume UserPermissionsPublicService or the currentUser / availableContentScopes GraphQL 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() and getPermissionsAndContentScopes() 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 the lodash.uniqwith dependency.

    Projects that consume UserPermissionsPublicService or the currentUser / availableContentScopes GraphQL 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 permissionsCount and contentScopesCount fields of UserPermissionsUser are deprecated and now return 0. 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
    pixelImage JPEG, PNG, WebP
    svgImage SVG
    audio MP3, OGG, WAV
    video MP4, WebM, QuickTime
    document PDF, DOCX, VTT, ZIP

    SVG images and pixel images remain separate categories.

    Files in the document category 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.jpg becomes photo.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 getDamFileCategory helper 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 @AffectedEntity

    The 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 with invalid input syntax for type uuid and surfaced as an internal server error.

    Now id args for entities with a UUID primary key (and pageTreeNodeIdArg values) are validated upfront, and a DextinityValidationException is thrown for malformed UUIDs.

@dextinity/cli@10.3.0

Minor Changes

  • 7e3a30f: Add TipTapNode type to generate-block-types output and use it for TipTap rich text blocks

    TipTap rich text blocks were typed as unknown, forcing consumers to cast the content before rendering it.
    They are now typed as TipTapNode, which is generated into blocks.generated.ts (together with TipTapMark) 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

  • f3f00f2: Fix crash when a rounded pixel-image block has no alt text or link
  • b873623: Minify the registered styles, so Gmail is less likely to drop a mail's CSS

7.26.1

Choose a tag to compare

@github-actions github-actions released this 31 Aug 10:42
43c6a3c

@comet/cms-admin@7.26.1

Patch Changes

  • ccda213: Update axios to ^0.33.0 to fix known security vulnerabilities

    The previously used axios@^0.21.0 is affected by multiple published advisories (among them SSRF and credential leakage via absolute URLs, Proxy-Authorization leakage across redirects, prototype-pollution gadgets and several denial-of-service issues). Version 0.33.0 of 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

Choose a tag to compare

@github-actions github-actions released this 26 Aug 14:48
c30eaa9

@dextinity/cms-admin@10.2.0

Minor Changes

  • 7f9e1f7: Add createDamVideoBlock factory

    The 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 via supports — 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.

    supports takes "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).

    DamVideoBlock is 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 headingLevels option

    createTipTapRichTextBlock accepts a new headingLevels?: 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, so DamFilesModule couldn't be registered without UserPermissionsModule. 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 disableScopeAccessControl to 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 on DamModule, which always runs with UserPermissionsModule.

    Applications using DamModule together with UserPermissionsModule are unaffected: the endpoints keep using the registered AccessControlService.

  • edf2027: Allow restricting selectable heading levels in the TipTap rich text block via a new headingLevels option

    createTipTapRichTextBlock accepts a new headingLevels?: 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 borderRadius prop to MjmlImage, HtmlImage, MjmlPixelImageBlock and HtmlPixelImageBlock

    Example

    <MjmlImage src="https://example.com/image.jpg" alt="Example" width={520} borderRadius={16} />

    A style prop passed by the caller wins over borderRadius.

Patch Changes

  • f3e81aa: Round images in classic Outlook

    borderRadius on MjmlImage, HtmlImage, MjmlPixelImageBlock and HtmlPixelImageBlock now also rounds the image in classic Outlook.

    Classic Outlook rounds the image only when width and height are 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 MjmlButton background image not reaching clients that drop <style> blocks

10.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 07:15
8c2e09c

@dextinity/mail-react@10.1.0

Minor Changes

  • b0577d5: Add list to the RichText block's blockTypes, so a custom block type renders as a list

    Use 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-item and ordered-list-item still render as lists without list.

10.0.1

Choose a tag to compare

@github-actions github-actions released this 14 Aug 11:22
a53e8e4

@dextinity/admin@10.0.1

Patch Changes

  • 48748b0: Show the GraphQL error messages in the error dialog again

    createErrorDialogApolloLink only passed the message of network errors to the ErrorDialog.
    For GraphQL errors, the dialog showed "Unknown error" instead of the actual messages (e.g., the message of a BadRequestException thrown by the API).

@dextinity/agent-features@10.0.1

Patch Changes

  • 823d663: Fix the package being published without any skills and rules

    The skills/ and rules/ 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-features v9.4.0 contained nothing but the manifest, so dextinity install-agent-features found no skills or rules to install. The folders are copied into the package when it's built now.

9.5.1

Choose a tag to compare

@github-actions github-actions released this 17 Aug 11:16
a53e8e4

@comet/agent-features@9.5.1

Patch Changes

  • dd4d2f2: Fix the package being published without any skills and rules

    The skills/ and rules/ 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-features v9.4.0 contained nothing but the manifest, so install-agent-features found no skills or rules to install. The folders are copied into the package when it's built now.

10.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 12:43
6360bcd

@dextinity/admin@10.0.0

Major Changes

  • f843a5e: Rename @comet/admin to @dextinity/admin

    Update the dependency in package.json and all imports:

    - import { MainContent } from "@comet/admin";
    + import { MainContent } from "@dextinity/admin";

    Breaking changes

    • Rename createCometTheme to createDextinityTheme
    • Rename the theme component prefix from CometAdmin to DextinityAdmin. This affects components overrides passed to createDextinityTheme, the name passed to useThemeProps in 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 CometLogo component. Use DextinityLogo from @dextinity/admin-icons instead

@dextinity/admin-babel-preset@10.0.0

Major Changes

  • f843a5e: Rename @comet/admin-babel-preset to @dextinity/admin-babel-preset

    Update the dependency in package.json and 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-picker to @dextinity/admin-color-picker

    Update the dependency in package.json and all imports.

    Breaking changes

    • Rename the theme component prefix from CometAdmin to DextinityAdmin. This affects components overrides passed to createDextinityTheme and the generated CSS class names

@dextinity/admin-date-time@10.0.0

Major Changes

  • f843a5e: Rename @comet/admin-date-time to @dextinity/admin-date-time

    Update the dependency in package.json and all imports.

    Breaking changes

    • Rename the theme component prefix from CometAdmin to DextinityAdmin. This affects components overrides passed to createDextinityTheme and the generated CSS class names

@dextinity/admin-generator@10.0.0

Major Changes

  • f843a5e: Rename @comet/admin-generator to @dextinity/admin-generator

    Update the dependency in package.json and all imports.

    Breaking changes

    • Rename the comet-admin-generator binary to dextinity-admin-generator:

      - "generate-admin": "comet-admin-generator generate"
      + "generate-admin": "dextinity-admin-generator generate"
    • Rename the config file suffix from .cometGen.tsx to .dextinityGen.tsx. The default file pattern is now src/**/*.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-icons to @dextinity/admin-icons

    Update the dependency in package.json and all imports.

    Breaking changes

    • Remove the Comet and CometOutline icons

    • Remove the CometColor component. Use DextinityIcon instead, which provides the light, dark and masked variants

    • Remove the CometDigitalExperienceLogo component. Use DextinityLogo instead, which provides the light, dark and monochrome variants

    • Rename the CometColor member of the IconName type to DextinityIcon

      DextinityIcon and DextinityLogo derive their size from fontSize, so call sites no longer pass width/height pairs:

      - <CometDigitalExperienceLogo width={132} height={30} />
      + <DextinityLogo sx={{ fontSize: 30 }} />

@dextinity/admin-rte@10.0.0

Major Changes

  • f843a5e: Rename @comet/admin-rte to @dextinity/admin-rte

    Update the dependency in package.json and all imports.

    Breaking changes

    • Rename the theme component prefix from CometAdmin to DextinityAdmin. This affects components overrides passed to createDextinityTheme and the generated CSS class names
    • Rename the --comet-admin-rte-outer-border-color CSS variable to --dextinity-admin-rte-outer-border-color

@dextinity/brevo-admin@10.0.0

Major Changes

  • f843a5e: Rename @comet/brevo-admin to @dextinity/brevo-admin

    Update the dependency in package.json and all imports.

    Breaking changes

    • Resolve the configuration via DextinityConfigProvider instead of CometConfigProvider

@dextinity/cms-admin@10.0.0

Major Changes

  • f843a5e: Rename @comet/cms-admin to @dextinity/cms-admin

    Update the dependency in package.json and all imports.

    Breaking changes

    • Rename CometConfigProvider to DextinityConfigProvider, useCometConfig to useDextinityConfig and the CometConfig type to DextinityConfig. By convention, the project's comet-config.json is renamed to dextinity-config.json
    • Rename the cometType property of iframe messages to dextinityType. The site must use a matching @dextinity/site-react or @dextinity/site-nextjs version
    • Rename the site preview cookie from __comet_site_preview to __dextinity_site_preview and the impersonation cookie from comet-impersonate-user-id to dextinity-impersonate-user-id
    • Expect the renamed DextinityImageResolutionException and DextinityValidationException error codes in DAM file uploads. A matching @dextinity/cms-api version is required
    • Rename the theme component prefix from CometAdmin to DextinityAdmin. This affects components overrides passed to createDextinityTheme and 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

@dextinity/agent-features@10.0.0

Major Changes

  • f843a5e: Rename @comet/agent-features to @dextinity/agent-features

    Update 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-migration and comet-minor-update -> dextinity-minor-update. Rerun dextinity install-agent-features and remove the previously installed skills

@dextinity/api-generator@10.0.0

Major Changes

  • f843a5e: Rename @comet/api-generator to @dextinity/api-generator

    Update the dependency in package.json and all imports.

    Breaking changes

    • Rename the comet-api-generator binary to dextinity-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-api to @dextinity/brevo-api

    Update the dependency in package.json and 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-api to @dextinity/cms-api

    Update the dependency in package.json and all imports.

    Breaking changes

    • Rename CometException and its subclasses: CometValidationException -> DextinityValidationException, CometEntityNotFoundException -> DextinityEntityNotFoundException, CometImageResolutionException -> DextinityImageResolutionException. The error codes returned by the API change accordingly, so a matching @dextinity/cms-admin version is required
    • Rename CometAuthGuard to DextinityAuthGuard and the @DisableCometGuards() decorator to @DisableDextinityGuards()
    • Rename the database tables CometFileUpload, CometUserPermission and CometUserContentScopes to DextinityFileUpload, DextinityUserPermission and DextinityUserContentScopes. A migration is shipped with the package, so running the migrations is sufficient
    • Rename the site preview cookie from __comet_site_preview to __dextinity_site_preview and the impersonation cookie from comet-impersonate-user-id to dextinity-impersonate-user-id

Minor Changes

  • 86f90cb: Support dextinity.com/* Kubernetes labels and annotations

    The Builds, Cron Jobs and Kubernetes modules now read the labels and annotations of Kubernetes resources with the dextinity.com prefix:

    Previously Now
    comet-dxp.com/instance dextinity.com/instance
    comet-dxp.com/parent-cron-job dextinity.com/parent-cron-job
    comet-dxp.com/label dextinity.com/label
    comet-dxp.com/builder dextinity.com/builder
    comet-dxp.com/trigger dextinity.com/trigger
    comet-dxp.com/content-scope dextinity.com/content-scope

    The comet-dxp.com prefix 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 the dextinity.com labels, the comet-dxp.com ones are used instead.

    Example

Read more

9.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 07:32
9caeae1

@comet/cms-api@9.5.0

Minor Changes

  • 4eadaf5: Deprecate FilesService.calculateDominantColor

    Computing the dominant color of an image was the only part of FilesService that used imgproxy. It moved to an internal service that DamImagesModule provides, so file handling no longer depends on imgproxy.

    FilesService.calculateDominantColor returns the color when DamImagesModule is registered, and undefined when it is not.

  • 4eadaf5: Split DamModule into composable sub-modules

    DamModule is 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) and DamDependentsModule (the dependents field on DamFile). DamModule.register() keeps its signature and still composes all four.

    DamModule and 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 the dependents field to the file type again, so it never worked as intended.

    Projects that only need DAM file upload and storage can register DamFilesModule on its own, without ImgproxyModule and without DependenciesModule:

    DamFilesModule.register({ damConfig, Scope: DamScope, File: DamFile, Folder: DamFolder });

    In that setup, FilesService receives no dominant color calculator, so uploads skip the color and FilesService.calculateDominantColor returns undefined.