Côté client Agent V1 : - helpers _get_monitors_geometry() / _get_active_monitor_index() via screeninfo (fallback gracieux [] / None si screeninfo absent) - _enrich_with_monitor_info() ajouté aux payloads dict de capture_dual, capture_active_window, et heartbeat_event poussé par main.py - screeninfo>=0.8 ajouté aux requirements (source + deploy Windows) - Deploy capturer.py reçoit l'enrichissement de manière additive (pas de copie verbatim qui aurait introduit BLUR_SENSITIVE absent côté deploy) Côté serveur : - import resolve_target_monitor depuis monitor_router (créé en QW1.1) - /replay/next : enrichissement action.monitor_resolution avant envoi au client (idx, offset_x/y, w, h, source de la décision) - live_session_manager.add_event : propagation monitor_index + monitors_geometry depuis window_capture ET depuis le payload event brut (cas heartbeat enrichi sans window/window_title) Cascade de résolution (cf monitor_router.py) : 1. action.monitor_index (hérité de la session source) 2. session.last_focused_monitor (focus actif vu en dernier heartbeat) 3. composite_fallback (offset 0,0) — backward compat strict Backward 100% : si geometry vide, fallback composite identique au comportement actuel mss.monitors[0]. Tests : baseline 89/89 préservée, monitor_router 4/4 OK (total 93/93). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 lines
776 B
Plaintext
18 lines
776 B
Plaintext
# agent_v1/requirements.txt
|
|
mss>=9.0.1 # Capture d'écran haute performance
|
|
pynput>=1.7.7 # Clavier/Souris Cross-plateforme
|
|
Pillow>=10.0.0 # Crops et processing image
|
|
requests>=2.31.0 # Streaming réseau
|
|
python-socketio[client]>=5.10,<6.0 # Bus feedback Léa 'lea:*' (compat Flask-SocketIO 5.3.x serveur)
|
|
psutil>=5.9.0 # Monitoring CPU/RAM
|
|
screeninfo>=0.8 # QW1 — détection des monitors physiques + offsets
|
|
pystray>=0.19.5 # Icône Tray UI
|
|
plyer>=2.1.0 # Notifications toast natives (remplace PyQt5)
|
|
|
|
# Windows spécifique
|
|
pywin32>=306 ; sys_platform == 'win32'
|
|
|
|
# macOS spécifique
|
|
pyobjc-framework-Cocoa>=10.0 ; sys_platform == 'darwin'
|
|
pyobjc-framework-Quartz>=10.0 ; sys_platform == 'darwin'
|