Skip to content

Releases: vivid-planet/comet

8.20.0

17 Mar 09:23
ced6ebe

Choose a tag to compare

@comet/admin@8.20.0

Patch Changes

  • 412ed19: Prevent form components used within Field/FieldContainer from overflowing their parent

@comet/admin-icons@8.20.0

Patch Changes

  • caceff8: Remove deprecated xlinkHref prop from CometColor icon component

@comet/cms-admin@8.20.0

Minor Changes

  • ed00704: Add TableBlock using the createTableBlock() factory

    The passed in richText block is used to edit the cell content.

    Admin:

    import { createTableBlock } from "@comet/cms-admin";
    import { RichTextBlock } from "./RichTextBlock";
    
    export const TableBlock = createTableBlock({ richText: RichTextBlock });

    API:

    import { createTableBlock } from "@comet/cms-api";
    import { RichTextBlock } from "./rich-text.block";
    
    export const TableBlock = createTableBlock({ richText: RichTextBlock });

@comet/cms-api@8.20.0

Minor Changes

  • ed00704: Add TableBlock using the createTableBlock() factory

    The passed in richText block is used to edit the cell content.

    Admin:

    import { createTableBlock } from "@comet/cms-admin";
    import { RichTextBlock } from "./RichTextBlock";
    
    export const TableBlock = createTableBlock({ richText: RichTextBlock });

    API:

    import { createTableBlock } from "@comet/cms-api";
    import { RichTextBlock } from "./rich-text.block";
    
    export const TableBlock = createTableBlock({ richText: RichTextBlock });

@comet/cli@8.20.0

Minor Changes

  • 7c27867: install-agent-skills: add support for a skills/ directory as the primary source for agent skills

    The project-skills/ and package-skills/ directories are no longer supported. Move all skills into a single skills/ directory at the repo root:

    • Skills previously in project-skills/: move to skills/ and add metadata.internal: true to their SKILL.md
    • Skills previously in package-skills/: move to skills/ (without the internal flag)

8.19.0

10 Mar 12:16
141ab09

Choose a tag to compare

@comet/admin@8.19.0

Minor Changes

  • fff2cc2: Add support for onBlur and onFocus props to DatePicker, DateRangePicker, DateTimePicker, DateTimeRangePicker and TimePicker

    Errors and warnings are now correctly shown after validation in DatePickerField, DateRangePickerField, DateTimePickerField, DateTimeRangePickerField and TimePickerField.

  • fff2cc2: Add aria-labels to the open picker buttons of date/time picker components

@comet/admin-generator@8.19.0

Patch Changes

  • 4bb3d09: Fix Prettier formatting in monorepo setups by using the Prettier API directly instead of the CLI

@comet/api-generator@8.19.0

Patch Changes

  • 4bb3d09: Fix Prettier formatting in monorepo setups by using the Prettier API directly instead of the CLI

@comet/cms-api@8.19.0

Patch Changes

  • 0eb28a7: Skip block index view creation when no root block entities are found instead of failing with a SQL syntax error

@comet/cli@8.19.0

Minor Changes

8.18.0

05 Mar 08:15
6f8b90d

Choose a tag to compare

@comet/admin@8.18.0

Patch Changes

  • 0ce431c: Toggle filter panel when clicking on GridFilterButton
  • d344f53: Remove Data Grid Pro usages to allow usage without the Pro version

@comet/admin-generator@8.18.0

Patch Changes

  • b35454a: Fix asyncSelect form field generation and staticSelect grid column generation for nested fields from 1:1 relations (e.g., "product.category")
  • 69324f9: Grid: Fix emitting string literals for non-string initialFilter values

@comet/cms-admin@8.18.0

Minor Changes

  • 64b70bc: Re-add "Usages" column to the DAM FolderDataGrid, displaying the number of dependents for each file

Patch Changes

  • ed029fb: Export CurrentUserContext from @comet/cms-admin

    CurrentUserContext is now exported so that consumers can directly access the React context. This is needed for use cases such as providing a custom implementation of the context (e.g. in tests or in applications that manage their own user context) and for components that need to consume the context directly rather than through the useCurrentUser hook.

@comet/cms-api@8.18.0

