Every key the theme reads, with a badge saying where it came from. "Why is duxt's
entry still in my navbar" takes one look here instead of a session.

::devtools-panel{tab="config"}
::

## The badges

| Badge      | Meaning                                                          |
| :--------- | :--------------------------------------------------------------- |
| `consumer` | Your `app.config.ts` set it                                      |
| `layer`    | It is the layer's default, untouched                             |
| `build`    | It was computed by the build and is written nowhere              |

## The merge rule

**Arrays are replaced whole, objects merge key by key.** A consumer's `navigation`
is the navigation — the layer's entries are gone. A consumer's `footer.note`
leaves `footer.columns` alone.

That is not what Nuxt does with `app.config` by itself: defu concatenates arrays,
which would give a site its own entries plus the layer's with no way to remove
ours. So the layer ships no lists in `app.config` at all and merges them itself.

## Notes

**Structured values open.** A row holding an object or a list shows a count and a
one-line preview; clicking it prints the whole value, indented. It stays in the
page while folded, so the filter still finds a row by any string inside it —
including a single translation of a label.

`resolvedSources` is the one key nobody writes: it is the manifest the build
computed from `sources`, and every other panel in this tab reads it.