diff --git a/agent_v0/server_v1/stream_processor.py b/agent_v0/server_v1/stream_processor.py index 714e5a223..462e8d2a2 100644 --- a/agent_v0/server_v1/stream_processor.py +++ b/agent_v0/server_v1/stream_processor.py @@ -365,16 +365,19 @@ def _extract_screen_resolution(events: list) -> tuple: def _should_cut_after_event( event_data: dict, saw_save_combo: bool = False, + actions_count: int = 0, ) -> bool: """Retourne True si on doit couper le replay après cet événement. Coupe quand : - Alt+F4 (fermeture par raccourci) - - Clic dans le systray (fenêtres "unknown_window", "dépassement de capacité", - "Fenêtre de dépassement") — c'est le "C'est terminé" de Léa + - Clic dans le systray APRÈS des actions significatives (pas au début) - Après un Ctrl+S/Ctrl+Shift+S suivi d'un clic dans une fenêtre non-applicative - (terminal, systray, agent python, etc.) """ + # Ne pas couper au tout début (les premiers clics sont souvent + # sur la taskbar/recherche pour ouvrir une application) + if actions_count < 3: + return False evt_type = event_data.get("type", "") # Alt+F4 @@ -1070,7 +1073,7 @@ def build_replay_from_raw_events( # Vérifier la coupure AVANT d'ajouter l'événement. # Pour les clics post-sauvegarde sur des fenêtres non-applicatives, # on ne veut PAS inclure le clic qui déclenche la coupure. - if _should_cut_after_event(event_data, saw_save_combo=saw_save_combo): + if _should_cut_after_event(event_data, saw_save_combo=saw_save_combo, actions_count=len(actionable_events)): # Alt+F4 est une action applicative → l'inclure is_alt_f4 = False if evt_type in ("key_combo", "key_press"):