Hot Reload the User Library
Help query: "How do I hot reload plugins?" / "What is workspace.compile?" / "How do I reload user.dll?"
In a release install
- Open the released Volt binary (User Source Tree is the default workspace beside the executable).
- Run
workspace.compile(from the command palette /F3, or your custom chord). - The prompt prefills
cargo build --release -p volt-userfor the shipped User Source Tree. - On success Volt:
- Streams build output into the
*compile <workspace>*popup - Copies the artifact to a unique path under
target/<profile>/volt-user-hot/ - Loads that copy into the running process
- Shows a success notification
- Streams build output into the
Staging avoids overwriting a mapped library. That matters especially on Windows, where a loaded user.dll cannot be replaced in place.
Use workspace.recompile (S-F5) to re-run the last build command, or workspace.reload-user-library to reload after an external rebuild.
From source (dev loop)
During development you usually rebuild and restart, or rebuild and relaunch:
cargo build -p volt-user
cargo run -p voltHeadless checks:
cargo run -p volt -- --shell-hidden
cargo run -p volt -- --bootstrap-demoOverride library path
# Windows
set VOLT_USER_LIBRARY=P:\volt\target\debug\user.dllPoint at the platform-specific artifact name.
What hot-reloads without rebuilding
| Asset | Mechanism |
|---|---|
user/config/*.yaml | Config watcher / config::load() |
user/themes/*.toml | Theme watcher |
| Rust package metadata | Requires rebuild (+ hot swap via workspace.compile in release) |
ABI notes
The Plugin SDK is the stable boundary. Hot-reloaded cdylib copies may fall back to host-side workers for some capabilities until non-prefix ABI seams exist. Prefer rebuilding against a matching SDK when you change host APIs.
See ADR 0008 in the Volt repository: User Source Tree and Plugin SDK boundary.