@sap/cds-dk
Version:
Command line client and development toolkit for the SAP Cloud Application Programming Model
982 lines (678 loc) • 60.7 kB
Markdown
# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/).
The format is based on [Keep a Changelog](https://keepachangelog.com/).
## Version 9.8.2 - 2026-03-25
### Added
- `cds init` now removes the `.vscode` folder when creating projects in SAP Business Application Studio in order to restore compatibility with other project generators. This is a temporary solution likely to be reverted in cds-dk 10.
### Fixed
- `cds add workzone` for Kyma correctly adds the `html5-apps-repo-runtime` to its `Chart.yaml`.
- `cds add app-front` in combination with `cds add ias` correctly includes all `IASDependencyName` settings.
- `cds build` has improved performance in some scenarios.
## Version 9.8.1 - 2026-03-13
### Fixed
- `cds build` plugins correctly formats a thrown `BuildError` in the logs.
- `cds version` also reports a cds-dk installation in Java projects that don't have such a dependency in their `package.json`.
## Version 9.8.0 - 2026-03-09
### Added
- `cds up --overlay <file|name> (Cloud Foundry) now resolves MTA extension descriptors (<name>.mtaext) from the project root.`
- `cds add postgres` now supports Kyma with automatic database provisioning and IP whitelisting.
- `cds deploy --to hana --store-credentials` now warns about the deprecated option `--store-credentials`.
- `cds import` now uses the default options defined via `cds.import.options[<from>] = {option: 'value'}`
- `cds version` now shows version of `@sap/eslint-plugin-cds`.
- `cds version --json` returns a stable output format as JSON.
### Changed
- `cds add multitenancy` does not add an explicit `java` profile to the main app any more.
- `cds deploy` and `cds bind` support Kyma-by-default for projects with Kyma-only deployment descriptors.
- `cds deploy --to hana --on k8s` now supports deploying to SAP HANA using an existing Kubernetes service binding, allowing non-default Kyma naming conventions.
- `cds import` now correctly imports Views with Parameters from a given OData EDMX service definition.
- `cds import` now interprets empty navigation path references as if it would be a null value.
### Fixed
- `cds bind` reports additional error information while accessing Cloud Foundry services.
- `cds version` now works again if executed in subfolders of Java projects without a `pom.xml` file.
- `cds add workzone` in combination with `cds add ias` adds the `HTML5.IASDependencyName` for the `srv-api`.
- `cds add lint` now creates an ESLint config file again.
- `cds import` now correctly handles enum types as keys in EDMX v4 import.
- `cds push` now shows the correct passcode URL when the subdomain changes between logins.
## Version 9.7.2 - 2026-02-13
### Fixed
- `cds build --for mtx-sidecar` correctly resolves `@source` in custom MTX sidecar services.
- `cds build` now utilises caching for workspace resolution, which will speed up build times for projects with many workspaces.
- `cds add` commands don't augment Helm Charts if not managed by CAP.
- `cds add approuter` for Kyma configures token exchange for managed approuter scenarios.
- `cds bind` reports additional error information while accessing Cloud Foundry services.
## Version 9.7.1 - 2026-02-05
### Fixed
- `cds add completion` now works without specifying the project runtime.
- `cds add xsuaa` correctly adds the the binding for the `html5-apps-deployer` on Kyma.
- `cds version` prints an older format in a legacy situation.
- `cds add nodejs` is automatically added in BAS scenarios for compatibility if no other runtime is specified.
- `cds add data -n` works correctly for `Composition of one` scenarios.
## Version 9.7.0 - 2026-02-02
### Added
- `cds debug` is now supported for Kubernetes/Kyma deployments.
- `cds init --nodejs` as a shortcut for `cds init --add nodejs`.
- Support for express 5 (in addition to express 4).
- `cds deploy --to hana` now supports `--out` to specify the output directory for generated files.
- `cds mock <service>` as a shortcut for `cds serve --mocked --project <service> --in-memory? --port 0`.
- `cds add ias` adds a URL for local approuter testing to `redirect-uris` if approuter is configured.
### Changed
- `cds version` received major enhancements: It's now fully based on the `npm ls` command and always prints a tabular output. Also some new flags were added; check `cds version --help` for details.
- `cds deploy --to k8s` increased the timeout to wait for the HDI container creation from 120 to 180 seconds.
- `cds add` facets now abort when executed in a folder that is neither a Node.js nor a Java project.
- `cds add lint` now also adds the .java extension to the files that are linted within VSCode.
- `cds init` now restricts project names to 64 characters maximum, requiring them to start with an alphanumeric character or `_`, and contain only alphanumeric characters, `_`, and `-`.
- `cds import` now generates an on condition for associations if the navigation property in an imported OData v4 service has a referential constraint.
- `cds build` does not ignore wildcarded folders like `app/*` any more.
- `cds env --resolve-bindings/-b` also considers local service bindings.
### Fixed
- `cds add sqlite --for production` adds `@cap-js/sqlite` to `dependencies`.
- `cds build --ws` fixes a race condition.
- `cds build` now places the `i18n` folder in the generated output in nested locations.
- `cds build --for mtx-sidecar` loads CAP plugins from the MTX sidecar instead of the main app for generating the sidecar CSN.
- `cds add ias` uses a matching `IASDependencyName` for the application content deployer.
- `cds add ias` uses a more generic `redirect-uris` pattern.
- `cds import` no longer generates a managed association for navigation properties of imported OData v4 services if the foreign key, the managed association would generate, already exists.
- `cds add multitenancy` for Java correctly creates a `package-lock.json` in _mtx/sidecar_.
- `cds add xsuaa` works properly when executed after `cds add workzone`.
## Version 9.6.1 - 2026-01-09
### Changed
- All commands use colored logs in GitHub Actions workflows by default.
### Fixed
- CVE-2025-15284: update `express` to fix vulnerability with `qs` <6.14.1.
- `cds watch` is more efficient on Linux with respect to `inotify` events. This fixes some crash and stall situations on Linux, especially in SAP Business Application Studio where resources are shared.
- `cds build --production` correctly includes `message.properties` from i18n files provided by CAP plugins.
- `cds add sample` fixes a warning about unused imports in _app/common.cds_.
- `cds init` fixes some rare argument parsing errors.
## Version 9.6.0 - 2025-12-16
### Added
- `cds add console` adds dependency to the CAP console plugin.
### Changed
- `cds import` no longer generates a first parameter typed as `$self` to bound actions, as this parameter is implicit.
- `cds add` sets `relativePaths: true` for generated UI5 apps to avoid deployment issues if UI5 data sources start with a "/".
- `cds up` automatically detects the preferred platform.
- Added deprecation notices for the following commands in favor of using `cds add kyma`:
- `cds add containerize`
- `cds add helm`
- `cds add helm-unified-runtime`
### Fixed
- `cds build --ws-pack` now checks folder depth of up to 5.
- `cds import --config param1=true,param2=0` now writes boolean and number values correctly to `package.json`.
- `cds add sample` sets the correct UI component in _\_appconfig/fioriSandboxConfig.json_.
- `cds add xsuaa` correctly adds the authentication binding to the application deployer if executed afterwards.
- `cds env` prints coloured output by default again.
- `cds add java` will preserve existing _package.json_ settings.
- `cds add multitenancy` now correctly adds a `devDependencies` section when missing.
- `cds add mta` adds fixes an issue where a faulty XSUAA instance was added with `messaging: true` configured.
- `cds add sqlite --for production` correctly activates SQLite for production, not just development.
- `cds up -2 k8s` correctly runs `before_all` before the checksum calculation to calculate against the correct artifact.
## Version 9.5.0 - 2025-12-01
### Added
- `cds import` now accepts `--into-namespace <string>` to override the namespace entities are imported to, when importing OpenAPI definitions.
### Changed
- `cds add portal` adds the correct service key configuration to the _mta.yaml_.
- `cds add sample` creates sample files aligned with recent versions of bookshop and bookstore in https://github.com/capire.
- `cds add sample` uses a matching ID in generated `manifest.json` and UI5 components.
- `cds build` uses `hdblogicalschema` and `hdblogicalschemaconfig` plugins in its default `.hdiconfig`.
- `cds add cloud-logging` adds required dependencies to _pom.xml_ for Java projects.
- `cds add kyma` is now the only suggested Kyma facet in `cds add help`.
- `cds add helm-unified-runtime` option is now deprecated; use `cds add kyma --unified-runtime` instead.
- `cds up --to k8s` now saves the checksum of buildpack images to determine if a rebuild is necessary.
- `cds up --to k8s` will interactively ask for registry credentials if they don't exist on the remote cluster.
- `cds build` automatically adds `contentLocalizedEdmx=true` to the java build task configuration if OData V2 is set.
- `cds add github-actions` has out-of-the-box support for Java projects.
- `cds add html5-repo` and `cds add app-frontend` do not create a separate _ui5-deploy.yaml_ but use the default _ui5.yaml_.
- `cds add` plugins allow merging into non-existing files with `cds.add.merge(<object>).into(<yaml-path>)`.
- `cds build` tasks that produce `csn.json` now emit the `compile.for.runtime` event, in alignment with other runtime CSN producers like `cds serve`. Plugins can use such events to hook into CSN creation.
- `cds add xsuaa` sets `credential-types: [ "binding-secret", "x509" ]` for XSUAA instances.
- `cds add hana` does not create an explicit `.hdiconfig` file any more as `cds build` provides defaults.
- `cds import` generates the on condition for a composition when the corresponding OData navigation property targets a collection, is contained (`$ContainsTarget` in OData EDM) and has a backlink (`$Partner` in OData EDM).
- `cds import` now considers OData contained navigation properties as compositions instead of associations.
### Fixed
- `cds add ias` will always add a binding to the MTX sidecar or approuter if required.
- `cds add ias` has improved support for multitenancy scenarios on Kyma.
- `cds lint` no longer fails with error code 1 and no message when loading the config fails.
- `cds version` no longer prints an `undefined` value for `@sap/cds-dk`.
- `cds compile --flavor files` no longer crashes with a `TypeError`.
- `cds add workzone` does not add superfluous `destinations` configuration to the `srv-api` import.
## Version 9.4.3 - 2025-10-29
### Added
### Changed
- `cds add github-actions` will use the `cap-js/cf-setup` action from GitHub marketplace instead of creating a local copy.
- `cds add containerize` omits the Unix-based `before_all` scripts in `containerize.yaml` in favor of a cross-platform compatible `cds up --to k8s` integration.
- `cds up --to k8s` now uses built-in containerization, eliminating the hard dependency on the `ctz` library.
- `cds up --to k8s` will interactively ask for a domain if it can't be determined from the current Kubernetes configuration.
- `cds build --for hana` no longer requires `.hdbgrants` and `.hdbrevokes` to be specified as a plugin in the `.hdiconfig` file.
- `cds import` no longer emits usage info when invoked with the dry option.
### Fixed
- `cds add data` fixes an issue where randomly generated `Decimal` and `Integer` values could exceed their defined precision or scale.
- `cds add pipeline` does not add UI5 template files in some cases.
- `cds add ias` does not write to the `mta.yaml` for non-MTA projects.
- `cds add ias` automatically adds the `authenticationType` to `xs-app.json` if required.
- `cds add ias` adds a binding to the approuter component if required.
- `cds import --from ...` yields a better error message for unknown import kinds.
## Version 9.4.2 - 2025-10-23
### Changed
- `cds add containerize` does not add app module installations scripts to its `containerize.yaml`. Use `cds up --to k8s` instead.
- `cds add` is less eager with respect to changing unaffected configuration.
- `cds add ias` adds less unnecessary configuration in combination with the HTML5 repository.
- `cds add test` includes the service name in the test suite description.
### Fixed
- `cds add ams` followed by `cds add mta` correctly generates the AMS deployer module.
- `cds add hana` does not fail if there's no `.cdsrc.json`.
- `cds up` doesn't try to create a symlink to the monorepo _package-lock.json_ if a submodule-local one already exists.
- `cds add test` creates correct OData URLs with unqualified entity names in service paths.
- `cds add http` skips contained composition targets.
- `cds add sample` no longer comes with an error when creating a Book through Fiori.
- `cds build` now places the `i18n` folder in the generated output root directory instead of nested locations.
## Version 9.4.1 - 2025-10-09
### Added
- `cds add app-frontend` is supported as an alias to `cds add app-front`.
- `cds add attachments` is supported for Java projects.
### Fixed
- `cds import` adds latest version 4 of `@sap-cloud-sdk` packages.
- `cds add sample` now uses Integer IDs for Books and Authors again, instead of UUIDs.
## Version 9.4.0 - 2025-10-02
### Added
- `cds add app-front` adds configuration for the new SAP BTP Application Frontend service.
- `cds add ias` has improved support for XSUAA hybrid projects.
- `cds add multitenancy` automatically adds upgrade hooks for Node.js projects.
- `cds deploy` support the generic `--resolve-bindings` option to resolve all bound services. This is helpful for use cases with multiple `hana`-tagged service bindings.
### Changed
- `cds add typescript` and `cds add typer` will now add a `path` entry in the project's _tsconfig.json_ or _jsconfig.json_ respectively, which will mitigate resolution problems with `@cap-js/cds-types`.
- `cds add multitenancy` adds the `with-mtx` profile to Java apps by default, simplifying local development.
- `cds import` for EDMX files now maps `Edm.String` types to `cds.String` (before: `cds.LargeString`). Background is that some databases don't support the resulting `NCLOB` type in key fields.
- `cds build` will now remove dev dependencies starting with `workspace:`, `file:`, as well as the entire `workspace:` block therein, and regenerate the _package-lock.json_ if needed.
- `cds import` for EDMX correctly imports multiline strings in `DefaultValue`.
- `cds import` now writes annotations from EDMX files in a flat, i.e. non-structured manner, so that they can be processed by the application runtime.
- `cds bind` does not fail when setting the profile via `CDS_ENV`.
- `cds version` is more robust with respect to Java versions.
### Fixed
- `cds add html5-repo` avoids some superfluous configuration combination with `cds add portal`.
- `cds add handler` ignores external services.
- `cds add audit-logging` correctly adds the dependency in the _Chart.yaml_ for Helm deployments.
- `cds deploy --to hana` works with user-provided HANA services.
- `cds bind` doesn't add the `custom-service:` prefix for Node.js any more.
## Version 9.3.2 - 2025-09-16
### Fixed
- `cds add html5-repo` avoids some superfluous configuration combination with `cds add portal`.
- `cds import` correctly imports OData v2 EDMX files with `Edm.Time` properties having a precision.
## Version 9.3.1 - 2025-09-08
### Fixed
- `cds add ias` correctly sets the `subscription-manager` dependencies endpoint for Node.js.
- `cds add data --records` respects the max length of a string field when it is annotated with `@Communication.IsEmailAddress`
- `cds add data --records --format csv` correctly escaping complex properties nested within structs.
- `cds add data --records` correctly generates values for structs in cases when the entity and the struct, used by the entity, have both a property with the same name.
- `cds add html5-repo` also binds the `html5-repo-host` service to the approuter.
- `cds up` has improved support for setups with multiple microservices.
- `cds add mta` will add no `role-collections` parameters if there are some specified in `xs-security.json`.
- `cds add github-actions` correctly generates a release workflow.
- `cds add github-actions` uses a simplified and more resilient Kyma setup script.
- `cds import` now correctly imports EDMX files with empty NavigationPropertyPath tags.
- `cds import` now correctly imports OData v2 EDMX files with `Edm.Time` properties, which have a precision.
## Version 9.3.0 - 2025-09-01
### Added
- `cds bind -a` is now also supported for Kyma, where the app prefix can be passed for `-a`, e.g. `bookshop-srv`.
- `cds build --for hana` now trims leading and trailing whitespaces in csv-Files if build option `trimCsvWhitespaces` is set.
- `cds add github-actions` sets required `permissions`.
- `cds up` supports a deployment layout where approuter or portal service configuration is in a top-level `.deploy` folder.
- `cds add ias` sets the `access-token-format` to `jwt` by default.
### Changed
- `cds add sample` provides more i18n translations.
- `cds add ias` sets the `xsuaa-cross-consumption` field to `true` by default.
### Fixed
- `cds add workzone` with missing `sap.app` config in `manifest.json` does not throw a `TypeError`.
- `cds add ias` adds a subdomain-less application URL in `redirect_uris`.
## Version 9.2.1 - 2025-08-22
### Changed
- `cds add github-actions` adds `if: always()` to the scripts retrieving Cloud Foundry logs.
- `cds up` uses a default timeout of 10 minutes for Helm upgrades.
- `cds bind` works out-of-the-box for PostgreSQL databases.
- `cds bind -a` gives warning if no services are bound to the targeted app.
### Fixed
- `cds add github-actions` won't try to merge a `cf-info` action if there's an existing `mta.yaml`.
- `cds add workzone` with missing `sap.app` config in `manifest.json` does not throw a `TypeError`.
- `cds compile --to xsuaa` generates roles for `@requires` in bound actions.
- `cds add lint` now adds proper configuration to enable linting of JavaScript and TypeScript files in VS Code.
- `cds add mta` does no longer adds services in `mta.yaml` for plugins coming from `devDependencies`.
## Version 9.2.0 - 2025-07-31
### Added
- `cds add xsuaa` now also creates a default `role-collections` field in the `mta.yaml`.
- `cds add github-actions` (shortcut `gha`) adds pipeline configuration for GitHub Actions.
- `cds add kyma` as a shortcut for `cds add helm,containerize`.
- `cds add multitenancy` creates a `package-lock.json` in `mtx/sidecar` for Java projects if not existing.
- `cds build` provides more defaults in its standard `.hdiconfig`.
### Changed
- `cds up` auto-creates `package-lock.json` if required for `app/router`, `app/portal`, and `app/html5-deployer`.
- `cds up` does not do retries when not running in CI/CD (`CI` environment variable is not set).
- `cds add html5-repo` uses a folder `app/html5-deployer` instead of `ui-resources` for Kyma.
- `cds add http` now generates auth headers with `:` separators again, as this is the only separator supporting empty passwords with the RestClient extension in VS Code. (For use with IntelliJ, separate username and password with a blank.)
- `cds add html5-repo` will add the destinations to the application content deployer instead of the service instance.
- `cds add helm` exposes the `srv` module by default in Kyma scenarios.
- `cds add multitenancy` with Helm exposes the sidecar URL for consumption by Java.
- `cds add ias` will use the `production` profile by default, if no other profile is specified.
- `cds add http` now uses the proper service name in the generated requests.
- `cds build` error messages for build plugins are improved.
### Fixed
- `cds add multitenancy` for Kyma with IAS correctly adds the `subscription-manager` service.
- `cds watch/run myapp/` now outputs correct error locations like `myapp/srv/broken.cds` instead of `srv/broken.cds`. These locations can be opened from shells as they are relative to the working folder, not to the project folder.
- `cds add data --records` now correctly generates decimals within the range of the specified precision and scale.
## Version 9.1.3 - 2025-07-24
### Fixed
- Fix installation issues with version 9.1.2.
## Version 9.1.2 - 2025-07-24
### Fixed
- CVE-2025-7783: vulnerability with `form-data` versions <4.0.4.
- `cds build --for hana` no longer excludes external entities when not in mocking mode.
## Version 9.1.1 - 2025-07-10
### Added
- shipping an `index.d.ts` file containing a subset of the dk types now.
### Changed
- `cds add http` now generates auth headers with `:` separators again, as this is the only separator supporting empty passwords with the RestClient extension in VS Code. (For use with IntelliJ, separate username and password with a blank.)
### Fixed
- `cds deploy --to hana --no-build` now works correctly
- fixed bug in call from SAP Business Application Studio wizard
## Version 9.1.0 - 2025-07-02
### Added
- `cds add test` to generate test files for CDS services [experimental]
- `cds debug --no-devtools` allows to skip opening the developer tools.
### Changed
- `cds add helm` doesn't route the subscription callbacks through the app router any longer.
- `cds lint` now uses local copy of `eslint` help content.
- `cds add cloud-logging` will correctly add the Helm dependency to `Chart.yaml`.
### Fixed
- `cds add hana` for Java correctly adds the HANA dependencies to `chart/Chart.yaml`.
- `cds add xsuaa` for Java doesn't throw an error when the `.cdsrc.json` is not existing.
- `cds build --for fiori` stores EDMX files again relative if `dataSources.mainService.settings.localUri` in UI5's `manifest.json` is a relative path.
- `cds add ams/ias` add the `repository` in combination with `cds add helm-unified-runtime`.
- `cds add xsuaa` adds a wildcard prefix to the domain name to allow for multitenancy use cases.
- `cds add portal` for Java binds the HTML5 repo runtime and portal service to the Java server instead of the MTX sidecar, to allow for CAP Java built-in dependencies resolution.
- `cds repl --run` can now run again w/o `@cap-js/cds-test` installed.
- `cds push` and other commands now handle request errors more robustly
- `cds debug` now also honors the `--host` parameter when it starts `cds watch`.
## Version 9.0.6 - 2025-06-18
### Changed
- `cds build` now adds an `engines.node = ">=20"` entry to the effective _package.json_ iff it is missing from the project's _package.json_ to avoid engine confusion when deploying to Cloud Foundry
- `cds add` without any flag now shows the help (`cds add --help`) instead of throwing an error
## Version 9.0.5 - 2025-06-06
### Changed
- `cds init` uses latest Maven Java archetype version 4.0.2 for creating Java projects.
### Fixed
- `cds build` for extensions now filters built-in entities such as `cds.outbox.Messages` to fix the extension upload with `cds push`.
- `cds add data` now correctly works for nested structured properties.
- `cds add data/http` no longer create decimal numbers with too many precision places
## Version 9.0.4 - 2025-05-28
### Changed
- `cds add typescript` adds a `tsx` dependency. It no longer adds a `watch` script pointing to `cds-tsx` because `cds watch` will run `tsx` automatically.
### Fixed
- Bring shrinkwrap back.
- `cds import --from edmx` no longer produces invalid CSN for function imports with return types of the same name.
- `cds watch` no longer shows the outbox model for empty projects.
## Version 9.0.3 - 2025-05-26
### Changed
- `DEBUG=build cds build` does not log the CDS env any more.
- `cds init --java:mvn` does not prefix the `-D` to options any more to allow for options not starting with `-D`.
- `cds add html5-repo` for Helm does not add XSUAA configuration for IAS-only projects.
- `cds add html5-repo` for Helm has improved support for IAS.
- `cds watch` with `tsx` will no longer be print notifications to `console.log` without environment variable `DEBUG` set.
- `cds add html5-repo` will add missing `requires` for its `build-parameters` setting, even if ran with a preexisting `requires` key.
- `cds unknown-command valid-file.cds` now fails due to the unknown command instead of compiling the cds file.
### Fixed
- `cds up -2 k8s` fails for errors in `ctz` instead of only logging the messages.
- `cds add helm` now correctly prompts for the registry server.
## Version 9.0.2 - 2025-05-09
### Fixed
- `cds add multitenancy` adds the `@sap/cds-mtxs` to `devDependencies` in for Java projects.
- `cds add ias` rewrites the `url: ~{srv-url}` to `url: ~{srv-cert-url}` if required.
- `cds add ias` adds `forwardAuthCertificates` and `strictSSL` settings to the app router if required.
## Version 9.0.1 - 2025-05-08
### Added
- `cds debug --force` automatically enables SSH for Cloud Foundry application instances.
- Faster table deployments on SAP HANA using HDI param `com.sap.hana.di.table/try_fast_table_migration=true` in `cds build --for hana`, `cds deploy --to hana`, `cds add hana`.
### Changed
- Change license from SAP DEVELOPER LICENSE AGREEMENT '3.1' to '3.2 CAP'. See https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt.
- The `CHANGELOG.md` file now only contains changes from 8.0.0 onwards.
- cds-dk now requires `@sap/cds` version 8.3.0 or higher. An error is raised for older versions.
- cds-dk now requires `@sap/cds-mtxs` version 2 or higher.
- `cds add multitenancy` and `cds add xsuaa` use the `production` profile by default.
- `cds add helm` uses a default for the Docker secret name (`docker-registry`), instead of asking for it in interactive mode.
- `cds add helm` uses the pre-configured domain name for your Kyma cluster as a default, instead of asking for it.
- `cds add workzone` uses the backend destination `srv-api` instead of `{{appName}}-srv-api` on Cloud Foundry.
- `cds add approuter` in combination with `xsuaa` adds a `redirect-uris` to `mta.yaml` for Cloud Foundry projects.
- `cds build --ws-pack` now recursively packs dependencies from workspaces. If the `workspaces` definition in the project root contains glob patterns with braces `{…}`, Node.js 22 or later will be required.
- `cds add xsuaa` adds a `redirect_urls` to the `mta.yaml` for Cloud Foundry projects.
- `cds deploy --to hana` throws an error if an unsupported option is passed.
- The Node version in `gen/db/package.json` file generated by `cds build` is now `>=18`, matching to what `@sap/hdi-deploy` specifies.
- `cds watch` only auto-resolves bindings if either `CDS_ENV` or `--profile` are set.
- `cds compile --help` no longer mentions the `hdbcds` format.
- `cds add pipeline` also creates UI5 resources if required.
- `cds add hana` does not add `native_hana_associations` configuration any more.
- `cds up` supports embedded multitenancy scenarios with no sidecar.
- `cds lint` requires projects to install `eslint` locally (or system-wide), as `cds-dk` will no longer include `eslint` internally.
- `cds add telemetry` adds limits the version of added `@opentelemetry` dependencies to `<0.200`.
- `cds add cf-manifest` uses a 1 GB disk quota instead of 512 MB for Java apps.
### Removed
- `cds build --clean` is removed.
- `cds build` no longer supports configuration with `cds.data` and `cds.service` in package.json.
- `cds watch` still allows options `--include` and `--exclude`, but CDS configuration is ignored.
- `cds deploy --to hana --store-credentials` is removed.
### Fixed
- `cds up` has improved support for monorepos.
- `cds add html5-repo` works in combination with multitenancy when no app router or Work Zone is set up.
- `cds add dynatrace` sets the `environment_name` property according to the specification.
- `cds deploy --to hana` now supports `--with-mocks`.
- `cds bind` gives better error messages if the Cloud Foundry org or space are not found.
- `cds add enterprise-messaging` with xsuaa now adds `processed-after` in the `mta.yaml`.
- `cds deploy --to hana` correctly hands over `--profile` to `cds build` when deploying.
- `cds import` adds `@mandatory` annotations to properties marked as `required` in the schema.
- `cds add ams` for Java adds a custom builder to the `mta.yaml` to circumvent the missing `srv/src/gen/policies`.
- `cds add multitenancy` requires the `srv-api` instead of the `mtx-api` for Java projects.
## Version 8.9.14 - 2026-02-25
### Fixed
- CVE-2026-25639: Update `axios` version to 1.13.5
## Version 8.9.13 - 2029-01-09
### Fixed
- CVE-2025-15284: update `express` to fix vulnerability with `qs` <6.14.1
## Version 8.9.12 - 2025-12-16
### Fixed
- `cds import` generates the on condition for a composition when the corresponding OData navigation property targets a collection, is contained (`$ContainsTarget` in OData EDM) and has a backlink (`$Partner` in OData EDM).
- `cds import` now considers OData contained navigation properties as compositions instead of associations.
- Support for `hdb` v2.
## Version 8.9.11 - 2025-11-21
### Fixed
- Bump dependencies in shrinkwrap.
## Version 8.9.10 - 2025-09-19
### Fixed
- Updated shrinkwrap to include `@sap/cds-compiler` version 5.9.12.
## Version 8.9.9 - 2025-09-16
### Fixed
- CVE-2025-58754: vulnerability with `axios` versions <1.12.0.
## Version 8.9.8 - 2025-07-24
### Fixed
- CVE-2025-7783: vulnerability with `form-data` versions <4.0.4.
## Version 8.9.7 - 2025-07-17
### Fixed
- Bump dependencies in shrinkwrap.
## Version 8.9.6 - 2025-06-05
### Fixed
- Bump dependencies in shrinkwrap.
## Version 8.9.5 - 2025-06-05
### Fixed
- Bump `tar-fs` to address CVE-2024-12905.
- `cds add data` now correctly works for nested structured properties.
- Help text of `cds debug`.
## Version 8.9.4 - 2025-05-26
### Changed
- `cds init` uses latest Maven Java archetype version 3.10.1 for creating Java projects.
## Version 8.9.3 - 2025-04-24
### Fixed
- `cds add workzone` uses the backend destination `srv-api` instead of `{{appName}}-srv-api` on Cloud Foundry.
- `cds init` uses latest Maven Java archetype version 3.9.1 for creating Java projects.
### Changed
- `cds add pipeline` also creates UI5 resources if required.
## Version 8.9.2 - 2025-04-16
### Fixed
- `cds bind` gives better error messages if the Cloud Foundry org or space are not found.
- `cds add html5-repo` works in combination with multitenancy when no app router or Work Zone is set up.
### Changed
- The Node version in `gen/db/package.json` file generated by `cds build` is now `>=18`, matching to what `@sap/hdi-deploy` specifies.
- `cds` commands now fail if used in combination with the upcoming `@sap/cds` version 9.
## Version 8.9.1 - 2025-04-04
### Fixed
- `cds build` restores compatibility with `@sap/cds` 7, no more crashing there with `TypeError: Cannot read properties of undefined (reading 'enabled')`.
- `cds add containerize` works if run before `cds add helm`.
- `cds add http` no longer writes headers starting with a placeholder (IntelliJ compatibility)
- `cds init --force` overwrites existing files.
## Version 8.9.0 - 2025-03-31
### Added
- `cds import` now adds Cloud SDK dependencies to package.json if an OData service is imported.
- `cds deploy --to hana --on k8s` is now supported.
- `cds up` automates freezing dependencies, building, and deploying your application.
- `cds pull` includes existing extensions if the server is configured accordingly.
### Changed
- `cds build` logging is simplified.
- `cds add html5-repo` ignores folders in `app/` starting with `.`
### Fixed
- `cds add telemetry` is order-independent with other `cds add` commands for Java.
- Build task `mtx-extension` now fails with exit code 1 in case of build errors.
### Removed
- Removed `before:cds-watch` script.
## Version 8.8.2 - 2025-03-21
### Fixed
- Bump axios to 1.8.4, fixing CVE-2025-27152
## Version 8.8.1 - 2025-03-11
### Fixed
- `cds init` uses latest Maven Java archetype version 3.8.0 for creating Java projects.
- `cds init --add lint` writes complete eslint.config.mjs.
- `cds import` no longer fails with an `EXDEV` error in `docker` containers.
- `cds import` json schema now contains correct references.
## Version 8.8.0 - 2025-03-03
### Added
- `cds add xsuaa` lets you pass a `--plan` option, e.g. for `cds add xsuaa --plan broker`.
- `cds add workzone` and `cds add workzone-standard` support for Kyma.
- `cds add typer` now adds a `before:cds-watch` script to run cds-typer before starting `cds watch`.
- `cds watch` supports a `before:cds-watch` npm script in your `package.json`, executed once before the initial `cds watch` startup.
### Changed
- Running `cds deploy` in dry mode with an output file specified will now only produce a warning in stderr and will not exit with an error code.
- `cds deploy --out …` will not generate the specified output file if it would end up empty.
- `cds add workzone` adds a transpilation task for UI5 deployment descriptors in TypeScript projects.
- `cds add workzone` does not use the deprecated `webide-extension-task-updateManifestJson` task any more.
### Fixed
- `cds add approuter` doesn't create entries for `app` and `appconfig` local directories any more.
- `cds add telemetry` for Java doesn't erroneously add `cds` configuration or `dependencies` to the `package.json`.
- `cds add sample` adds the workzone-specific configuration if `cds.requires.workzone` is `true`.
- `cds compile -o` uses the correct file suffix if explicitly specified in the file name.
- `cds bind` caches the promise of its `cf -v` call to prevent race conditions.
- `cds import --out <folder>` does not fail if executed in a folder with a `.`.
- `cds add workzone` has improved support for multitenancy.
## Version 8.7.3 - 2025-02-19
### Fixed
- `cds compile -o` fixes the output file name in `-o <service>.json`.
- `cds lint` won't stumble over scalar config objects anymore.
- `cds init` uses latest Maven Java archetype version 3.7.2 for creating Java projects.
- `cds deploy --to hana --dry` doesn't exit with a `TypeError` if there are no models.
- `cds add ias` fixes a few scenarios in combination with multitenancy.
## Version 8.7.2 - 2025-02-14
### Fixed
- `cds compile -o` with a file name such as `cds c srv/cat-service.cds -o srv/cat-service.json`.
- `cds compile` without `-o` doesn't print the file name header for single services any more.
- `cds add workzone` in combination with multitenancy doesn't throw an error any more.
- `cds import --from rfc` stores the input file again in `srv/external/<destination>/...` instead of `srv/external/...`.
- `cds import --name` no longer crashes with a `TypeError`.
- `cds import --out <filename>` no longer crashes with a `Error: EEXIST`.
- `BuildError` no longer cuts off its stack.
- `cds bind -a` doesn't concurrently try to check the Cloud Foundry version or OAuth token.
- `cds import` now resolves target of association/composition correctly for multiple schema files.
## Version 8.7.1 - 2025-02-04
### Fixed
- `cds add mta` now sets `parameters.instances` explicitly to `1` in Java projects, same as for Node.js projects.
- `cds add mta` does not add the `readiness-health-check-type` and `readiness-health-check-http-endpoint` properties to the `mta.yaml` any more.
- `cds add -p` correctly parses plugin-contributed options.
- `cds watch` correctly escapes its default ignored directories on Windows.
- `cds compile` correctly uses `--service=all` as its default.
- `cds add ias` correctly writes MTX sidecar config in combination with `cds add multitenancy`.
## Version 8.7.0 - 2025-01-28
### Added
- `cds watch` supports `--exclude` and `--include` options to specify additional paths to include or exclude. Alternatively, set `cds.watch.[include|exclude]` in your CDS config.
- `cds import` now updates configuration for Java projects (in `application.yaml` etc.)
- `cds import --config` now also accepts a string with flat key-value pairs (like `--config "credentials.destination=foo"`), which is easier to write than the current JSON string (`--config "{\"credentials\": {\"destination\": \"foo\"}}"`).
- `cds debug` now supports Java applications, both local and remote.
- `cds import` can now import an odata-V4 file with external dependencies(odata-V4 file). Dependencies has to be provided with -d/--dependencies option and must not have any external dependencies.
### Changed
- `cds add mta` sets backend and MTX `parameters.instances` to a default of `1` for improved discoverability.
- `cds add sample` generates sample .ts files if the project is a TypeScript project
- `cds import` now doesn't need beta flag to populate default value for optional action and function parameters as compiler now supports default value for @Core.OptionalParameters.
- `cds add portal` now uses a more generic sample translated title instead of "Bookshop".
### Fixed
- `cds add mta` in combination with `cds add ias` correctly adds all routes to the backend module.
- `cds add mta` adds the DB deployer module without prior installation of `@cap-js/hana`.
- `cds add mta` adds the npm-ci builder for nodejs modules to use fixed package-lock versions for dependency vendoring.
- `cds build --ws` will no longer require a `db/` folder in the root directory of the project.
- `cds import` doesn't throw error while importing odata-V4 file with com.sap.vocabularies.
## Version 8.6.1 - 2024-12-18
### Fixed
- `cds add ams` now creates correct dependencies for Java projects.
## Version 8.6.0 - 2024-12-17
### Added
- `cds repl` got new option `--run` to run a server; also available through `.run` command within the REPL.
- `cds repl` got new option `--use` to make the features of a `cds` available as globals.
- `cds repl` got new builtin `.inspect` command to inspect object with configurable depth, e.g. `.inspect cds .depth=1`.
- `cds watch` now detects a TypeScript project and tries to run with `tsx` if this is installed locally or globally. Otherwise a warning message is emitted. `CDS_TYPESCRIPT=false` can be used to opt out of this behavior.
- `cds import --group` to allow RFC importer to organize imported modules under a logical name.
- `cds init/add` for Java projects automatically create a `package-lock.json`.
- `cds add ias` adds IAS configuration (beta).
- `cds add ams` adds AMS configuration (beta).
### Changed
- Running `cds init` in the user's home dir w/o a project name now fails. This is to prevent creation of configuration that would act as global (user) configuration leading to follow-up problems with later projects.
### Fixed
- `cds add html5-repo` adds an `index.html` as `welcomePage` to the `xs-app.json`, if available.
- `cds bind` fixes the recursive call to `mergeCredentials`.
- `cds add` won't add a duplicated `SUBSCRIPTION_URL` if it doesn't match the template specification.
- `cds watch` gives a better error message for TypeScript projects started with if `tsx` isn't installed.
- `cds build` no longer throws an undefined error when processing build plugin messages.
## Version 8.5.1 - 2024-12-05
### Fixed
- `cds build` now logs existing plugin build messages if a BuildError is thrown.
## Version 8.5.0 - 2024-11-26
### Changed
- `cds import` now generates generic action/function in case of bound action/function collision and unbound function collision with @cds.validate = false.
- `cds add typescript` creates projects with `cds-tsx` to run apps instead of former `cds-ts`.
- `cds deploy` writes error output to `stderr`.
- `cds add http` now evaluates mocks users when creating `Authorization` headers
### Added
- `cds debug` lets you debug Node.js applications running locally or in Cloud Foundry.
- `cds watch --inspect` and `cds watch --inspect-brk` activate the debugger in the same way as the standard Node.js CLI options, i.e. they accept a `host:port` combination and `0` as values.
- The existing `cds watch --debug` is now an alias to `cds watch --inspect`.
- `cds add cloud-logging` adds cloud-logging as an alternative for application logging in Kyma.
- `cds add cloud-logging --with-telemetry` or `cds add telemetry` adds cloud-logging as well as support for `cap-js/telemetry` plugin in Kyma.
- `cds add handler` now also works for Node.js projects. It creates an implementation file for each service with event handlers for all entities and actions.
- `cds add esm` creates ESM-compatible Node.js projects. Sample code added by `add sample` and `add handler` will respect this setting if added afterwards. Existing code will not be adjusted by `cds add esm`, though.
### Fixed
- `cds import` throws proper error message if Annotation element doesn't have Term attribute.
- `cds add approuter` no longer enforces Node.js 22, which is not supporter by current `@sap/approuter` version 17. The previous Node.js version 20 is used again.
- `cds add -p` with custom options now works if the entry was not in the `package.json` beforehand.
- `cds add http` works for actions without parameters.
- `cds add workzone` includes the `updateManifestJson` task on initial generation.
- `cds build --ws` no longer creates migration tables in shared database or wrong workspace.
## Version 8.4.2 - 2024-11-19
### Changed
- `cds init` uses latest Maven Java archetype version 3.4.1 for creating Java projects.
### Fixed
- `cds add -p/--package` correctly parse plugin-contributed options.
- `cds add side-by-side-extensibility` does not throw an error.
- fix method name in `cds bind` credential handling.
- `cds add --help` no longer has missing line breaks in help text.
- `cds` commands no longer fail with an error `cds.extend is not a function` with very old versions of `@sap/cds`.
- `cds add hana` adds the `requires.db` entry to `.cdsrc.json` for Java projects.
- `cds add data` creates decimal values with correct scale `0` if only precision is given, like in `Decimal(15)`.
## Version 8.4.1 - 2024-11-08
### Added
- `cds deploy --no-build` lets you skip the implicit `cds build`.
- `cds add data/http` supports new type `cds.Map`.
### Fixed
- `cds compile --to <unknown>` shows a cleaner error message.
- `cds add data` handles composition of one correctly.
- `cds add http` creates payloads for unbound actions in services.
- `cds compile --to xsuaa` can now handle annotation expressions in `where` clauses.
- `cds add http` produces requests for all expected data and no longer relies on existing data on the side.
- `cds add typer` creates `tsconfig.json` that works with `cds-tsx`.
## Version 8.4.0 - 2024-10-29
### Added
- `cds add application-logging` for Java also executes the `cds:add` goal with feature `APPLICATION_LOGGING`.
- Added support for `import` and `export` for auto-completion in `package.json` and `.cdsrc.json`.
- `cds add side-by-side-extensibility` adds configuration for logic extensibility via extension points (Java).
- `cds init --java` can be used as an alias to `cds init --add java`.
- Add cds schema for `helm` build plugin.
### Changed
- `cds init` does not put comments in JSON files within `.vscode/`.
- `cds import --from asyncapi` now uses CloudEvents type in `@topic` annotation.
- `cds deploy` does not fall back to the deprecated `hanatrial` service plan any more.
### Fixed
- `cds env` now colors is output honoring settings like `FORCE_COLOR`.
- `cds add` commands correctly detect Java/Node in Microsoft PowerShell.
- `cds add hana` doesn't add `dependencies` to `.cdsrc.json` any more.
- `cds add cf-manifest` uses the new `sap_java_buildpack_jakarta` buildpack.
- `cds build --production` now correctly formats console log output.
- `cds add` correctly handles entries like `cds.requires.auth` if the following configuration is scoped in a profile.
- `cds add` plugins can use a shortcut for their options.
- `cds import` fix for no entity schema in OData V2.
## Version 8.3.0 - 2024-09-30
### Added
- `cds add mta`, `cds add helm` and `cds add cf-manifest` execute the `mvn cds:add -Dfeature CF/K8S` under the hood for Java projects.
- `cds compile --to mermaid` now supports `mta.yaml` to generate a visualization of your deployment descriptor.
- `cds add data` now also generates data for models imported with `cds import`.
- `cds add data` now also supports structured types.
- `cds deploy` now can also write its DDL statements to a separate log file with the `--out <file>` parameter.
- `cds add dynatrace` is now supported for Kyma.
- `cds import --name ...` to be used in RFC importer (`@sap/cds-rfc`).
- `cds add cloud-logging --with-telemetry` and `cds add dynatrace` are added to the `production` profile by default and respect the `for` option.
### Changed
- `cds add sample` now uses `@ui5/cli` version 4.
- `cds import` now throws a warning for OpenAPI files containing recursive data types.
### Fixed
- `cds add workzone`-created apps can now directly be added via Content Manager in SAP Build Work Zone.
- Less obtrusive warning about `cds` instead of `cds-ts` in Typescript projects.
## Version 8.2.3 - 2024-09-25
### Fixed
- In `cds.cli.command`, commands now show up in the correct case.
- `cds add` plugins don't throw a `TypeError` if `cds.cli.options` is `undefined`.
- `cds watch` no longer ignores `*git/` folders, but only `.git/`.
- `cds import` updates `package.json` file in `srv` folder if existing. The `srv` folder name is determined by `cds.env.folders.srv` config or parameter `--out`.
- `cds import` doesn't change existing service configuration data. Now, `destination` credentials are only saved for the `production` profile.
## Version 8.2.2 - 2024-09-17
### Fixed
- BDSA-2024-6188: vulnerability with express.js 4.19.2
- `cds import --out` copies the given metadata file to the correct output folder. CLI options are propagated to the `cds.import` API.
- `cds add sample` no longer creates a irregular whitespace in `admin-service.js`.
- `cds login` now correctly fetches tokens again with client credentials (or hints at invalid credentials).
- `cds add handler` can now also be called from the `srv` dir.
## Version 8.2.1 - 2024-09-05
### Fixed
- Update `@sap/hdi-deploy` to fix CVE-2024-4067 with `micromatch` 4.0.7
- `cds add` plugins now correctly parse flags (options with `type: 'boolean'`) if not used as the last argument.
## Version 8.2.0 - 2024-09-02
### Added
- `cds add dynatrace` adds configuration for Dynatrace.
- `cds add cloud-logging` adds configuration for SAP Cloud Logging. Option `--with-telemetry` allows for configuration with telemetry.
- `cds version` shows version information for `@cap-js/db-service`.
- `cds add portal` now adds SAP Cloud Portal configuration for Kyma.
- `cds add handler` allows to create handler stubs (for Java only, beta)
- `cds init --add java --no-db` lets you create a Java project without persistent database.
- `cds import` supports plugins.
- `cds add containerize` now supports unified-runtime.
- `cds add helm` now supports templating in the mountPath in the additionalVolumes.
- Experimental support for `tsx` through `cds-tsx`.
- `cds bind --to-app-services` now uses `vcap.name` to resolve multiple services with same type. A warning is issued in case of ambiguities.
- `cds compile --to ord -o <name>` supports `.json` file extension.
- `cds import --destination` applies destination credentials to existing service configurations.
### Changed
- `cds add hana` writes configuration for `cds build/compile` to no longer produce native SAP HANA associations. This improves deployment performance, but has a one-time performance penalty (in the next deployment).
- `cds login` prints shorter messages about refresh tokens.
- `cds init` uses latest Maven Java archetype version 3.2.0 for creating Java projects.
### Fixed
- `cds import` fix for single entity schema in OData V2.
- `cds add portal` correctly sets the `appId` in its `CommonDataModel.json` from the `manifest.json` app ID.
- `cds add html5-repo` adds the SAP BTP Destination service as a hard dependency again for Kyma projects.
- `cds build --ws-pack` correctly creates tarball archives for workspaces with nested `node_modules` folders.
- `cds import` now shows proper error message in case of bound action collision.
- `cds deploy --to hana` now runs an existing `hana` build task configuration instead of a default one.
### Removed
- Removed `build` and `build:ts` npm scripts that were generated into `package.json` when adding the `typescript` facet.
## Version 8.1.2 - 2024-08-17
### Fixed
- Dependency update for `axios` to fix CVE-2024-39338
- `cds login` now fetches the passcode URL for the subscriber tenant if the subdomain is given.
- `cds build` now correctly generates migration tables for `CodeList` entities.
## Version 8.1.1 - 2024-08-07
### Added
- Add more features to CAP project creation wizard in SAP Business Application Studio.
- `cds.add.merge` now you specify a `key` in its `deletions` semantics.
### Changed
- `cds init` uses latest Maven Java archetype version 3.1.0 for creating Java projects.
### Fixed
- `cds import` now gives proper error message for OData import in case of invalid OData version or invalid encoding.
- `cds import` now able to ignore invalid escape sequence in the description of properties for OData V2.
- `cds add mta` does not error when the `app/router` folder was deleted.
- `cds version -i` does not show a globally installed version when none is installed or linked.
- `cds compile --to openapi` no longer fails with `Error: Unknown protocol: graphql`.
- `cds add data` can now correctly handle circular dependencies in entities that point to themselves vi