fix: ne pas couper le replay au début (taskbar = unknown_window)

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) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-04 23:33:52 +02:00
parent 90ee8ca8f4
commit d6c7346898

View File

@@ -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"):