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