Schluss mit dem einsamen (1): Hermes blinkt jetzt in Tab, Taskleiste und Benachrichtigungen


Es ist vier Uhr nachmittags. Du hast Hermes in einem Tab geparkt, um eine Aufgabe abzuarbeiten, und bist dann in ein anderes Fenster gewechselt, um Code zu schreiben. Irgendwo dazwischen blieb Hermes stehen und wartete auf deine Freigabe für einen rm -rf-Befehl, und der Tab-Titel wechselte still von „Hermes“ auf „Hermes (1)“. Dieses (1) ging zwischen einem Dutzend Tabs unter. Als du zwei Stunden später zurückkamst, saß Hermes die ganze Zeit dort und tat nichts.

Das ist kein Hermes-spezifisches Problem, sondern der Standardfehlermodus jedes Hintergrund-Assistenten: Das Signal, mit dem er auf sich aufmerksam macht, ist zu schwach. So schwach, dass du danach suchen musst – und genau dieses Suchen ist die erste Gewohnheit, die du fallen lässt, wenn es stressig wird.

Hermes behandelt das jetzt als Aufmerksamkeitsproblem, das man richtig lösen sollte. Die Webapp wechselt den Tab-Titel und setzt einen bernsteinfarbenen Punkt aufs Favicon. Die Desktop-App lässt die Taskleiste blinken, solange das Fenster nicht fokussiert ist – ein Dock-Bounce unter macOS, ein Urgency-Hint unter Linux. Und sobald du die Erlaubnis erteilst, schickt der Browser eine echte Systembenachrichtigung, die dich beim Klick zurück in diesen Chat bringt.

Früher war es eine (1). Jetzt sind es drei Ebenen

Die Schichtung lohnt sich zu verstehen, denn sie ist bewusst zurückhaltend – jede Ebene beantwortet eine andere Frage dazu, wie sicher Hermes sein kann, dass du gerade nicht hinschaust.

