34d43f5018
- vst_engine: list_scan_all cache co TTL 300s (FX_SCAN_TTL) + chi cache khi find_fx_bridge_exe() co exe (thieu bridge -> tra [] NHUNG khong cache de lan sau thu lai) — truoc day ket [] vi mui gio, MASTERING PANEL rong. - vst_engine: them invalidate_fx_scan() clear cache scan VST. - plugins.py: POST /scan (Plugin Manager Scan) goi _invalidate_fx_scan_cache() -> MASTERING PANEL lan mo ke tiep quet lai voi dirs moi; response them fx_cache_invalidated. - app.jsx: MasteringModal/FXRackModal load listFx() lai moi lan mo modal (deps [isOpen]/[track.id]) + loading state; VstPluginPicker nhan prop loading -> hien 'Dang quet VST FX...' thay vi 'Khong co VST FX'. - precompiled rebuild (LF) + index.html ?v=202608220330; dist sync. - tests: +4 test cache TTL/invalidate/no-bridge (TestFxScanCache).