Update SYNC.md — reflects out-of-process architecture, current state, test instructions
Browse files
SYNC.md
CHANGED
|
@@ -24,12 +24,33 @@ cd build && cmake --build . --config Release 2>&1 | tail -30
|
|
| 24 |
- Write code
|
| 25 |
- Add commentary
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
## Status
|
| 28 |
-
**Last push:** 2026-05-16 —
|
| 29 |
-
**
|
| 30 |
-
**
|
| 31 |
-
|
| 32 |
-
2. Click "Select Plugin" → Pro-Q 4
|
| 33 |
-
3. Click "Open GUI" → should open Pro-Q 4 in floating window
|
| 34 |
-
4. Try Kickstart 2 → should NOT crash Ableton (helper crashes instead, shows reload button)
|
| 35 |
-
5. curl -s http://localhost:16620/health
|
|
|
|
| 24 |
- Write code
|
| 25 |
- Add commentary
|
| 26 |
|
| 27 |
+
## Architecture (Current)
|
| 28 |
+
**Out-of-process hosting.** Two binaries:
|
| 29 |
+
1. `PluginBridge.vst3` — thin shell (audio bridge + MCP server), loaded in Ableton
|
| 30 |
+
2. `PluginBridgeHelper` — standalone exe bundled inside .vst3, hosts the actual plugin
|
| 31 |
+
|
| 32 |
+
If a plugin crashes → only Helper dies → Ableton survives → UI shows "Reload" button.
|
| 33 |
+
|
| 34 |
+
## What Was Ditched
|
| 35 |
+
- ❌ In-process plugin hosting (crashed Ableton with some plugins)
|
| 36 |
+
- ❌ Plugin scanning via `PluginDirectoryScanner` (triggered NSAlert crashes)
|
| 37 |
+
- ❌ `addDefaultFormats()` (deleted in JUCE 8)
|
| 38 |
+
- ❌ `juce::Thread::setCurrentThreadPriority()` (removed in JUCE 8)
|
| 39 |
+
- ❌ `MSG_NOSIGNAL` (doesn't exist on macOS)
|
| 40 |
+
- ❌ Native title bar close button on Helper window (macOS won't deliver clicks to accessory process)
|
| 41 |
+
- ❌ `activateIgnoringOtherApps` (steals focus from Ableton)
|
| 42 |
+
|
| 43 |
+
## What's New
|
| 44 |
+
- ✅ Out-of-process via shared memory + semaphores + Unix socket
|
| 45 |
+
- ✅ Crash-safe — plugins that abort() only kill the helper
|
| 46 |
+
- ✅ Plugin GUI as floating always-on-top window (no focus steal)
|
| 47 |
+
- ✅ Toggle GUI via button in PluginBridge panel (Open GUI / Close GUI)
|
| 48 |
+
- ✅ Plugin list from filesystem (no binary loading until user selects)
|
| 49 |
+
- ✅ Native pthread priority for audio thread
|
| 50 |
+
- ✅ `NSApplicationActivationPolicyAccessory` for helper (no Dock, no focus steal)
|
| 51 |
+
|
| 52 |
## Status
|
| 53 |
+
**Last push:** 2026-05-16 — GUI focus-steal fix (Accessory policy + orderFrontRegardless)
|
| 54 |
+
**Build:** ✅ Passes
|
| 55 |
+
**Test:** Plugin loads, audio routes, crash-safe confirmed, GUI toggle works
|
| 56 |
+
**Remaining issue:** Testing GUI float behavior (should stay on top without switching apps)
|
|
|
|
|
|
|
|
|
|
|
|