Summary
The PyQt6 desktop shell has a system tray icon. We need to connect this to the FastAPI backend or Celery worker so that the user receives native OS notifications when a fine-tuning job finishes or fails.
Scope
- What changed: desktop system tray logic, backend polling/webhook
- What did not change: UI layout
- Related issue: N/A
Product Impact
Users can leave TuneOS training models in the background and will be reliably notified when their training tasks complete or encounter errors.
Technical Notes
We can use QSystemTrayIcon.showMessage() triggered by a background QThread polling the FastAPI /api/jobs endpoint, or implement WebSockets.
Validation
Summary
The PyQt6 desktop shell has a system tray icon. We need to connect this to the FastAPI backend or Celery worker so that the user receives native OS notifications when a fine-tuning job finishes or fails.
Scope
Product Impact
Users can leave TuneOS training models in the background and will be reliably notified when their training tasks complete or encounter errors.
Technical Notes
We can use QSystemTrayIcon.showMessage() triggered by a background QThread polling the FastAPI
/api/jobsendpoint, or implement WebSockets.Validation