Symptom
Terminal shows a successful watch rebuild, but menus, pages, or styles do not change until a full refresh — or never change at all.
Why this happens
Plugin UIs are loaded dynamically from installed-plugins, not like a normal Vite app HMR graph. Watch updates available-plugins (and refreshes the installed copy when the module is already installed). The browser may still cache the previous bundle.
- Watch without Install → only available-plugins updates; shell still serves installed-plugins
- Already installed → watch should refresh the installed copy; still hard-refresh the browser
- pluginVersion / version folder changed → Install again so installed-plugins matches the new version
- Base frontend / backend containers not running → nothing to serve the new files
Fix
- Run quan-erp watch <plugin> from the project root (correct plugin folder name under plugins/)
- Confirm timestamps under base/available-plugins/<name>/<version>/frontend/ update after each save
- Confirm base/backend/installed-plugins/<name>/frontend/ also updates (or Install from Modules UI)
- Hard-refresh the browser (or clear site cache); open the plugin entry in Network and verify it is not a cached 304 of old code
- Restart base frontend if the shell itself looks stale after dependency or config changes
- Prefer npm @quan-erp/cli — avoid a stale local ./erp binary