Skip to content

Build the User Package

Help query: "How do I build the user package?" / "How do I rebuild volt-user?" / "Where is user.dll?"

The user package is the volt-user Cargo crate. Building it produces the shared library Volt loads for plugins.

From the Volt git checkout

Run these from the repository root.

Debug build

bash
cargo build -p volt-user

Release build

bash
cargo build -p volt-user --release

Editor + user library together

bash
cargo build -p volt -p volt-user
cargo build -p volt -p volt-user --release

Output artifacts

PlatformUser libraryEditor binary
Windowstarget/<profile>/user.dlltarget/<profile>/volt.exe
Linuxtarget/<profile>/libuser.sotarget/<profile>/volt
macOStarget/<profile>/libuser.dylibtarget/<profile>/volt

<profile> is debug or release.

Verify the build

bash
# Headless one-frame smoke test
cargo run -p volt -- --shell-hidden

# Print registered packages / subsystem summary
cargo run -p volt -- --bootstrap-demo

# Tests and lints
cargo xtask test
cargo xtask clippy

Interactive launch:

bash
cargo run -p volt

From a release User Source Tree

Shipped installs can include a user/ tree beside the binary. Rebuild there, not in an unrelated git checkout:

bash
cd /path/to/install/user
cargo build --release -p volt-user

Or use the in-editor command workspace.compile. It prefills cargo build --release -p volt-user, stages the artifact under user/target/<profile>/volt-user-hot/, and hot-reloads into the running process (important on Windows, where mapped DLLs cannot be overwritten in place).

Details: Hot reload.

Point Volt at a specific library

Override the loaded library with:

bash
# Windows example
set VOLT_USER_LIBRARY=C:\path\to\user.dll

Use the platform library filename (user.dll, libuser.so, or libuser.dylib).

When do I need to rebuild?

ChangeRebuild volt-user?
New / edited .rs plugin moduleYes
Register package in lib.rsYes
Commands, hooks, Rust keybindingsYes
Evaluator / autocomplete wiringYes
user/config/*.yamlNo (hot reload)
user/themes/*.tomlNo (theme watcher)

Developer command cheat sheet

CommandPurpose
cargo build -p volt-userBuild user library (debug)
cargo build -p volt-user --releaseBuild user library (release)
cargo build -p voltBuild editor binary
workspace.compileRebuild + hot-reload shipped user tree
cargo xtask fmtFormat
cargo xtask checkcargo check
cargo xtask clippyClippy (warnings denied)
cargo xtask testWorkspace tests
cargo xtask ciFull CI

Lint policy

Workspace lints forbid unsafe_code and deny dbg!, todo!, and unwrap(). Run cargo xtask clippy before submitting changes.

Volt — modal editor platform · docs optimized for in-editor help search