Skip to content

Releases: vivid-planet/comet

7.7.0

13 Nov 09:28
1d9c70b
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • 8ffc90e: Set the select field in OneOfBlock to required based on the allowEmpty prop

  • a9d2e2e: Fix linking from block preview to block admin for composite + list/blocks/columns block combinations

    Previously, the generated route was wrong if a composite contained multiple nested list, blocks or columns blocks.

@comet/[email protected]

Minor Changes

  • 6cb498f: Add search results highlighting to ContentScopeSelect

    Also, add the helper function findTextMatches, which can be used to add search highlighting to a custom renderOption implementation:

    <ContentScopeSelect
        renderOption={(option, query) => {
            const text = `${option.domain.label}${option.language.label}`;
            const matches = findTextMatches(text, query);
            return <ListItemText primary={<MarkedMatches text={text} matches={matches} />} />;
        }}
    />

Patch Changes

  • bb9215f: Don't move files to a folder called "." when uploading them to the DAM

    This bug only occurred in projects with a react-dropzone version >= 14.3.2.

@comet/[email protected]

Patch Changes

  • af892c1: Prevent the API from crashing because of stream errors when delivering a file

  • 253aebb: Allow overriding requestHandler in BlobStorageS3Storage

  • af892c1: Prevent socket exhaustion in BlobStorageS3Storage

    By default, the S3 client allows a maximum of 50 open sockets.
    A socket is only released once a file is streamed completely.
    Meaning, it can remain open forever if a file stream is interrupted (e.g., when the user leaves the site).
    This could lead to socket exhaustion, preventing further file delivery.

    To resolve this, the following changes were made:

    1. Add a close handler to destroy the stream when the client disconnects
    2. Set a 60-second requestTimeout to close unused connections

@comet/[email protected]

Minor Changes

  • 723a0b8: Disable showing related videos from other channels in YouTubeVideoBlock

    By setting the parameter rel to 0 only related videos from the same channel as the embedded video are shown.

6.17.15

13 Nov 16:01
1e3e7a2
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

@comet/[email protected]

@comet/[email protected]

Patch Changes

@comet/[email protected]

Patch Changes

@comet/[email protected]

@comet/[email protected]

Patch Changes

@comet/[email protected]

Patch Changes

@comet/[email protected]

Patch Changes

@comet/[email protected]

Patch Changes

@comet/[email protected]

Patch Changes

@comet/[email protected]

@comet/[email protected]

Patch Changes

  • 5e2e45e: Prevent the API from crashing because of stream errors when delivering a file

  • 5e2e45e: Prevent socket exhaustion in BlobStorageS3Storage

    By default, the S3 client allows a maximum of 50 open sockets.
    A socket is only released once a file is streamed completely.
    Meaning, it can remain open forever if a file stream is interrupted (e.g., when the user leaves the site).
    This could lead to socket exhaustion, preventing further file delivery.

    To resolve this, the following changes were made:

    1. Add a close handler to destroy the stream when the client disconnects
    2. Set a 60-second requestTimeout to close unused connections

@comet/[email protected]

@comet/[email protected]

Patch Changes

@comet/[email protected]

@comet/[email protected]

6.17.14

12 Nov 10:19
6c1e2d7
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • 1515d0a: Don't move files to a folder called "." when uploading them to the DAM

    This bug only occurred in projects with a react-dropzone version >= 14.3.2.

6.17.13

11 Nov 17:18
8ffc90e
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • 2aa79a0: Fix linking from block preview to block admin for composite + list/blocks/columns block combinations

    Previously, the generated route was wrong if a composite contained multiple nested list, blocks or columns blocks.

5.9.4

11 Nov 16:19
8ffc90e
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • c8e6f55: Fix linking from block preview to block admin for composite + list/blocks/columns block combinations

    Previously, the generated route was wrong if a composite contained multiple nested list, blocks or columns blocks.

6.17.12

09 Nov 15:16
253aebb
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • ecd74e0: Improve error message in Migration20240702123233

    Migration20240702123233 adds a valid file extension to every DamFile#name that doesn't have an extension yet.
    Previously, the migration crashed without a helpful error message if the mimetype of a file wasn't in mime-db.
    Now, the migration throws an error including the problematic mimetype.

7.6.0

04 Nov 08:17
36808d5
Compare
Choose a tag to compare

