# `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:

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.