GUI (PySide6)

A tabbed control surface wraps every feature:

python -m automation_file ui
# or from the repo root during development:
python main_ui.py
from automation_file import launch_ui

launch_ui()

Tabs: Home, Local, Transfer, Progress, JSON actions, Triggers, Scheduler, Servers. A persistent log panel below the tabs streams every call’s result or error. Background work runs on QThreadPool via ActionWorker so the UI stays responsive.

The GUI shares the same singletons as the rest of the library — registering a sink, custom command, or trigger from Python takes effect immediately in the running window.