wolkenkit
Documentation
News
DocumentationGetting startedUpdating wolkenkitChangelog

Changelog

Read what has changed in wolkenkit.

latest

The following significant changes have been made since wolkenkit 2.0.0:

  • Added a landing page to the API endpoint
    • When opening the API endpoint in a browser, in the past this resulted in a 404. This has been changed, as the API endpoint now contains a landing page which improves the user experience when approaching the API manually for the first time.
  • Added upsert semantics for read models
    • From time to time it is necessary to add an item to a read model, if the item does not exist yet, or update it otherwise. This was inconvenient in the past. Now there is the orUpdate extension to the add command, which allows you to easily fall back to updating an item.
  • Added do nothing semantics for read models
    • Sometimes you may want to add an item to a read model, if it does not exist yet, but do nothing otherwise. This was cumbersome in the past. Now there is the orDiscard extension to the add command, which allows you to easily handle this case.
  • Added support for managing secrets in package.json
    • When configuring a wolkenkit application by using environment variables, there was always the problem of how to handle secrets, such as credentials. Now there is the option of securing environment variables to make sure that secrets actually stay secret.
  • Added a search feature to the wolkenkit documentation
    • In the past you always had to navigate the documentation manually. If you didn't know where to find information on a specific topic, this was cumbersome. Now there is a search feature which allows you to easier navigate the documentation by keywords.
  • Updated connection handling in application startup
    • When starting a wolkenkit application, the application immediately restarted if it was unable to connect to the infrastructure services, such as the event store. Now, the application retries things before performing a restart. This results in slightly better startup performance and stability.
  • Improved the performance of command handling
    • In previous versions of wolkenkit commands were always executed one after the other. This could lead to slow behavior, for example when a command was blocked by a long-running action. Now commands are executed in parallel, which dramatically increases their execution speed. Only commands that refer to an identical aggregate are still executed sequentially.
  • Improved error handling in the CLI start and restart commands
    • So far, when starting or restarting an application, an error in the application's JavaScript code led to an endless loops, what finally caused the CLI to crash. This has been improved, as the CLI now reports any errors and, after a few retries, gives up.
  • Rewritten wolkenkit's blob store from scratch
    • The depot, wolkenkit's blob store, was rewritten from scratch. The new code base is of much better quality and introduces a variety of new features. This includes, but is not limited to, an option to remove blobs as well as an option to authorize them.
  • Fixed handling commands when no read model is defined
    • When sending a command without having a read model defined, the wolkenkit application crashed. While this does probably not happen in production, it happened in the getting started guides. This has been fixed.
  • Contributions by the community

For details on how to update to version latest see updating the CLI and updating an application.

2.0.0

