Releases: vivid-planet/comet
7.7.0
@comet/[email protected]
Patch Changes
-
8ffc90e: Set the select field in
OneOfBlock
torequired
based on theallowEmpty
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 customrenderOption
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
inBlobStorageS3Storage
-
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:
- Add a close handler to destroy the stream when the client disconnects
- 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
to0
only related videos from the same channel as the embedded video are shown.
6.17.15
@comet/[email protected]
Patch Changes
- @comet/[email protected]
@comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
- @comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
- @comet/[email protected]
@comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
- @comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
- @comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
- @comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
- @comet/[email protected]
- @comet/[email protected]
- @comet/[email protected]
- @comet/[email protected]
- @comet/[email protected]
@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:
- Add a close handler to destroy the stream when the client disconnects
- Set a 60-second
requestTimeout
to close unused connections
- @comet/[email protected]
@comet/[email protected]
@comet/[email protected]
Patch Changes
- @comet/[email protected]
@comet/[email protected]
@comet/[email protected]
6.17.14
@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
@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
@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
@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
@comet/[email protected]
Minor Changes
- bc19fb1:
useDataGridExcelExport
: Add support fornumber
andnull
values in the Data Grid Excel export without the need for avalueFormatter
- 00d7dda: Allow hiding the header (summary) of
FieldSet
by making thetitle
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 theslotProps
,iconMapping
andmessagesMapping
props.
Add custom actions by adding instances ofRowActionsItem
to thechildren
:<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 thePageTreeModule
.
Runnpx @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 thecreateApolloClient
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.
Thelocation.createPath
andlocation.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 tocreateTextLinkBlock
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 globallyPreviously, an empty
ContentScopeIndicator
was displayed if noscopeParts
were passed tocreateRedirectsPage
. -
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 thePageTreeModule
.
Runnpx @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 thecreateApolloClient
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
beforecreateUserFromIdToken
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
andundefined
scope dimensions the same inAccessControlService#isAllowed
Optional scope dimensions may sometimes be
null
orundefined
depending on how the scope object is created.
For instance, when the scope is loaded from the database, the optional dimension will benull
, but when the scope is coming from GraphQL, the dimension can beundefined
.
Due to strict equality comparison, this led to incorrect access control checks inAccessControlService#isAllowed
.
This is now prevented by treatingnull
andundefined
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 thePageTreeModule
.
Runnpx @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...
6.17.11
@comet/[email protected]
Patch Changes
- 246cea5: Fix a bug where the
disabled
prop would not be passed to the children ofField
5.9.3
@comet/[email protected]
Patch Changes
- 070ec85: Fix parsing of
contentScopeAnnotation
inKubernetesService#getContentScope
5.9.2
@comet/[email protected]
Patch Changes
- b6048d7: API CrudSingleGenerator: Run
transformToBlockData()
for block fields on create