Nav and .nav.json

Two knobs control the generated nav menu: nav.depth in canary.jsonc, and a .nav.json in each content directory. They do not control which pages exist. Every markdown file still builds to a real URL and is listed in sitemap.xml, whether the nav menu shows it or not.

canary explore nav (or navigation) walks this curated tree. canary explore toolchain is a different tree — every content directory, unbounded by nav depth. See CLI.

nav.depth

How many directory levels the menu recurses. Defaults to 1 (top-level items, with one dropdown of children). A page deeper than this still has a URL; it just isn't a menu entry. 0 or negative means unlimited depth. See canary.jsonc.

.nav.json

Canary auto-creates a self-documenting .nav.json in every content directory that has at least one .md file or a nested subdirectory, at any depth the nav tree actually reaches. Edit that file; don't invent a parallel config.

{
  "allow": null,
  "deny": null,
  "priority": 0,
  "nonav": false
}

Home is always titled "Home" and always first. Everything else sorts by priority, then by title.