---
# System prepended metadata

title: '`app-change` Enhancement Overview'
tags: [kapp]

---

# `app-change` Enhancement Overview
###### tags: `kapp`

- Add value to the current `app-change` feature in place by storing diffs for changes.
- Enable users consuming `kapp` through automated pipelines to access an audit-trail that can be used for debugging their workflows.
- Give user control over which resources should have a descriptive history and management of stored app-changes
- Improve how we allow users to interact with app-changes

## `app-change` as of Today
As of today `kapp app-change list -a app-name` looks something like this:
![](https://i.imgur.com/lKDwHFL.png)
Along with the start and end time for a particular change. It displays the number of resources affected and the operation performed upon them.

## Proposed additions
### `app-change describe <name>`
- Displays details for a particular `app-change`.
- These details include start time, duration, status, operations performed  and text diff for the change.

### Improving `app-change list`
- `--before=<timestamp>`, `--after=<timestamp>`
    - Can be used to specify a time interval and list app-changes in that interval
- `--sort`
    - allowed values : `newest-first`,`oldest-first`
    - default value : `newest-first`
    - Let's the user decide how they want to list app-changes
- `--skip n`
    - _n_ is the number of app-changes the user would like to skip. Ordered as per the value of the `sort` flag.
    - default value : 0
- `--limit n`
    - _n_ is the number of app-changes the user wants to view.
    - default value : 0 (no limit imposed)
- Scenario:
    - Let's say user is updating resources once every 15 minutes and he wants to view changes made for an hour 2 hours ago.
    - This translates to : `kapp app-change -a test list --skip 8 --limit 4`

### `app-change delete`
- Same flags for sorting and paginating as `app-change list`
- Allows users to delete app-change ConfigMaps and declutter their cluster easily if needed.

### Improving `kapp rename`
- `--rename-app-changes`
    - boolean flag
    - default `false` (which is the behaviour observed today)
    - Let's the user decide whether or not he wants to move and rename the app-changes while moving the `kapp` ConfigMaps to a new namespace.
- `--max-app-changes`
    - Let's the user specify the number of newest changes that they want to rename and move

### Config keys
- A boolean key `saveDescriptiveAppChange` which allows the user to disable this feature.
- We could let the feature be disabled by default while we are refining it, if needed.

### Other configuration
- Limit the number of `app-changes` stored.
    - A value like `maximumAppChanges` which allows the user to specify the number of newest changes they would like to store.
- Ignore changes for a particular resource
    - The user might wanna ignore changes for a particular resource which is updated frequently with an annotation like `kapp.k14s.io/ignore-app-change`
    - (Needs discussion) allow user to specify label filters in Config to decide which resources should have a descriptive diff stored.

