Skip to content

resonon.toml

The project manifest, at the project root. resonon init / resonon new create it:

[package]
name = "my-project"
version = "0.1.0"
authors = ["Your Name <email>"]
resonon = "0.10.0"
[dependencies]
drums = { source = "gh:resonon/drum-kits", version = "v1.0" }
synths = { source = "gh:user/synths" }
FieldRequiredDescription
nameYesPackage name.
versionNoPackage version. Informational.
authorsNoList of authors. Informational.
resononNoresonon version the project is pinned to.

resonon pins the project to a version, at major.minor precision; patch releases are interchangeable. The default version runs unless the project needs a different minor; then the newest installed patch of that minor runs. A pinned version that is not installed is not downloaded.

Every command that works on a project checks the pin first — running a piece, the REPL, build, install, update, remove, collect, kits, pkg, and each evaluation in a live server:

The pin, against the running versionResult
The same minorRuns.
A newer minorRefused.
An older minorRuns, with a warning.

The message says what to do: install the pinned version, or, if it is installed, run from inside the project so the launcher picks it.

To upgrade a project, change resonon to the new version.

Each entry maps a package name to its source. The key is the local package name (the directory it installs into).

FieldRequiredDescription
sourceYesPackage source (gh:user/repo).
versionNoGit tag to pin to (e.g. "v1.0").

What the project draws on that has no upstream to fetch it from. An entry has no source.

FieldRequiredDescription
kitsNoKits that came from outside the project and cannot be fetched.

resonon collect writes these entries for you. See Share a Project.

Present only for packages with a native Rust extension. See Ship a Native Extension.

FieldRequiredDescription
crateYesPath to the native Rust crate (relative to the project root).

A key resonon doesn’t read is named, not obeyed and not fatal:

warning: /my-project/resonon.toml has a key that is not a manifest key:
`[package] versoin` — nothing reads this key. Did you mean `version`?

It is reported once; everything else in the file still applies, and the piece still plays. In VSCode the key is underlined where it is written, with a Rename to version quick fix.

A file that cannot be parsed stops every command that reads it, naming the line. resonon install checks this before it fetches anything, and leaves nothing on disk when it fails.