# v0.27

[Release notes](https://github.com/grafana/grafana-app-sdk/releases/tag/v0.27.0)

*Upgrading from*: v0.25.x, v0.26.0

## What Changed from v0.25+

This version contains a change to how kinds are written in CUE for use with the CLI commands (`generate`,`project`). 
Instead of every top-level selector in the loaded CUE environment being treated as a kind, 
the CUE environment should have a singular **manifest** which contains app information and a list of kinds to use for the app.
The grafana-app-sdk will look for the selector `manifest` by default to load this manifest, but this can be changed with the `--selectors` flag.

The CUE structure of a kind has also been changed slightly: fields that were previously in `apiResource` are now in the root structure of the kind, 
and `group` has been removed, as it gets inherited from the manifest (all kinds in a manifest must be in the same group).

A simple version of a manifest looks like:
```cue
manifest: {
	appName: "myapp" // app name is used to determine group
	kinds: [mykind1, mykind2] // list of kind selectors
}
```
If you currently are using a custom group name via `apiResource.groupOverride`, you can still use `groupOverride` in the manifest instead, 
and the value will be propagated to the kind.

You can also look at the [diff for the test kind CUE between v0.26.0 and v0.27.0](https://github.com/grafana/grafana-app-sdk/compare/v0.26.0...v0.27.0#diff-8278a4844404c8db39c406b5b597a4b81c6b96033429f84966d27149a471d787) 
as a reference for these changes.

> [!TIP]
> You can create a new project with `grafana-app-sdk init <modname>` and add a kind with `grafana-app-sdk project kind add <kindname>` to see the new structure of your CUE, with inline comments

## Migration Steps

To migrate your CUE to use a manifest, use the following steps:
1. For each kind, move any field you have in `apiResource` into the root of the kind. For example, `mykind.apiResource.scope` becomes `mykind.scope`
2. Remove the `group` field and `groupOverride` (if applicable) from each kind
3. Create a file in your kinds directory called `manifest.cue` which looks like this:
    ```cue
   package kinds
   
   manifest: {
       appName: "<what-the-group-in-your-kinds-was-previously>"
       kinds: [<selectors for each of our kinds>]
   }
   ```