Le halo est reste affiche indefiniment. Depuis la refonte du design, la fenetre ne se ferme plus a l'arret de l'enregistrement mais apres le collage : tout blocage dans cette chaine — transcription qui traine, thread mort, bug en amont — la laisse a l'ecran, et l'utilisateur n'a aucun moyen de s'en debarrasser. La fenetre porte desormais sa propre duree de vie : une minuterie armee dans show() la ferme quoi qu'il arrive, et hide() l'annule au passage normal. Le garde-fou ne depend d'AUCUN code en amont, c'est tout l'interet. La limite doit couvrir le pire cas reel — un enregistrement de duree maximale SUIVI de sa transcription — sinon on remplacerait un halo fige par un halo qui s'evapore pendant que Zonza travaille. validate_config refuse desormais une valeur trop courte (210 s pour 120 s d'enregistrement + 30 s de marge minimale). Prouve en conditions reelles, limite abaissee a 3 s : visible a 1,5 s (pas de fermeture prematuree), fermee a 4 s et 5,5 s. 60 tests passent. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
"""Durée de vie maximale de l'overlay.
|
|
|
|
Bug du 2026-08-21 : le halo est resté figé à l'écran. Depuis la refonte du design,
|
|
la fenêtre ne se ferme plus à l'arrêt de l'enregistrement mais après le collage —
|
|
donc tout blocage dans cette chaîne la laisse affichée indéfiniment.
|
|
|
|
La fenêtre porte désormais sa propre limite : quoi qu'il arrive en amont, elle se
|
|
referme seule. Ce test verrouille la COHÉRENCE de la limite, qui doit couvrir le
|
|
pire cas réel — un enregistrement de durée maximale SUIVI d'une transcription.
|
|
"""
|
|
import pytest
|
|
|
|
from core import CONFIG, duree_vie_overlay_coherente
|
|
|
|
|
|
def test_la_limite_couvre_un_enregistrement_maximal_plus_la_transcription():
|
|
assert duree_vie_overlay_coherente(CONFIG) is True
|
|
|
|
|
|
def test_une_limite_plus_courte_que_l_enregistrement_est_refusee():
|
|
mauvais = dict(CONFIG, duree_max_overlay_s=CONFIG["max_duration_s"] - 1)
|
|
assert duree_vie_overlay_coherente(mauvais) is False
|
|
|
|
|
|
def test_une_limite_sans_marge_pour_transcrire_est_refusee():
|
|
# juste egale a la duree d'enregistrement : la transcription serait coupee
|
|
serre = dict(CONFIG, duree_max_overlay_s=CONFIG["max_duration_s"])
|
|
assert duree_vie_overlay_coherente(serre) is False
|
|
|
|
|
|
def test_validate_config_rejette_une_limite_incoherente():
|
|
from core import validate_config
|
|
mauvais = dict(CONFIG, duree_max_overlay_s=10.0)
|
|
with pytest.raises(ValueError):
|
|
validate_config(mauvais)
|
|
|
|
|
|
def test_la_config_livree_est_coherente():
|
|
from core import validate_config
|
|
validate_config(CONFIG) # ne doit pas lever
|