Testing and Debugging Plugins
Validate plugin behavior, catch hook errors early, and keep unload paths clean.
Test plugins in small steps.
That is the fastest way to find hook mistakes, permission issues, and cleanup bugs.
Recommended testing order
Verify manifest loading
Make sure the plugin appears and loads without immediate errors.
Verify one visible action
Show a toast or add one menu item first.
Verify core behavior
Test the score, audio, or project action your plugin is meant to perform.
Verify unload cleanup
Disable the plugin and confirm threads, streams, and UI state are cleaned up.
What to watch for
Hook name mismatches
If a function name in plugin.json does not exist in __init__.py, startup will fail.
Main-thread blocking
Long loops and heavy work can freeze the UI.
Move them into daemon threads.
Unreleased resources
Open files, background threads, and hardware handles should be released on unload.
Incomplete state cleanup
Even when the app restores theme or language automatically, your plugin still owns any custom workers or external connections.
Debugging strategy
add one capability at a time
test unload as often as startup
If your plugin throws a critical exception, the app disables the plugin and stays stable.
Use that safety net, but do not rely on it instead of proper testing.
A plugin that loads correctly is not finished. It must also unload cleanly.