Skip to content

Commit fef33de

Browse files
fix: prioritize Open FL Studio guidance when bridge failure is caused by an unopen application
1 parent 5b15067 commit fef33de

2 files changed

Lines changed: 42 additions & 3 deletions

File tree

src/fls_pilot/control_center.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6490,6 +6490,7 @@ def _setup_guidance(
64906490
daemon_process = processes.get("daemon", {})
64916491
daemon_running = _process_running(daemon_process)
64926492
daemon_start_action_shown = False
6493+
fl_app_needs_action = _group_needs_action(groups, "fl_app")
64936494
autostart_state = str(daemon_autostart.get("state") or "")
64946495
if autostart_state in {"started", "starting", "external", "failed"}:
64956496
daemon_status = _daemon_startup_status(
@@ -6503,7 +6504,7 @@ def _setup_guidance(
65036504
daemon_action_path = "/api/process/daemon/start"
65046505
daemon_action_label = "Start daemon"
65056506
daemon_start_action_shown = True
6506-
if daemon_status != "OK":
6507+
if daemon_status != "OK" and not (fl_app_needs_action and daemon_running):
65076508
guidance.append(
65086509
_guidance_item(
65096510
title="Daemon startup",
@@ -6555,7 +6556,7 @@ def _setup_guidance(
65556556
)
65566557
)
65576558

6558-
if _group_needs_action(groups, "fl_app"):
6559+
if fl_app_needs_action:
65596560
guidance.append(
65606561
_guidance_item(
65616562
title="Open FL Studio",
@@ -6570,7 +6571,7 @@ def _setup_guidance(
65706571
)
65716572
)
65726573

6573-
if _group_needs_action(groups, "controller"):
6574+
if _group_needs_action(groups, "controller") and not fl_app_needs_action:
65746575
guidance.append(
65756576
_guidance_item(
65766577
title="Connect FL Studio to the controller",

tests/test_control_center.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,44 @@ def test_setup_guidance_surfaces_mcp_stdio_blocker_without_ok_daemon_card():
466466
assert stdio["action_label"] == "Re-check"
467467

468468

469+
def test_setup_guidance_prioritizes_open_fl_when_bridge_failure_is_derivative():
470+
groups = {
471+
"environment": [],
472+
"fl_app": [
473+
_finding("FL Studio Application", "blocker", "failed").to_dict(),
474+
],
475+
"midi": [],
476+
"controller": [
477+
_finding("FL Studio Controller Script", "blocker", "probe_needed").to_dict(),
478+
],
479+
"daemon": [
480+
_finding("TCP Daemon / Bridge", "blocker", "failed").to_dict(),
481+
],
482+
"mcp_stdio": [
483+
_finding("MCP stdio Transport", "blocker", "failed").to_dict(),
484+
],
485+
"mcp_sse": [],
486+
"mcp_apply": [],
487+
"optional_dependencies": [],
488+
"other": [],
489+
}
490+
491+
guidance = control_center._setup_guidance(
492+
groups=groups,
493+
readiness={"state": "blocked"},
494+
processes={"daemon": {"state": "external"}},
495+
ports={"daemon": {"host": "127.0.0.1", "selected_port": 9787}},
496+
daemon_autostart={"state": "external", "message": "A daemon is already reachable."},
497+
sse_probe={},
498+
)
499+
500+
titles = [item["title"] for item in guidance]
501+
assert titles[0] == "Open FL Studio"
502+
assert "Daemon startup" not in titles
503+
assert "Connect FL Studio to the controller" not in titles
504+
assert "Fix MCP stdio startup" in titles
505+
506+
469507
def test_setup_guidance_prioritizes_midi_manual_action(monkeypatch):
470508
findings = [
471509
_finding("Python Environment"),

0 commit comments

Comments
 (0)