VS Code support for INAV flight-controller CLI dumps (dump / diff output).
More than notepad, less than a full configurator — meant for reviewing
configs offline, sanity-checking changes before flashing, and diffing across
firmware versions.

What it does
- Syntax + validation on
.inavfiles and theINAV_*_cli_*.txtdumps the INAV Configurator exports. Red squiggles for unknown settings, out-of-range numerics, bad enums, invalid booleans, typo'd commands. - Hover docs on settings, commands, and individual command arguments.
Hover on the
1inaux 0 1 2 1800 2100and you get "mode_id → ANGLE". - Autocomplete for setting names, enum values, commands, and command-argument values (mode IDs, OSD element indices, feature names).
- Signature help while typing — the current parameter gets underlined with its description.
- Preview panel (run INAV: Open Preview to the Side) rendering:
- OSD layout (click a pill to jump to its
osd_layoutline) - Aux mode bars per channel, with human-readable mode names
- Motor mixer top-down schematic from
mmix, CW/CCW color-coded - Settings list with diff-from-defaults highlighting
- Validation diagnostics with click-to-jump
- OSD layout (click a pill to jump to its
- Outline + code folding grouped by the
# sectioncomments INAV emits. - Multi-version schemas. Ships with INAV 8.0 / 9.0 / master bundled.
Version is auto-detected from the
# INAV/...header,# inav-cli: schema=9.0directive, filename, or aninav-cli.defaultSchemasetting. Status-bar item shows the active version; click to override per-file.
Install
From the VS Code Marketplace:
code --install-extension corentinchary.inav-cli
Or grab the .vsix from the
releases page and:
code --install-extension inav-cli-<version>.vsix
Build from source
npm install
npm run compile # produces out/
npm test # parser / schema / resolver / params tests
npm run package # builds a .vsix (needs `npm i -g @vscode/vsce`)
Press F5 in VS Code to launch an Extension Development Host with
examples/sample.inav already open.
Adding a new INAV version
Clone iNavFlight/inav somewhere (default ~/dev/inav) and:
git -C ~/dev/inav fetch --depth 1 origin tag 10.0.0
scripts/add-version.sh 10.0.0 10.0
That writes schemas/10.0/{settings.yaml, osdItems.json, commands.json, boxIds.json, features.json} — no code change required; the registry picks
up new directories at activation. See
CLAUDE.md for the authoring notes.
License
MIT.