# Change log

## v3.39.1

Released on 2021/12/12, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.39.1))

### Bug fixes

* Fix a bug that caused stacks marked as obsolete to be included in undeploy stacks operation if they depended on stacks chosen to be included in the undeploy operation.&#x20;

## v3.39.0

Released on 2021/12/11, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.39.0))

### Features

**Prune obsolete stacks**

It's now easier to remove stacks that are no longer needed by marking them as obsolete and then executing the new [prune stacks command](https://docs.takomo.io/command-line-usage/prune-stacks) ([#327](https://github.com/takomo-io/takomo/issues/327)).

### Improvements

* Reviewing stacks to be deployed or undeployed now shows only the direct dependencies of the effected stacks. Previously, also transitive dependencies where shown, which caused the dependency list to become very long in larger projects with complex dependency graphs.&#x20;

## v3.38.1

Released on 2021/11/20, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.38.1))

This release includes only code refactoring and more tests.

## v3.38.0

Released on 2021/11/05, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.38.0))

### Features

**Secret parameter resolver**

With the new secret parameter resolver, you can use secrets stored in Secrets Manager as inputs for your CloudFormation stacks ([#317](https://github.com/takomo-io/takomo/issues/317)).

This is an example of how you could use the secret parameter resolver in a stack configuration file:

```yaml
parameters:
  DatabasePassword:
    resolver: secret
    secretId: my-password-secret
```

Read more from the [docs](https://docs.takomo.io/parameter-resolvers/built-in-parameter-resolvers/secret-resolver).

## v3.37.1

Released on 2021/11/03, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.37.1))

This release includes only code refactoring and more tests.

## v3.37.0

Released on 2021/10/14, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.37.0))

### Features

**Extending Takomo project configuration files**

It's now possible to make a Takomo project configuration file (takomo.yml) to inherit configuration from another file. Inheriting configuration becomes useful, for example, when you have a monorepo containing multiple Takomo projects, each having its own configuration and sharing some common properties with others. You can place the common properties in a parent file that others then inherit ([#316](#bug-fixes)).

You use the `extends` property to make a project configuration file inherit configuration from another file:

{% code title="takomo.yml" %}

```yaml
extends: ../takomo.parent.yml
```

{% endcode %}

## v3.36.0

Released on 2021/10/06, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.36.0))

### Features

**Load custom Handlebars helpers from additional directories**

You can now specify additional directories from where Takomo loads custom Handlebars helpers by providing one or more directory paths to the `helpersDir` property of Takomo project configuration. The paths can be either absolute or relative to the current project directory ([#276](https://github.com/takomo-io/takomo/issues/276)).

Read more from the [docs](https://docs.takomo.io/variables/helpers#loading-helpers-from-additional-directories).

## v3.35.2

Released on 2021/09/29, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.35.2))

### Bug fixes

* Fix a bug that caused the stacks deployment order to go wrong in some cases where there was inter-region dependencies between stacks, ([#312](https://github.com/takomo-io/takomo/issues/312)).

## v3.35.1

Released on 2021/09/26, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.35.1))

### Improvements

* Improve AWS API invocations and handling of concurrent operations

## v3.35.0

Released on 2021/09/21, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.35.0))

### Features

#### Expect no changes to stacks when deploying

You can now invoke [deploy stacks](https://docs.takomo.io/command-line-usage/deploy-stacks), [deploy targets](https://targets.takomo.io/command-line-usage/deploy-targets) and [bootstrap targets](https://targets.takomo.io/command-line-usage/bootstrap-targets) commands with `--expect-no-changes` option which causes the operation to fail if at least one of the targeted stacks would have changes. This is useful, for example, if you have made some clean-up to your local configuration and want to make sure that you have not unintentionally introduced some infrastructure changes ([#308](https://github.com/takomo-io/takomo/issues/308)).

### Bug fixes

* Fix loading of stacks when the target regions has more than 100 stacks ([#307](https://github.com/takomo-io/takomo/issues/307)).

## v3.34.1

Released on 2021/09/20, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.34.1))

### Improvements

* Previously, Takomo could not update a stack if its status was ROLLBACK\_FAILED. Now, if Takomo encounters stacks with ROLLBACK\_FAILED status, it attempts to delete the failed stack, and if that succeeds, proceeds to deploy the stack normally).

### Bug fixes

* Fix texts shown on confirm deployment targets operation prompt

## v3.34.0

Released on 2021/09/17, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.34.0))

### Improvements

* Previously, Takomo could not update a stack if its status was UPDATE\_ROLLBACK\_FAILED. Now, if Takomo encounters stacks with UPDATE\_ROLLBACK\_FAILED status, it attempts to continue rollback, and if that succeeds, proceeds to update the stack normally ([#302](https://github.com/takomo-io/takomo/issues/302)).

## v3.33.2

Released on 2021/09/15, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.33.2))

Small improvements.

## v3.33.1

Released on 2021/09/12, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.33.1))

### Features

#### New CLI command: list stacks in organization accounts

