refactor(vwb): refonte complète capture écran — stable définitivement
Some checks failed
security-audit / Bandit (scan statique) (push) Successful in 13s
security-audit / pip-audit (CVE dépendances) (push) Successful in 11s
security-audit / Scan secrets (grep) (push) Successful in 8s
tests / Lint (ruff + black) (push) Successful in 13s
tests / Tests unitaires (sans GPU) (push) Failing after 15s
tests / Tests sécurité (critique) (push) Has been skipped

FullscreenSelector réécrit :
- Overlay unique positionné via getBoundingClientRect()
- Recalcul auto au resize
- Coordonnées souris relatives à l'image
- Plus de décalage bboxes/sélection

Capture backend :
- mss.monitors[0] (écran composite) au lieu de pyautogui.screenshot()
- Capture la VM en plein écran correctement

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-21 09:03:19 +02:00
parent 5da4581e76
commit 14a9442343
2 changed files with 185 additions and 99 deletions

View File

@@ -52,10 +52,24 @@ def capture_screen():
}
"""
try:
import pyautogui
# Utiliser mss pour capturer TOUS les moniteurs (ecran compose).
# pyautogui.screenshot() capture uniquement le premier moniteur,
# ce qui rate la VM en plein ecran sur un second ecran ou via QEMU/spice.
# mss.monitors[0] = ecran compose (tous les moniteurs), ce qui capture
# exactement ce que l'utilisateur voit quel que soit le setup.
try:
import mss
with mss.mss() as sct:
# monitors[0] = ecran virtuel englobant tous les moniteurs
monitor = sct.monitors[0]
sct_img = sct.grab(monitor)
# Convertir mss ScreenShot (BGRA) en PIL Image RGB
screenshot = Image.frombytes('RGB', sct_img.size, sct_img.rgb)
except ImportError:
# Fallback pyautogui si mss n'est pas installe
import pyautogui
screenshot = pyautogui.screenshot()
# Capture écran
screenshot = pyautogui.screenshot()
width, height = screenshot.size
# Convertir en base64