Minor Changes

  • 64b70bc: Deduplicate block index refreshes using PostgreSQL advisory locks

    Replace the race-condition-prone pg_stat_activity check in DependenciesService.refreshViews() with pg_try_advisory_xact_lock, ensuring only one refresh runs at a time. This fixes the issue where many parallel requests (e.g., from the DAM Usages column) could trigger multiple concurrent REFRESH MATERIALIZED VIEW operations, overloading the database.

  • ef98821: Add option shouldInvokeUserService to createJwtAuthService

    Sometimes it is preferred to load the user from the UserService instead of using the data from the ID-Token (e.g. because the UserService provides additional data). This options allows to force this behavior.

Patch Changes

  • e9c54bc: Fix DamFolder.mpath column type

    Change the column type from "uuid array" to "uuid[]" to match PostgreSQL's canonical array type notation, preventing a redundant alter column ... type uuid array statement from being generated for every new migration.

  • b3bfe86: Update @aws-sdk/ dependencies to fix CVE-2026-25896

@comet/site-react@8.18.0

Minor Changes

  • 2a9e770: Add HTML anchor props pass-through to DamFileDownloadLinkBlock

    These link block component now accept and pass through standard HTML anchor element attributes (such as id, className, style, target, rel, aria-*, data-*, onClick, etc.) to the rendered <a> element.

    Example:

    <DamFileDownloadLinkBlock data={linkData} className="custom-link">
        <span>Download file</span>
    </DamFileDownloadLinkBlock>

9.0.0-beta.0

23 Feb 11:35
b3bfe86

Choose a tag to compare

9.0.0-beta.0 Pre-release
Pre-release

@comet/admin@9.0.0-beta.0

Major Changes

  • 5f1566a: Make packages ESM-only

  • 3fda20b: Remove the "Future" prefix from date/time components as they are now considered stable

    If already in use, update the imports of these components and their types:

    DatePicker:

    • Future_DatePicker -> DatePicker

    • Future_DatePickerProps -> DatePickerProps

    • Future_DatePickerClassKey -> DatePickerClassKey

    • Future_DatePickerField -> DatePickerField

    • Future_DatePickerFieldProps -> DatePickerFieldProps

      DateRangePicker:

    • Future_DateRangePicker -> DateRangePicker

    • Future_DateRangePickerProps -> DateRangePickerProps

    • Future_DateRangePickerClassKey -> DateRangePickerClassKey

    • Future_DateRangePickerField -> DateRangePickerField

    • Future_DateRangePickerFieldProps -> DateRangePickerFieldProps

      TimePicker:

    • Future_TimePicker -> TimePicker

    • Future_TimePickerProps -> TimePickerProps

    • Future_TimePickerClassKey -> TimePickerClassKey

    • Future_TimePickerField -> TimePickerField

    • Future_TimePickerFieldProps -> TimePickerFieldProps

      DateTimePicker:

    • Future_DateTimePicker -> DateTimePicker

    • Future_DateTimePickerProps -> DateTimePickerProps

    • Future_DateTimePickerClassKey -> DateTimePickerClassKey

    • Future_DateTimePickerField -> DateTimePickerField

    • Future_DateTimePickerFieldProps -> DateTimePickerFieldProps

      If your theme is using defaultProps or styleOverrides for any of these components, update their component-keys:

    • CometAdminFutureDatePicker -> CometAdminDatePicker

    • CometAdminFutureDateRangePicker -> CometAdminDateRangePicker

    • CometAdminFutureTimePicker -> CometAdminTimePicker

    • CometAdminFutureDateTimePicker -> CometAdminDateTimePicker

      If you are using class-names to access these components' slots, update them:

    • CometAdminFuture_DatePicker-* -> CometAdminDatePicker-*

    • CometAdminFuture_DateRangePicker-* -> CometAdminDateRangePicker-*

    • CometAdminFuture_TimePicker-* -> CometAdminTimePicker-*

    • CometAdminFuture_DateTimePicker-* -> CometAdminDateTimePicker-*

  • fd5c36f: Remove clearable prop from Autocomplete, FinalFormInput, FinalFormNumberInput and FinalFormSearchTextField

    Those fields are now clearable automatically when not set to required, disabled or readOnly.

  • 631540c: Rename variant prop of Tooltip to color and remove the neutral and primary options

     <Tooltip
         title="Title"
    -    variant="light"
    +    color="light"
     >
         <Info />
     </Tooltip>
     <Tooltip
         title="Title"
    -    variant="neutral"
     >
         <Info />
     </Tooltip>

Minor Changes

  • f066335: Add support for React 19

@comet/admin-babel-preset@9.0.0-beta.0

Major Changes

@comet/admin-color-picker@9.0.0-beta.0

Major Changes

Minor Changes

  • f066335: Add support for React 19

