Problem
VST3 scan cache is partially unused. Frontend scanner/cache services are tested, but app connection code can bypass them, and the native scanner cache is process-only while #1524 expects disk/native cache behavior.
Root Cause
Scanning was implemented in multiple layers during the bridge/native transition without one authoritative cache path.
Solution
- Route UI scan flows through the cache service consistently.
- Add native disk cache or document/defer the native SQLite requirement.
- Add invalidation rules for plugin install/remove/rescan.
- Add tests for cached load, forced rescan, and stale plugin removal.
Verification
- Run targeted VST3 scanner/cache tests.
- Add a native scan cache test that survives process restart or clearly documents in-memory behavior.
- Verify UI list_cached/rescan behavior with mock plugin paths.
Files to Touch
src/hooks/useVST3Connection.ts
src/services/vst3bridge/VST3PluginScanner.ts
src/services/vst3bridge/VST3ScanCache.ts
crates/ace-plugin-host/src/scanner.rs
src-tauri/src/commands/plugin.rs
Problem
VST3 scan cache is partially unused. Frontend scanner/cache services are tested, but app connection code can bypass them, and the native scanner cache is process-only while #1524 expects disk/native cache behavior.
Root Cause
Scanning was implemented in multiple layers during the bridge/native transition without one authoritative cache path.
Solution
Verification
Files to Touch
src/hooks/useVST3Connection.tssrc/services/vst3bridge/VST3PluginScanner.tssrc/services/vst3bridge/VST3ScanCache.tscrates/ace-plugin-host/src/scanner.rssrc-tauri/src/commands/plugin.rs