Ebene Wann sie auslöst Was du siehst Wann sie aufhört
Tab-Titel-Blinken Webapp-Tab verborgen oder nicht fokussiert Der Titel wechselt im Sekundentakt zwischen Benachrichtigungstitel (etwa Freigabe nötig — <Chat>) und normalem Titel Du kehrst zum Tab zurück
Favicon-Punkt Dasselbe Ein bernsteinfarbener (#f59e0b) Punkt über dem Icon Du kehrst zum Tab zurück
Browser-Benachrichtigung Du hast selbst auf Erlauben geklickt Ein System-Popup; ein Klick fokussiert den Tab und öffnet diese Session Du schließt es oder klickst es weg
Taskleisten-Blinken Desktop-Fenster nicht fokussiert, während eine Systembenachrichtigung auslöst Taskleisten-Blinken unter Windows, Dock-Bounce unter macOS, Urgency-Hint unter Linux Das Fenster bekommt den Fokus

Auffällig ist die Arbeitsteilung: Das Tab-Blinken braucht überhaupt keine Erlaubnis. Wenn das Ereignis eintritt und der Tab nicht im Vordergrund ist, blinkt er. Browser-Benachrichtigungen brauchen eine ausdrückliche Erlaubnis, weil Browser Berechtigungsdialoge ignorieren – und manchmal sogar bestrafen –, die keine Nutzeraktion ausgelöst hat. Vor dem Erlauben ist das Blinken das einzige Signal. Danach greifen beide zusammen.

Warum die Browser-Benachrichtigung einen Klick von dir braucht

Das verdient einen eigenen Abschnitt, denn es erklärt das Erlebnis „ich habe Benachrichtigungen eingerichtet und nie eine gesehen“.

Das alte Verhalten fragte nach der Berechtigung in dem Moment, in dem das Ereignis eintraf: Ein Ereignis löst aus, Hermes ruft Notification.requestPermission() auf. Doch Chrome, Safari und Firefox verlangen alle, dass eine Berechtigungsanfrage durch eine Nutzeraktion ausgelöst wird – einen Klick oder einen Tastendruck. Eine Anfrage aus einem Hintergrundereignis wird ignoriert oder stillschweigend blockiert, du bekommst also nicht einmal die Chance, Nein zu sagen.

Jetzt wird die Berechtigung an genau zwei Stellen erfragt, beide in den Einstellungen, beide durch deinen Klick:

  • Einstellungen → Benachrichtigungen → Browser-Benachrichtigungen → Erlauben
  • oder die Schaltfläche Testbenachrichtigung senden direkt daneben

Hermes fragt nie beim Laden der Seite und nie aus einem Ereignis heraus. Wenn du nie klickst, blinkt nur der Titel und es ploppt nichts auf. Das ist ein bewusster Kompromiss: lieber einmal weniger unterbrechen als gegen die Regeln des Browsers kämpfen.

Es gibt einen zweiten Haken: Die Notification-API des Browsers existiert nur in einem sicheren Kontext. http://localhost und http://127.0.0.1 gelten als sicher, ebenso eine HTTPS-Adresse wie Tailscale serve. Wenn du die Webapp aber von einem anderen Rechner aus über http://192.168.x.x:8317 geöffnet hast, ist das blankes HTTP und Benachrichtigungen sind nicht verfügbar. Die Einstellungszeile sagt das direkt – sie weist darauf hin, dass HTTPS nötig ist, etwa via Tailscale serve – und das Titel-Blinken funktioniert trotzdem. Genau deshalb wurde das Blinken so gebaut, dass es von nichts abhängt.

Desktop: Taskleiste blinkt, Dock hüpft

Die Desktop-App nimmt einen anderen Weg: Sie hatte bereits native OS-Benachrichtigungen. Was fehlte, war eine Reaktion für den Fall, dass eine Benachrichtigung auslöst, während das Fenster im Hintergrund liegt und die Benachrichtigung selbst von „Nicht stören“ geschluckt wird.

Wenn jetzt eine Systembenachrichtigung auslöst, während das Fenster nicht fokussiert ist, ruft der Electron-Hauptprozess BrowserWindow.flashFrame(true) auf: Das Taskleisten-Icon blinkt unter Windows, das Dock-Icon hüpft unter macOS, das Fenster setzt unter Linux einen Urgency-Hint. Der Fokus räumt das sofort ab (flashFrame(false)). Der ursprüngliche Patch kam von einem Community-Beitragenden und wurde mit erhaltener Autorschaft übernommen.

Die wichtige Designregel: Es stiehlt niemals den Fokus. Ein Blinken heißt „hey, hier braucht dich etwas“; es zieht dein Fenster nicht nach vorne und navigiert von sich aus nirgendwohin. Bewegung passiert erst, wenn du eine Benachrichtigung anklickst.

Ein- und ausschalten: es reitet auf den vorhandenen Schaltern

Die neuen Signale führen kein paralleles Einstellungssystem ein. Sie nutzen die Einstellungen für Desktop-Benachrichtigungen weiter (Einstellungen → Benachrichtigungen, pro Gerät gedacht):

  • Benachrichtigungen aktivieren ist der Hauptschalter. Aus heißt: jede Art darunter ist stumm, und dann blinkt auch nichts.
  • Sieben Ereignisarten haben je einen eigenen Schalter: Freigabe nötig, Eingabe nötig, Antwort bereit, Turn fehlgeschlagen, Hintergrundaufgabe abgeschlossen, Guthaben-Warnungen, Plugin-Benachrichtigungen.
  • Eine Art, die du abschaltest, blinkt nicht und benachrichtigt nicht. Wenn „Antwort bereit“ die ist, die dich nervt, schalte diese Art ab statt das ganze Feature.
  • Testbenachrichtigung senden beweist den Weg: Die Desktop-App nutzt den nativen Kanal, die Webapp fragt zuerst nach der Berechtigung und schickt dann „Benachrichtigungen funktionieren.“

In der Webapp lautet der Befehl hermes webapp. Ob das Gateway die Webapp überhaupt ausliefert und welche Adresse es registriert hat, prüfst du mit hermes webapp --status. Die ausgegebene Adresse ist dein Beleg dafür, ob du dich in einem sicheren Kontext befindest.

Wenn es dich trotzdem nicht erreicht

Ein paar ehrliche Grenzen, damit du keinen Abend damit verbringst, dich zu fragen, warum nichts passiert:

  • Nichts blinkt, solange das Fenster fokussiert ist. Abschlussmeldungen waren immer für die Zeit gedacht, in der du weg bist; wenn du auf das Fenster starrst, geht Hermes davon aus, dass du zuschaust.
  • Eine LAN-Adresse über blankes HTTP bekommt keine Browser-Benachrichtigungen, nur das Titel-Blinken.
  • „Nicht stören“ schluckt Systembenachrichtigungen, aber nicht das Tab-Blinken oder das Taskleisten-Blinken – genau dafür ist die Schichtung da.
  • Ein schlafender Browser (etwa ein zugeklappter Laptop) ploppt mitten im Schlaf nichts auf. Sobald der Tab wieder sichtbar ist, läuft das Blinken weiter.
  • Ein Klick auf eine Benachrichtigung öffnet den Chat; er genehmigt nie etwas für dich. Freigaben bleiben manuell.

Kannst du es heute schon nutzen

Die Änderung ist am 2026-10-30 auf main gelandet (PR #146882, die Umsetzung einer Community-Anfrage; der ursprüngliche Patch #146542 wurde gerettet, der Autor genannt) und mit v0.22.6 (2026-11-02) in ein Release gekommen – ein Update über Installer oder hermes update bringt sie mit.

Um es jetzt auszuprobieren, musst du main verfolgen (eine Installation aus dem Quellcode) oder auf das nächste Release warten. Wenn es dann ausgeliefert wird, denk daran, in den Einstellungen einmal auf Erlauben zu klicken – sonst siehst du nur das Titel-Blinken, schließt daraus, das Feature sei kaputt, und gehst zurück zum Ausschau-Halten nach einer (1).

Wenn dich das umgekehrte Problem stört – zu viele „Job fertig“-Meldungen –, haben wir darüber geschrieben, wie Hermes abgeschlossene Hintergrundaufgaben zu einer einzigen Benachrichtigung zusammenfasst: /de/blog/hermes-background-notification-batching/. Dort geht es um zu viel Signal, hier um zu wenig. Dasselbe Problem von beiden Enden.