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.