You can now use a new CLI command to list CloudFormation stacks from accounts that belong to your AWS organization.

List stacks from every account.

```bash
tkm org accounts list-stacks --config-set-type standard
```

List stacks from accounts that belong to the Root/Workload organizational unit.

```bash
tkm org accounts list-stacks ROOT/Workload --config-set-type standard
```

List all stacks from accounts 123456789012 and 210987654321

```bash
tkm org accounts list-stacks \
  -a 123456789012 210987654321 \
  --config-set-type standard
```

For more information, see the [documentation](https://organizations.takomo.io/command-line-usage/list-accounts-stacks).

#### Choose which config set and command path to use when deploying stacks to accounts

Two new options added to CLI commands that deploy or undeploy stacks from accounts that belong to your AWS organization.&#x20;

* `--config-set <config-set>`
  * Include only this config set.
* `--command-path <command-path>`
  * Include only this command path. Using this option requires that also `--config-set` is used.

These options are supported in the following commands:

* [Deploy accounts](https://organizations.takomo.io/command-line-usage/deploy-accounts)
* [Undeploy accounts](https://organizations.takomo.io/command-line-usage/undeploy-accounts)
* [Bootstrap accounts](https://organizations.takomo.io/command-line-usage/bootstrap-accounts)
* [Tear down accounts](https://organizations.takomo.io/command-line-usage/tear-down-accounts)

## v3.32.0

Released on 2021/08/26, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.30.0))

### Improvements

* Optimize deploying of stacks to minimize AWS API throttling that can occur in larger projects.

### Bug fixes

* Fix bug that prevented recreating failed stacks that have termination protection enabled ([#293](https://github.com/takomo-io/takomo/issues/293)).

## v3.31.2

Released on 2021/08/24, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.31.2))

### Improvements

* Optimize loading of currently existing stacks to speed up commands: deploy stacks and detect stack drift ([#288](https://github.com/takomo-io/takomo/issues/288)).&#x20;

## v3.31.1

Released on 2021/08/23, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.31.1))

### Improvements

* Optimize loading of currently existing stacks to speed up the list stacks operation in larger projects.

## v3.31.0

Released on 2021/08/17, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.31.0))

### Features

#### New configuration property: Infer deployment target's name from its configuration file name

A new property `inferDeploymentTargetNameFromFileName` is now available in the configuration of the filesystem deployment target repository used to load deployment targets from the local filesystem. You can use it to instruct Takomo to infer deployment target names from their configuration files' names. Read more from the [docs](https://targets.takomo.io/configuration/externalize-targets-configuration#infer-deployment-targets-names-from-names-of-their-config-files).

### Bug fixes

* Fix a bug that prevented stack groups to inherit custom validation schemas from their parent.  &#x20;

## v3.30.0

Released on 2021/08/16, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.30.0))

### Features

#### New configuration property: inheritTags

By default, stacks and stack groups inherit tags from their parent stack group. You can now disable this behaviour by setting `inheritTags` to false ([#282](https://github.com/takomo-io/takomo/issues/282)). Read more from the [docs](https://docs.takomo.io/stack-properties/inherit-tags).

## v3.29.0

Released on 2021/08/16, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.29.0))

### Features

#### New hook: Checksum hook

You can use this new hook to calculate checksums from directories in your project. For example, suppose you have a lambda function with its source code located in some directory. In that case, you can calculate a checksum from the directory and all files located under it and use it to skip the lambda deployment if the sources have not changed. Read more form the [docs](https://docs.takomo.io/hooks/built-in-hooks#checksum-hook).

### Bug fixes

* Fix a bug that caused stdout buffer to exceed when a shell command executed with the cmd resolver produced large amounts of output to the stdout ([#279](https://github.com/takomo-io/takomo/issues/279)).&#x20;

## v3.28.0

Released on 2021/08/15, ([GitHub](https://github.com/takomo-io/takomo/releases/tag/v3.28.0))

### Features

#### Skip stack deploy if a hook returns a skip signal

You can now implement a custom hook to decide whether the following stack operation should be skipped ([#254](https://github.com/takomo-io/takomo/issues/254)). For example, you might use this new feature to skip a stack update if your stack has a lambda function, but its source code has not changed.

To indicate that the following stack operation should be skipped, you need to return an output object from your hook that contains `skip: true`.

{% code title="hooks/my-skip-hook.js" %}

```javascript
const execute = (input) => {
  // Some logic that determines if the stack operations should be skipped
  const skipIsNeeded = isSkipNeeded() 

  return {
    skip: skipIsNeeded,
    success: true,
  }
}

// Hook provider that initializes the hook
module.exports = {
  type: "example",
  init: (props) => ({ execute })
}
```

{% endcode %}

Read [here](https://docs.takomo.io/hooks/custom-hooks) how to implement custom hooks.

### Bug fixes

* Fix a bug that caused stdout buffer to exceed when a shell command executed with the cmd hook produced large amounts of output to the stdout.&#x20;
