From d6c73468980b119614dcce52d8affc99a9c88287 Mon Sep 17 00:00:00 2001 From: Dom Date: Sat, 4 Apr 2026 23:33:52 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20ne=20pas=20couper=20le=20replay=20au=20d?= =?UTF-8?q?=C3=A9but=20(taskbar=20=3D=20unknown=5Fwindow)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le premier clic (barre de recherche Windows) a un titre "unknown_window" qui déclenchait la coupure de fin de session. Ajout d'un guard : pas de coupure avant 3 actions significatives. Co-Authored-By: Claude Opus 4.6 (1M context) --- agent_v0/server_v1/stream_processor.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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"):