Fini le petit (1) esseulé : Hermes fait désormais clignoter l'onglet, la barre des tâches et vos notifications

Il est quatre heures de l’après-midi. Vous avez laissé Hermes dans un onglet pour traiter une tâche, puis vous êtes passé à une autre fenêtre pour écrire du code. À un moment, il s’est arrêté et attendait que vous approuviez une commande rm -rf, et le titre de l’onglet est discrètement passé de « Hermes » à « Hermes (1) ». Ce (1) s’est noyé parmi une douzaine d’onglets. Quand vous êtes revenu deux heures plus tard, il poireautait là depuis le début, sans rien faire.
Ce n’est pas un problème propre à Hermes ; c’est le mode de défaillance par défaut de tout assistant en arrière-plan : le signal qu’il utilise pour attirer votre attention est trop faible. Assez faible pour qu’il faille aller le chercher, et aller le chercher est la première habitude qu’on abandonne quand on est débordé.
Hermes traite maintenant ce point comme un vrai problème d’attention, et le règle sérieusement. Le Webapp fait alterner le titre de l’onglet et pose un point ambre sur le favicon. L’application de bureau fait clignoter la barre des tâches quand la fenêtre n’a pas le focus — rebond de l’icône dans le Dock sous macOS, urgency hint sous Linux. Et une fois la permission accordée, le navigateur affiche une véritable notification système qui vous ramène à ce chat quand vous cliquez dessus.
Avant, c’était un (1). Désormais, ce sont trois couches
La stratification mérite qu’on s’y arrête, parce qu’elle est volontairement sobre : chaque couche répond à une question différente sur le degré de certitude d’Hermes quant au fait que vous ne regardez pas.
| Couche | Quand elle se déclenche | Ce que vous voyez | Quand elle s’arrête |
|---|---|---|---|
| Clignotement du titre | Onglet du Webapp masqué ou sans focus | Le titre alterne chaque seconde entre le titre de la notification (par exemple Approbation requise — <chat>) et le titre normal |
Vous revenez sur l’onglet |
| Point sur le favicon | Idem | Un point ambre (#f59e0b) dessiné par-dessus l’icône |
Vous revenez sur l’onglet |
| Notification du navigateur | Vous avez cliqué sur Autoriser vous-même | Une popup système ; un clic donne le focus à l’onglet et ouvre cette session | Vous la fermez ou vous cliquez dessus |
| Clignotement de la barre des tâches | Fenêtre du bureau sans focus au moment où une notification système se déclenche | Barre des tâches sous Windows, rebond du Dock sous macOS, urgency hint sous Linux | La fenêtre reprend le focus |
Remarquez la répartition des rôles : le clignotement de l’onglet ne demande aucune permission. Si l’événement survient et que l’onglet n’est pas au premier plan, il clignote. Les notifications du navigateur exigent une permission explicite, parce que les navigateurs ignorent — et parfois pénalisent — les demandes de permission qui ne découlent pas d’un geste de l’utilisateur. Avant votre autorisation, le clignotement est le seul signal. Après, les deux fonctionnent ensemble.
Pourquoi la notification du navigateur demande un clic de votre part
Ce point mérite sa propre section, car il explique l’expérience « j’ai configuré les notifications et je n’en ai jamais vu une seule ».
L’ancien comportement demandait la permission au moment où l’événement arrivait : un événement se déclenche, Hermes appelle Notification.requestPermission(). Sauf que Chrome, Safari et Firefox exigent tous qu’une demande de permission soit initiée par un geste de l’utilisateur — un clic ou une pression de touche. Une demande lancée depuis un événement d’arrière-plan est ignorée ou bloquée en silence : vous n’avez même pas la possibilité de refuser.
Désormais, la permission n’est demandée qu’à deux endroits, tous deux dans les Réglages, et toujours par votre clic :
- Réglages → Notifications → Notifications du navigateur → Autoriser
- ou le bouton Envoyer une notification de test juste à côté
Hermes ne demande jamais au chargement de la page, ni depuis un événement. Si vous ne cliquez pas, il se contente de faire clignoter le titre et n’affiche rien. C’est un compromis assumé : mieux vaut vous interrompre une fois de moins que lutter contre les règles du navigateur.
Deuxième subtilité : l’API Notification du navigateur n’existe que dans un contexte sécurisé. http://localhost et http://127.0.0.1 comptent comme sécurisés, tout comme une adresse HTTPS du type Tailscale serve. En revanche, si vous avez ouvert le Webapp depuis une autre machine via http://192.168.x.x:8317, c’est du HTTP simple et les notifications sont indisponibles. La ligne de réglages le dit clairement — elle indique qu’il faut du HTTPS, par exemple Tailscale serve — et le clignotement du titre fonctionne quand même. C’est précisément pour cela que le clignotement a été conçu pour ne dépendre de rien.
Bureau : une barre des tâches qui clignote, un Dock qui rebondit
L’application de bureau suit une autre voie : elle disposait déjà des notifications natives du système. Ce qui lui manquait, c’était une réaction quand une notification se déclenche alors que la fenêtre est en arrière-plan et que la notification elle-même est avalée par le mode Ne pas déranger.
Aujourd’hui, quand une notification système se déclenche alors que la fenêtre n’a pas le focus, le processus principal Electron appelle BrowserWindow.flashFrame(true) : l’icône de la barre des tâches clignote sous Windows, celle du Dock rebondit sous macOS, la fenêtre lève un urgency hint sous Linux. Le retour du focus l’efface immédiatement (flashFrame(false)). Le patch initial vient d’un contributeur de la communauté et a été cherry-pické en conservant l’attribution.
La règle de conception importante, c’est que cela ne vole jamais le focus. Un clignotement veut dire « hé, quelque chose vous attend » ; il ne fait pas remonter votre fenêtre au premier plan et ne navigue nulle part de lui-même. Le déplacement n’a lieu qu’après un clic sur une notification.
Activer et désactiver : les interrupteurs existants font le travail
Les nouveaux signaux n’introduisent pas un système de réglages parallèle. Ils réutilisent les réglages de notifications du bureau (Réglages → Notifications, décrits comme propres à chaque appareil) :
- Activer les notifications est l’interrupteur principal. Désactivé, il coupe tous les types, donc plus rien ne clignote non plus.
- Sept types d’événements ont chacun leur bascule : Approbation requise, Saisie requise, Réponse prête, Tour échoué, Tâche d’arrière-plan terminée, Alertes de crédit, Notifications de plugin.
- Un type que vous désactivez ne clignote pas et ne notifie pas. Si « Réponse prête » est celui qui vous agace, coupez ce type plutôt que la fonctionnalité entière.
- Envoyer une notification de test valide le chemin : l’application de bureau utilise le canal natif, le Webapp demande d’abord la permission puis affiche « Les notifications fonctionnent. »
Dans le Webapp, la commande est hermes webapp. Pour vérifier si le gateway sert bien le Webapp et sur quelle adresse il s’est enregistré, utilisez hermes webapp --status. L’adresse affichée est votre preuve que vous êtes, ou non, en contexte sécurisé.
Quand ça ne captera toujours pas votre attention
Quelques limites honnêtes, pour ne pas passer une soirée à vous demander pourquoi rien ne se passe :
- Rien ne clignote quand la fenêtre a le focus. Les alertes de fin ont toujours été pensées pour quand vous êtes absent ; si vous fixez la fenêtre, Hermes considère que vous regardez.
- Une adresse LAN en HTTP simple ne reçoit aucune notification du navigateur, seulement le clignotement du titre.
- Le mode Ne pas déranger avale les notifications système, mais pas le clignotement de l’onglet ni celui de la barre des tâches — c’est tout l’intérêt de la stratification.
- Un navigateur suspendu (un portable en veille, par exemple) n’affichera rien pendant la veille. Quand l’onglet redevient visible, le clignotement reprend.
- Cliquer sur une notification ouvre le chat ; cela n’approuve jamais rien à votre place. Les approbations restent manuelles.
Peut-on l’utiliser dès maintenant
Le changement est arrivé sur main le 2026-10-30 (PR #146882, qui répond à une demande de la communauté ; le patch initial #146542 a été récupéré en créditant son auteur) et figure dans la v0.22.6 (2026-11-02) : une mise à jour via l’installeur ou hermes update suffit.
Pour l’essayer tout de suite, il faut suivre main (installation depuis les sources), ou attendre la prochaine version. Quand elle sortira, pensez à cliquer une fois sur Autoriser dans les Réglages — sinon vous ne verrez que le clignotement du titre, vous conclurez que la fonctionnalité est cassée, et vous retournerez guetter un (1).
Si c’est le problème inverse qui vous gêne — trop d’avis de tâche terminée — nous avons écrit sur la façon dont Hermes regroupe les tâches d’arrière-plan achevées en une seule notification : /fr/blog/hermes-background-notification-batching/. Cet article-là parle d’un excès de signal ; celui-ci d’un manque. Même problème, vu des deux bouts.