@comet/admin-date-time@9.0.0-beta.0

Major Changes

  • 3fda20b: Add a "Legacy" prefix to class-names and theme component-keys

    This affects the components of which their new counterparts are now considered stable in @comet/admin.

    Consider using the new components from @comet/admin

    In most cases, the new components will be a drop-in replacement for the legacy components, so you can simply replace the imports:

    | Legacy component from @comet/admin-date-time | New component from @comet/admin |
    | ---------------------------------------------- | -------------------------------------------------- |
    | DatePicker | DatePicker |
    | DateField | DatePickerField |
    | FinalFormDatePicker | DatePickerField (without using <Field />) |
    | DateRangePicker | DateRangePicker |
    | DateRangeField | DateRangePickerField |
    | FinalFormDateRangePicker | DateRangePickerField (without using <Field />) |
    | TimePicker | TimePicker |
    | TimeField | TimePickerField |
    | FinalFormTimePicker | TimePickerField (without using <Field />) |
    | DateTimePicker | DateTimePicker |
    | DateTimeField | DateTimePickerField |
    | FinalFormDateTimePicker | DateTimePickerField (without using <Field />) |

    To continue using the existing components, the following changes will need to be made:

    Update any use of class-names of the component's slots:

    • CometAdminDatePicker-* -> CometAdminLegacyDatePicker-*

    • CometAdminDateRangePicker-* -> CometAdminLegacyDateRangePicker-*

    • CometAdminDateTimePicker-* -> CometAdminLegacyDateTimePicker-*

    • CometAdminTimePicker-* -> CometAdminLegacyTimePicker-*

      Update the component-keys when using defaultProps or styleOverrides in the theme:

    • CometAdminDatePicker -> CometAdminLegacyDatePicker

    • CometAdminDateRangePicker -> CometAdminLegacyDateRangePicker

    • CometAdminDateTimePicker -> CometAdminLegacyDateTimePicker

    • CometAdminTimePicker -> CometAdminLegacyTimePicker

  • 5f1566a: Make packages ESM-only

Minor Changes

  • f066335: Add support for React 19

@comet/admin-generator@9.0.0-beta.0

Major Changes

  • 0ec748a: Convert to ESM

    To upgrade, make the following changes to your tsconfig.json:

    {
        "compilerOptions": {
    -       "module": "ESNext",
    -       "moduleResolution": "Node",
    +       "module": "preserve",
    +       "moduleResolution": "bundler"
        }
    }

Minor Changes

  • f066335: Add support for React 19

@comet/admin-icons@9.0.0-beta.0

Major Changes

Minor Changes

  • f066335: Add support for React 19

@comet/admin-rte@9.0.0-beta.0

Major Changes

Minor Changes

  • f066335: Add support for React 19

@comet/brevo-admin@9.0.0-beta.0

Minor Changes

  • f066335: Add support for React 19

@comet/cms-admin@9.0.0-beta.0

Major Changes

  • ee24125: Remove createHttpClient function

    Use native fetch instead.

  • 5f1566a: Make packages ESM-only

  • 790e8d0: Remove the filesInfoText slot from FileSelect

Minor Changes

  • f066335: Add support for React 19

@comet/api-generator@9.0.0-beta.0

Major Changes

  • 18748d1: Stop generating GraphQL selection-set based populate handling in generated CRUD list resolvers.

    MikroORM dataloader must now be enabled in API projects (for example with dataloader: DataloaderType.ALL in your MikroORM config) to efficiently resolve relation fields.

  • 10dda8c: Remove targetDirectory config from @CrudGenerator decorator and always generate files to ${__dirname}/../generated/

Minor Changes

  • 623111e: Support re-using an enum (for filters) in multiple models by using a shared generated filter type

@comet/eslint-config@9.0.0-beta.0

Major Changes

  • db6b83a: Prevent lib imports from @comet/ packages

    Use no-restricted-imports to prevent importing private files from @comet/*/lib. For example, the following import would be forbidden:

    import { something } from "@comet/admin/lib/some/private/file";
  • 740dba8: Bump Next.js peer dependency to v16

    Follow the official migration guides (v15, v16) to upgrade.

@comet/eslint-plugin@9.0.0-beta.0

Major Changes

  • db6b83a: Prevent lib imports from @comet/ packages

    Use no-restricted-imports to prevent importing private files from @comet/*/lib. For example, the following import would be forbidden:

    import { something } from "@comet/admin/lib/some/private/file";

@comet/site-nextjs@9.0.0-beta.0

