fix(ui): plus d'abort à l'arrêt, et temps restant de l'accès (v0.8.7)
prepare_quit() attend les threads en cours avant toute destruction, mais sa liste en oubliait deux : le sondage d'état ajouté en 0.8.6 — ma régression — et le thread de validation de la fenêtre de saisie, parenté à cette fenêtre depuis la v0.8.2 et jamais attendu. Fermer la fenêtre de code pendant qu'une requête est en vol suffisait à avorter le process, ce qui arrive dès que le serveur tarde. Reproduit avec un serveur qui accepte sans jamais répondre, puis vérifié corrigé sur les deux chemins. Le sondage est ramené à 4 s : l'arrêt l'attend désormais, et dix secondes y seraient une interface figée. Son échec ne coûte rien, contrairement à une validation ratée qui gâche un code déjà saisi. Ajoute le temps restant sur la ligne Accès distant, et un repli pour les serveurs sans GET /api/session : sur un 404, le client observe si le trafic atteint le réseau distant plutôt que de réclamer un code déjà validé. Un 403 reste une réponse qui fait autorité. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,18 @@ Ce projet suit le [Versionnage Sémantique](https://semver.org/lang/fr/).
|
||||
|
||||
---
|
||||
|
||||
## [0.8.7] — 2026-09-07
|
||||
|
||||
### Corrigé
|
||||
- **L'application avortait à l'arrêt (`QThread: Destroyed while thread is still running`, code 134).** `prepare_quit()` attend la fin des threads en cours avant de laisser détruire quoi que ce soit, mais sa liste en oubliait deux. Le premier est le sondage d'état ajouté en 0.8.6 — une régression introduite par cette version. Le second est le thread de validation de la fenêtre de saisie, parenté à cette fenêtre depuis la v0.8.2 et jamais attendu : il suffisait de fermer la fenêtre de code pendant qu'une requête était en vol, ce qui arrive dès que le serveur tarde à répondre. Les deux sont désormais attendus, le second via `AccessCodeDialog.wait_for_worker()`. Reproduit puis vérifié avec un serveur qui accepte les connexions sans jamais répondre.
|
||||
- Le sondage d'état est borné à **4 secondes** au lieu des 10 de la validation d'un code. Sans cela, le correctif ci-dessus transformait le plantage en interface figée le temps du délai d'expiration : l'arrêt attend ce thread. Un sondage qui échoue ne coûte rien — le bouton reste disponible — là où une validation ratée gâche un code déjà saisi.
|
||||
|
||||
### Ajouté
|
||||
- **Temps restant sur la ligne *Accès distant*** du panneau Détails : « Ouvert ✓ jusqu'à 08/09 à 09:56 (reste 7 h 12 min) ». La date n'est rappelée que si l'échéance tombe un autre jour — la durée est réglable jusqu'à 168 h côté serveur. Le décompte est arrondi à la minute et non tronqué, sans quoi une fenêtre de 8 h fraîchement ouverte s'affichait « 7 h 59 min ». Rafraîchi au rythme du sondage de statut existant, sans minuteur supplémentaire.
|
||||
- **Repli pour les serveurs antérieurs à la v0.3.0**, qui n'exposent pas `GET /api/session`. Face à un 404 — et à un 404 seulement — le client observe si le trafic atteint réellement le réseau distant, en sondant le serveur DNS du split-DNS déjà configuré. La quarantaine jette le trafic traversant : toute réponse de cet hôte prouve qu'elle est levée, un refus de connexion compris (le paquet a atteint la machine). L'accès est alors affiché ouvert, mais sans échéance : la sonde constate, elle ne peut pas dater. Un 403 reste une réponse qui fait autorité et n'est jamais contredite par la sonde ; sans `split_dns_server` configuré, aucun repli.
|
||||
|
||||
---
|
||||
|
||||
## [0.8.6] — 2026-09-07
|
||||
|
||||
### Corrigé
|
||||
|
||||
Reference in New Issue
Block a user