The following significant changes have been made since wolkenkit 1.2.0:

  • [BREAKING] Updated APIs to use async and await
    • JavaScript code is often asynchronous. In the past, you had to use callbacks for this. Now wolkenkit supports the new async and await keywords, which allow you to write asynchronous code much more easily and legibly. This primarily affects defining commands in the write model, handling events in the read model, and reacting to events in flows. Additionally this affects writing command middleware and using services in general. See updating an application for details.
  • [BREAKING] Updated the wording of the APIs for read models and flows
    • In the past, you had to provide a when block in read models and in flows. Unfortunately, the distinction was not very clear, and the behavior of these blocks was not consistent. In read models these blocks are now called projections, in flows they are called reactions. This better describes what is actually happening. See updating an application for details.
  • [BREAKING] Removed <script> tag support for the wolkenkit SDK
    • In older wolkenkit versions, you were able to integrate the wolkenkit SDK using either a <script> tag in an HTML file, or by using the require function. From now on, wolkenkit only supports the second option. While this works on Node.js out of the box, you have to use a bundler such as webpack when building an application for the browser. See connecting to an application for details.
  • Added support for installing wolkenkit using Vagrant
    • So far, you had to setup Docker and Node.js before installing wolkenkit. Now there are ready-made virtual machines, available for VirtualBox and VMware, that you can run by installing using Vagrant.
  • Added the option to set environment variables
    • From time to time you want to configure an application at runtime, not at compile-time, e.g. to provide credentials to different environments. You can now set environment variables using an application's package.json file.
  • Added a curated list of blog posts
    • When getting started with wolkenkit, you may be interested in the thoughts and experiences of other people. That's why there now is a curated list of blog posts that deal with wolkenkit, DDD, event-sourcing and CQRS.
  • Added a curated list of articles
    • When getting started with wolkenkit, you may be interested in what IT magazines think and write about it. That's why there now is a curated list of articles that deal with wolkenkit, DDD, event-sourcing and CQRS.
  • Added a Local authentication strategy for testing
  • Updated installation guide for Windows
    • So far, you had to use Hyper-V and Docker Machine to setup wolkenkit on Windows. Now you only need Hyper-V which makes installing on Windows much easier. The installation instructions can be found at installing on Windows.
  • Updated wolkenkit init to work in non-empty directories
    • It was not yet possible to run the wolkenkit init command in a non-empty directory, as this could lead to existing files being overwritten accidentally. Now there is the --force flag to disable this check and overwrite any existing files.
  • Improved compatibility with Internet Explorer 11
    • The wolkenkit SDK now supports Internet Explorer 11 without requiring additional polyfills.
  • Fixed OpenID Connect strict mode
  • Fixed transferOwnership and authorize commands
    • So far, it was possible to use the commands transferOwnership and authorize as constructor commands, i.e. to create new aggregates, although this didn't make sense. This has been fixed.
  • Fixed replaying incompatible aggregates
    • If you tried to replay an existing aggregate, but with the wrong aggregate type, the application crashed in an uncontrolled way. This has been fixed.
  • Contributions by the community

For details on how to update to version 2.0.0 see updating the CLI and updating an application.

1.2.0

The following significant changes have been made since wolkenkit 1.1.0:

  • Updated wolkenkit to use Node.js 8.9.1
    • Now that Node.js 8.x has become the new LTS version, wolkenkit now runs on Node.js 8.9.1.
  • Rewritten the wolkenkit CLI using Node.js
    • The wolkenkit CLI was rewritten using Node.js, so you can now install it using npm, either globally or into the local context of your application.
  • Fixed a bug in detecting expired OpenID Connect tokens in the wolkenkit client SDK
    • When using the OpenID Connect authentication strategy, expired tokens were sometimes mistakenly regarded as valid by the wolkenkit client SDK. This has been fixed.
  • Contributions by the community

For details on how to update to version 1.2.0 see updating the CLI and updating an application.

1.1.0

The following significant changes have been made since wolkenkit 1.0.1:

  • Added support for wolkenkit on Windows
  • Updated PostgreSQL to 9.6.4
    • There was a security issue in PostgreSQL 9.6.2. With wolkenkit 1.1.0 PostgreSQL has been updated to 9.6.4.
  • Fixed compatibility with Docker 17.05 and above
    • With CLI 1.0.2, wolkenkit is compatible with Docker backends running on Docker 17.05 and above.
    • See thenativeweb/wolkenkit#5 for details.
  • Fixed invalid read query handling in HTTP API
    • There was a bug that caused invalid read queries to bring down the HTTP API. With wolkenkit 1.1.0 this has been fixed.
  • Fixed a critical security issue in authorizing commands
    • In certain circumstances wolkenkit failed to authorize commands correctly. This has been fixed.
  • Contributions by the community

For details on how to update to version 1.1.0 see updating the CLI and updating an application.

1.0.1

The following significant changes have been made since wolkenkit 1.0.0:

  • Fixed wolkenkit init
    • There was an error in the CLI that occured while initializing new wolkenkit applications. wolkenkit CLI 1.0.1 fixes this issue.
    • See thenativeweb/wolkenkit#1 for details.
  • Contributions by the community

For details on how to update to version 1.0.1 see updating the CLI.