zonza/tests
Ralph Mayola 68e1f336c8 Le peripherique audio ne peut plus geler l'interface
Le halo s'est fige une seconde fois, bloque sur « Je vous ecoute… », forme d'onde
plate, process a 0 % CPU. Une autre application (Loom) tenait le micro : le
stream.stop() de PortAudio s'est bloque. Or toggle() s'executait sur le thread
principal Cocoa — toute l'interface a gele avec lui.

Et le garde-fou pose le matin meme etait inoperant PAR CONSTRUCTION : c'est un
NSTimer, il vit sur la boucle d'evenements que le blocage venait justement d'arreter.
Un garde-fou qui depend de ce qu'il est cense sauver ne sauve rien.

Desormais, le chemin appele depuis le thread principal ne touche PLUS JAMAIS au
peripherique : ouverture et fermeture du flux partent en tache de fond, le thread
principal ne fait que changer l'etat et rafraichir l'overlay. Deux tests verrouillent
la regle avec un recorder qui leve si on l'appelle depuis le mauvais endroit.

S'ajoute une garde COURTE (20 s) armee des l'arret : passe ce point il ne reste que
la transcription, quelques secondes ; laisser 210 s de halo, c'est « fige » pour
l'utilisateur meme si le code finit par se rattraper.

Prouve en reproduisant la panne — un stop() qui ne rend jamais la main : l'interface
continue de battre (6, 12, 24 battements) et le halo se ferme seul. Avant, le
compteur serait reste fige.

69 tests passent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 12:14:47 +02:00
..
test_attente.py Attend le relachement des touches avant de coller 2026-08-21 01:42:44 +02:00
test_audio_level.py Zonza : dictée vocale locale macOS (MLX-Whisper + cercle pulsant) 2026-06-12 23:57:59 +02:00
test_core.py L'overlay devient une barre de dictee au lieu d'un cercle 2026-08-21 00:46:56 +02:00
test_garde_overlay.py L'overlay ne peut plus rester fige a l'ecran 2026-08-21 01:48:07 +02:00
test_garde_transcription.py Le peripherique audio ne peut plus geler l'interface 2026-08-21 12:14:47 +02:00
test_geometrie.py Overlay reduit d'un quart, et sa geometrie devient proportionnelle 2026-08-21 00:49:38 +02:00
test_single_instance.py Zonza ne se lance plus qu'une fois a la fois 2026-08-21 00:25:05 +02:00
test_statut_bulle.py Le peripherique audio ne peut plus geler l'interface 2026-08-21 12:14:47 +02:00
test_vocabulaire.py Whisper recoit le vocabulaire metier en amorce 2026-08-21 00:28:52 +02:00
test_waveform.py L'overlay devient une barre de dictee au lieu d'un cercle 2026-08-21 00:46:56 +02:00