Remove Carla native VSTi bridge entirely

Drop Carla integration across frontend and backend:
- plugins.py: remove /carla-midi, /carla-status, /carla-stop, /open-in-carla,
  /carla-play-notes endpoints and Carla process management
- runtime.py: remove find_carla / _carla_* helpers, detect and capabilities
- app.jsx: remove Carla bridge UI, SonicCarlaMidi routing, shouldRouteCarla
  guards, VST row Carla button and preset fallback
- system.py: remove /carla-path
- Keep audio path unchanged (tracks -> masterBus -> output -> analyser),
  directOut only for offline render

Build frontend, tests pass (124 passed).
This commit is contained in:
2026-08-22 18:39:49 +07:00
parent 14265515aa
commit 5ad2c681e7
16 changed files with 163 additions and 1295 deletions
+1 -24
View File
@@ -190,7 +190,7 @@ class TestPluginAPI:
assert g.json()["plugin_dirs"] == [d1]
class TestMidiRenderVSTi:
"""Preview/export MIDI notes với âm VSTi — feature Carla bridge → pedalboard."""
"""Preview/export MIDI notes với âm VSTi — feature preset bridge → pedalboard."""
def test_midi_render_requires_auth(self):
client.cookies.clear() # TestClient giữ cookie login từ test trước
@@ -216,29 +216,6 @@ class TestMidiRenderVSTi:
assert resp.status_code == 404
assert "VSTi" in resp.json()["detail"]
def test_carla_play_notes_requires_auth(self):
client.cookies.clear() # TestClient giữ cookie login từ test trước
resp = client.post("/api/v1/plugins/carla-play-notes",
json={"notes": [{"pitch": 60}], "bpm": 120})
assert resp.status_code == 401
def test_carla_play_notes_no_notes(self):
token = get_admin_token()
if not token:
pytest.skip("Cannot get admin token")
resp = client.post("/api/v1/plugins/carla-play-notes", headers={"Authorization": f"Bearer {token}"},
json={"notes": [], "bpm": 120})
assert resp.status_code == 400
def test_carla_play_notes_no_carla(self):
# Máy test không có Carla local → 409 hướng dẫn định vị/mở Carla.
token = get_admin_token()
if not token:
pytest.skip("Cannot get admin token")
resp = client.post("/api/v1/plugins/carla-play-notes", headers={"Authorization": f"Bearer {token}"},
json={"notes": [{"pitch": 60, "start_beat": 0, "duration_beats": 1}], "bpm": 120})
assert resp.status_code == 409
# --- fx-gui embed (PLAN_MASTERBUS_VST_GUI_EMBED.md Phase 1) --------------
def test_fx_gui_open_embed_returns_embed_url(self):
token = get_admin_token()