Major Changes

  • 740dba8: Bump Next.js peer dependency to v16

    Follow the official migration guides (v15, v16) to upgrade.

  • 740dba8: Bump React peer dependency to v19

    Follow the official migration guide to upgrade.

@comet/site-react@9.0.0-beta.0

Minor Changes

  • 740dba8: Add support for React 19

8.17.1

23 Feb 09:50
8a84324

Choose a tag to compare

@comet/admin-icons@8.17.1

Patch Changes

@comet/brevo-api@8.17.1

Patch Changes

@comet/cms-api@8.17.1

Patch Changes

@comet/site-nextjs@8.17.1

Patch Changes

  • 91e9a8f: Raise Next.js peer dependency minimum to 14.2.35 to fix CVE-2026-23864 (request deserialization DoS)

8.17.0

23 Feb 09:39
82a3292

Choose a tag to compare

@comet/admin@8.17.0

Minor Changes

  • 45163f1: Add DataGrid helper useDataGridUrlState that can be used like useDataGridRemote to store state as location params but for client side (non paginated) filter/sort

@comet/admin-generator@8.17.0

Minor Changes

  • cd854dc: Grid: Add automatic onRowClick navigation

    Generated grids now automatically navigate to the edit page when a row is clicked, improving user experience.

    • When rowActionProp is false (default): generates a handleRowClick handler using useStackSwitchApi().activatePage("edit", id)
    • When rowActionProp is true: adds an onRowClick prop to allow parent components to implement needed action
  • 45163f1: Grid: Enable client side filter and sort when non paging api is used

@comet/site-react@8.17.0

Minor Changes

  • 35c338e: Add HTML anchor props pass-through to ExternalLinkBlock, PhoneLinkBlock, and EmailLinkBlock

    These link block components now accept and pass through standard HTML anchor element attributes (such as id, className, style, target, rel, aria-*, data-*, onClick, etc.) to the rendered <a> element.

    Example:

    <ExternalLinkBlock data={linkData} className="custom-link" aria-label="Opens external site" data-tracking="external-click">
        <span>External Link</span>
    </ExternalLinkBlock>

8.16.0

19 Feb 10:21
3a1e38c

Choose a tag to compare

@comet/admin@8.16.0

Minor Changes

  • 472b496: useDataGridRemote: store sort/filter/paging state additionally to query-param in local state and fall back to it if the query-param is lost

    Avoids losing grid state, for instance, when opening an EditDialog that creates its own sub-route.

@comet/api-generator@8.16.0

Minor Changes

  • 9ce5bb4: Add optional paging. It is now possible to create a non-paginated list query using @CrudGenerator paging=false option. Use with care.

8.15.0

18 Feb 11:57
823f1a0

Choose a tag to compare

@comet/admin@8.15.0

Minor Changes

  • 39a9bb0: Add support for non-paginated apis in useDataGridExcelExport
  • 5b52998: Add tooltip for childless items in closed MainNavigation

Patch Changes

  • cc96333: Fix FinalForm to forward submissionErrors (return from submit handler) correctly
  • 180d1e3: Fix required validation for AsyncAutocompleteField with multiple select
  • f7b9de9: Fix DataGrid singleSelect filter height to prevent autocomplete values from being truncated
  • 0c2435a: Hide filesInfoText from FileSelect

@comet/admin-generator@8.15.0

Minor Changes

  • 82ff4c2: Form field boolean: use label as field label (before: checkbox label) and add new checkboxLabel option
  • 14f9ef0: Add support for <FormattedMessage /> in staticSelect values label
  • 39a9bb0: Make paging conditional in grid generation: only add paging args (offset, limit) and paging return (totalCount, nested nodes) when the GQL schema query returns a paginated type
  • cc96333: Add support for custom error responses in update and create mutation and show it in form as submission error

Patch Changes

  • 33ac500: Use the GraphQL schema scope type in generated grids when scope comes from context.
  • 47ed8cf: Only emit grid sort variables and helpers when the schema supports sorting.

@comet/cms-admin@8.15.0

Minor Changes

  • 9333e9c: Readd "Start impersonation" button to UserGrid

Patch Changes

  • 2bbb9c1: Fix scope not switching when impersonating a user

    Previously, the ContentScopeProvider blindly restored the scope from localStorage, which could redirect impersonated users to scopes they don't have access to.

    Now, the stored scope is validated against the user's allowed scopes before being applied. If the stored scope is not allowed, it is cleared from localStorage and the default scope is used instead.

    Additionally, the NODE_ENV guard on persisting the selected scope to localStorage is removed so scope persistence is also done locally again.