@comet/[email protected]

Minor Changes

  • bc19fb1: useDataGridExcelExport: Add support for number and null values in the Data Grid Excel export without the need for a valueFormatter
  • 00d7dda: Allow hiding the header (summary) of FieldSet by making the title prop optional

Patch Changes

  • 37d71a8: Fix hover styling of ToolbarBackButton

  • cf2ee89: Fix missing key error in CrudMoreActionsMenu

  • 03afcd0: Allow customizing CrudContextMenu

    Customize existing parts of CrudContextMenu using the slotProps, iconMapping and messagesMapping props.
    Add custom actions by adding instances of RowActionsItem to the children:

    <CrudContextMenu
    // ...
    >
        <RowActionsItem
            icon={<Favorite />}
            onClick={() => {
                // Do something
            }}
        >
            Custom action
        </RowActionsItem>
        <Divider />
    </CrudContextMenu>
  • fe89094: Slightly adjust the color of the clear button of inputs to match the Comet CI

@comet/[email protected]

Minor Changes

  • 1f5c29c: Show the number of permissions and content scopes in the User Permissions Admin panel

  • 671e2b2: Create site preview JWT in the API

    With this change the site preview can be deployed unprotected. Authentication is made via a JWT created in the API and validated in the site. A separate domain for the site preview is still necessary.

    Note: This requires the sitePreviewSecret option to be configured in the PageTreeModule.
    Run npx @comet/upgrade@latest v7/add-site-preview-secret.ts in the root of your project to perform the necessary code changes.
    Changes to the deployment setup might still be necessary.

  • 3ea66fb: Add support for user impersonation

    Prerequisites for setups with separate domains for admin and api: credentials: "include" must be set in the createApolloClient function in the admin.

    Adds an "Impersonation" button to the detail view of a user in the User Permissions admin panel. The impersonation can be exited by clicking the button in the user's info on the top right.

  • d54a8c9: Add support for multiple paths in ContentScopeProvider

    This enables using different paths for scopes with non-overlapping dimensions.
    The location.createPath and location.createUrl functions can be used to override the default behavior.

    Example

    <ContentScopeProvider
        location={{
            createPath: () => ["/organization/:organizationId", "/channel/:channelId"],
            createUrl: (scope) => {
                if (scope.organizationId) {
                    return `/organization/${scope.organizationId}`;
                } else if (scope.channelId) {
                    return `/channel/${scope.channelId}`;
                } else {
                    throw new Error("Invalid scope");
                }
            },
        }}
    />
  • 05058fc: Export components to allow customization of User Permissions Admin panel

    The application can provide a custom UserPermissionsPage based on the default UserPermissionsPage.

  • 0589ef5: Add displayName prop to createTextLinkBlock factory to support setting a custom display name

Patch Changes

  • 11ce320: Fix validation of empty PhoneLinkBlock

    Previously, the default phone value was an empty string, meaning @IsOptional() didn't prevent validation.
    Since an empty string is not a valid phone number, the validation failed.

    This change sets the default value to undefined.

  • 700ddc3: Fix copy/paste for documents containing a DamFileDownloadLinkBlock

  • 18a9f22: Keep current location when changing scope on publisher and user permissions page

  • 6a43bee: Display global ContentScopeIndicator if redirects are scoped globally

    Previously, an empty ContentScopeIndicator was displayed if no scopeParts were passed to createRedirectsPage.

  • 1cf01f7: Fix ContentScopeIndicator for scope with optional dimensions

@comet/[email protected]

Minor Changes

  • 9e2b0fa: Add support for literal arrays to block meta

    String, number, boolean, and JSON arrays can be defined by setting array: true.

    Example

    class NewsListBlockData {
        @BlockField({ type: "string", array: true })
        newsIds: string[];
    }

@comet/[email protected]

