fix(ui): le bouton de saisie du code reparaît à l'expiration de l'accès (v0.8.5)
L'autorisation obtenue auprès du serveur a un terme, mais le client n'en tenait aucun compte : `access_until`, pourtant renvoyé à chaque validation, ne servait qu'à composer une ligne de journal. L'accès était marqué ouvert jusqu'à la chute du tunnel, si bien qu'une fois le délai écoulé l'interface affichait « Ouvert ✓ » et masquait le bouton comme l'entrée de systray — laissant l'utilisateur devant un réseau muet, sans issue visible, dans la situation même que ce bouton existe pour couvrir depuis la v0.8.2. L'échéance remonte désormais jusqu'à la fenêtre principale, qui la relit sans jamais la calculer : sa durée est un réglage serveur, que le poste n'a pas à deviner. Un serveur qui n'en annonce pas laisse l'accès ouvert jusqu'à la déconnexion, plutôt que de se voir imposer un terme inventé ici. Corrige au passage l'heure de fin, annoncée en UTC mais présentée comme locale — deux heures d'avance en été. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,20 @@ Ce projet suit le [Versionnage Sémantique](https://semver.org/lang/fr/).
|
||||
|
||||
---
|
||||
|
||||
## [0.8.5] — 2026-09-07
|
||||
|
||||
### Corrigé
|
||||
- **Le bouton « Saisir le code d'accès » restait masqué une fois l'autorisation expirée.** L'application marquait l'accès comme ouvert à la validation du code et ne revenait sur ce constat qu'à la chute du tunnel : rien ne consommait l'échéance que le serveur renvoie pourtant dans sa réponse, elle ne servait qu'à composer une phrase du journal. Passé le délai — un réglage serveur, invisible du poste — le pair retournait en quarantaine sans que l'interface en sache rien : elle affichait toujours « Ouvert ✓ », masquait le bouton et l'entrée de systray, et laissait l'utilisateur devant un réseau muet sans moyen visible de ressaisir un code. C'est exactement la situation que ce bouton existe pour éviter depuis la v0.8.2, et le seul cas qui lui échappait encore. Le client relit désormais l'échéance annoncée par le serveur et réévalue l'affichage à chaque rafraîchissement de statut, soit dans les trois secondes suivant l'expiration.
|
||||
- **L'heure de fin d'accès était annoncée en UTC mais présentée comme locale** : « ouvert jusqu'à 20:30 » pour une autorisation courant en réalité jusqu'à 22:30 heure de Paris, deux heures d'avance en été. L'horodatage est maintenant converti dans le fuseau du poste.
|
||||
|
||||
### Modifié
|
||||
- Nouvel état **« Autorisation expirée (code requis) »** sur la ligne *Accès distant*, distinct de « Quarantaine (code requis) » : l'utilisateur voit que son code a bien été accepté et que le délai a couru, plutôt que de croire que sa saisie n'a jamais abouti.
|
||||
- Quand l'accès est ouvert, la ligne indique l'heure de fin (« Ouvert ✓ jusqu'à 22:30 »), l'échéance n'étant plus une information jetée après affichage.
|
||||
- `vpn_session.authenticate()` retourne un `AuthResult(ok, message, access_until)` au lieu d'un couple `(bool, str)`, et la fenêtre de saisie passe de `TaskWorker` à `ValueWorker` : le premier n'achemine que `(bool, str, str)`, une signature partagée par tous les autres appels de l'application et qu'il aurait fallu élargir pour tout le monde.
|
||||
- Un serveur qui n'annonce aucune échéance laisse l'autorisation valable jusqu'à la déconnexion : le client ne lui en invente pas une, ce qui fermerait un accès encore ouvert. La durée reste décidée par le serveur, seule autorité en la matière.
|
||||
|
||||
---
|
||||
|
||||
## [0.8.4] — 2026-09-06
|
||||
|
||||
### Corrigé
|
||||
|
||||
Reference in New Issue
Block a user