Add profile system for automatic target activation
Profiles monitor running processes and foreground windows to automatically start/stop targets when conditions are met. Includes profile engine, platform detector (WMI), REST API, process browser endpoint, and calibration persistence fix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ from wled_controller.api.schemas.system import (
|
||||
DisplayInfo,
|
||||
DisplayListResponse,
|
||||
HealthResponse,
|
||||
ProcessListResponse,
|
||||
VersionResponse,
|
||||
)
|
||||
from wled_controller.core.capture.screen_capture import get_available_displays
|
||||
@@ -91,3 +92,24 @@ async def get_displays(_: AuthRequired):
|
||||
status_code=500,
|
||||
detail=f"Failed to retrieve display information: {str(e)}"
|
||||
)
|
||||
|
||||
|
||||
@router.get("/api/v1/system/processes", response_model=ProcessListResponse, tags=["Config"])
|
||||
async def get_running_processes(_: AuthRequired):
|
||||
"""Get list of currently running process names.
|
||||
|
||||
Returns a sorted list of unique process names for use in profile conditions.
|
||||
"""
|
||||
from wled_controller.core.profiles.platform_detector import PlatformDetector
|
||||
|
||||
try:
|
||||
detector = PlatformDetector()
|
||||
processes = await detector.get_running_processes()
|
||||
sorted_procs = sorted(processes)
|
||||
return ProcessListResponse(processes=sorted_procs, count=len(sorted_procs))
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to get processes: {e}")
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail=f"Failed to retrieve process list: {str(e)}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user