Minor Changes

  • 73c07ea: Set content scopes in request object

    This allows accessing the affected content scopes inside a block's transformer service.

    Example

    import { Inject, Injectable } from "@nestjs/common";
    import { CONTEXT } from "@nestjs/graphql";
    
    /* ... */
    
    @Injectable()
    export class PixelImageBlockTransformerService implements BlockTransformerServiceInterface<PixelImageBlockData, TransformResponse> {
        constructor(
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
            @Inject(CONTEXT) private readonly context: any,
        ) {}
    
        async transformToPlain(block: PixelImageBlockData) {
            // Get the affected content scopes
            const contentScopes = this.context.req.contentScopes;
    
            // Do something with the content scopes
    
            /* ... */
        }
    }
  • 671e2b2: Create site preview JWT in the API

    With this change the site preview can be deployed unprotected. Authentication is made via a JWT created in the API and validated in the site. A separate domain for the site preview is still necessary.

    Note: This requires the sitePreviewSecret option to be configured in the PageTreeModule.
    Run npx @comet/upgrade@latest v7/add-site-preview-secret.ts in the root of your project to perform the necessary code changes.
    Changes to the deployment setup might still be necessary.

  • f8ae084: API Generator: Add support for disabling sort/filter using the @CrudField() decorator for embeddables

  • d535e32: Improve error message for empty IDs arrays in @AffectedEntity

  • 44ec9eb: Redirects: Add redirectBySource query that can be used to query for a single redirect by source

  • 3ea66fb: Add support for user impersonation

    Prerequisites for setups with separate domains for admin and api: credentials: "include" must be set in the createApolloClient function in the admin.

    Adds an "Impersonation" button to the detail view of a user in the User Permissions admin panel. The impersonation can be exited by clicking the button in the user's info on the top right.

Patch Changes

  • 700ddc3: Fix copy/paste for documents containing a DamFileDownloadLinkBlock

  • 979d5f4: Improve error message in Migration20240702123233

    Migration20240702123233 adds a valid file extension to every DamFile#name that doesn't have an extension yet.
    Previously, the migration crashed without a helpful error message if the mimetype of a file wasn't in mime-db.
    Now, the migration throws an error including the problematic mimetype.

  • b03f3df: Call createUserFromRequest before createUserFromIdToken

    The latter is marked as deprecated and should only be used if the
    first one is not defined.

  • cc2a117: Redirects: Improve GraphQL API performance by preloading the page tree to speed up target page lookup

    Also, increase the maximum limit from 100 to 1000.

  • 72cf8fd: Treat null and undefined scope dimensions the same in AccessControlService#isAllowed

    Optional scope dimensions may sometimes be null or undefined depending on how the scope object is created.
    For instance, when the scope is loaded from the database, the optional dimension will be null, but when the scope is coming from GraphQL, the dimension can be undefined.
    Due to strict equality comparison, this led to incorrect access control checks in AccessControlService#isAllowed.
    This is now prevented by treating null and undefined dimensions as the same when checking the scope.

  • 6b0eceb: DAM: Fix/set cache-control headers

    • Public endpoints should cache files for 1 day
    • Private endpoints should cache files for 1 year - but only in local caches (not CDN)
  • 6f93191: Avoid duplicate file extension in createFileUploadInputFromUrl

@comet/[email protected]

Minor Changes

  • d353fc8: The inject-site-configs command locates the site-config-file argument relative to the current directory

  • 9e2b0fa: Add support for literal arrays to block meta

    String, number, boolean, and JSON arrays can be defined by setting array: true.

    Example

    class NewsListBlockData {
        @BlockField({ type: "string", array: true })
        newsIds: string[];
    }

@comet/[email protected]

Minor Changes

  • 671e2b2: Create site preview JWT in the API

    With this change the site preview can be deployed unprotected. Authentication is made via a JWT created in the API and validated in the site. A separate domain for the site preview is still necessary.

    Note: This requires the sitePreviewSecret option to be configured in the PageTreeModule.
    Run npx @comet/upgrade@latest v7/add-site-preview-secret.ts in the root of your project to perform the necessary code changes.
    Changes to the deployment setup might still be necessary.

  • c92fd5e: PixelImageBlock: Allow different aspect ratio formats

    The aspectRatio prop now supports values in the followi...

Read more

6.17.11

29 Oct 07:26
7e02b7e
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • 246cea5: Fix a bug where the disabled prop would not be passed to the children of Field

5.9.3

29 Oct 15:01
fe89094
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • 070ec85: Fix parsing of contentScopeAnnotation in KubernetesService#getContentScope

5.9.2

21 Oct 10:47
72cf8fd
Compare
Choose a tag to compare

@comet/[email protected]

Patch Changes

  • b6048d7: API CrudSingleGenerator: Run transformToBlockData() for block fields on create