@comet/api-generator@8.15.0

Minor Changes

  • cc96333: Add support for custom error responses in update and create mutation and show it in form as submission error

  • 0b266f4: Add support for hooksService that allows injecting a custom service into update/create mutation for custom validation logic

    Usage example:

    export class ProductService implements CrudGeneratorHooksService {
        async validateCreateInput(input: ProductInput, options: { currentUser: CurrentUser, scope: Scope, args: { department: string } }): Promise<void> {
            //add custom validation logic here
        }
        async validateUpdateInput(input: ProductInput, options: { currentUser: CurrentUser, entity: Product }): Promise<void> {
            //add custom validation logic here
        }
    }
    
    @CrudGenerator({ .... hooksService: ProductService })
    class Products ...
    

@comet/brevo-api@8.15.0

Patch Changes

  • 317ca97: Fix email campaigns getting stuck in broken state when scheduled in the past
    • Replace @MinDate(new Date()) with @MinDate(() => new Date()) to evaluate validation at runtime instead of class definition time
    • Check actual campaign status from Brevo before blocking updates to past-scheduled campaigns
    • Only block updates if campaign has actually been sent (not just scheduled in the past)
    • Automatically sync local campaign state with Brevo's actual state

@comet/cli@8.15.0

Minor Changes

  • 7740f1e: Support 1Password references in site configs

    Allows referencing secrets stored in 1Password directly in the site config using the {{ op://... }} syntax. For example:

    export default ((env) => {
        return {
            // ,,,
            apiKey: `{{ op://example-project-prod/api-key/password }}`,
        };
    }) satisfies GetSiteConfig;

    They are then replaced with the actual values by inject-site-configs.

8.14.0

03 Feb 13:54
0d8a8e5

Choose a tag to compare

@comet/admin@8.14.0

Minor Changes

  • f31b52e: Add FinalFormDebug component to display React Final Form state for debugging purposes
  • d0a7c96: Automatically hide the MasterMenu and AppHeaderMenuButton if only one menu item is available

Patch Changes

  • 5075f7a: Render ToolbarBackButton as a link for improved accessibility

@comet/admin-generator@8.14.0

Patch Changes

  • 540f8c8: Form: Use scope type from gql schema when using scope from context

@comet/cms-admin@8.14.0

Minor Changes

  • d0a7c96: Automatically hide the MasterMenu and AppHeaderMenuButton if only one menu item is available

@comet/cms-api@8.14.0

Minor Changes

@comet/eslint-config@8.14.0

Minor Changes

  • af265a8: Clarify next/image import restriction in @comet/eslint-config/nextjs.js

Patch Changes

  • 3d0af69: Fix extending Next.js' ESLint config in @comet/eslint-config/nextjs.js

@comet/mail-react@8.14.0

Minor Changes

  • 57a7c95: Re-export all components from @faire/mjml-react and remove it as a peerDependency

8.13.0

29 Jan 13:01
269b3df

Choose a tag to compare

@comet/admin@8.13.0

Patch Changes

  • 60ecc0a: Store open state of MainNavigation in local storage and restore it on page load
  • dbf8774: Don't open the mobile MainNavigation when resizing the window to a smaller width

@comet/admin-generator@8.13.0

Minor Changes

  • 94abd9b: Add initialValuesAsProp config to generate a initialValues prop for the form that allows injecting dynamic initialValues

@comet/cms-admin@8.13.0

Minor Changes

  • 6b0b088: Allow UserService to implement getAccountUrl() which provides a "My Account" link in the UserHeaderItem

Patch Changes

  • 60ecc0a: Store open state of MainNavigation in local storage and restore it on page load
  • 5cfa88d: Fix renaming of DAM folders

@comet/api-generator@8.13.0

Patch Changes

  • 5e8a5c5: Fix resolver and DTO for nested OneToMany relations

@comet/cms-api@8.13.0

Minor Changes

  • 6b0b088: Allow UserService to implement getAccountUrl() which provides a "My Account" link in the UserHeaderItem

  • 05638ed: MailerService.sendMail() now automatically creates a plaintext version from the HTML content

    When the params passed to sendMail() do not include a text property but do include a html property, a plaintext version will be automatically generated based on the HTML content.

@comet/site-react@8.13.0

Patch Changes

  • 9f5c4e6: Fix height of DamVideoBlock when fill prop is set