diff --git a/README.md b/README.md index 564a02f..8fe37b7 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,8 @@ wird. Bereich, wie voll der heutige Tag schon ist - **Wochenplanung** per Ziehen und Ablegen: Aufgaben werden zu echten Kalenderterminen, Verschiebungen im Kalender kommen zurück +- **Benachrichtigungen** per Web-Push und E-Mail: Tagesüberblick, fällige + Aufgaben, Vorlauf vor einem Zeitblock — mit Ruhezeiten und ab Werk still - Anmeldung über einen OIDC-Anbieter, über Passkeys oder mit E-Mail und Passwort — je Instanz einzeln zuschaltbar - Rollen `Benutzer` und `Verwaltung`; jede schreibende Aktion wird @@ -43,24 +45,25 @@ wird. ### Geplant -Benachrichtigungen, Integrationen, Schnellerfassung vom Handy und ein -MCP-Server. Siehe [ROADMAP.md](ROADMAP.md). +Integrationen, Schnellerfassung vom Handy und ein MCP-Server. +Siehe [ROADMAP.md](ROADMAP.md). ## Bildergalerie -| | Hell | Dunkel | -| ------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| Anmelden | ![Anmeldeseite, hell](docs/bilder/anmelden-hell-schreibtisch.png) | ![Anmeldeseite, dunkel](docs/bilder/anmelden-dunkel-schreibtisch.png) | -| Start | ![Startseite, hell](docs/bilder/start-hell-schreibtisch.png) | ![Startseite, dunkel](docs/bilder/start-dunkel-schreibtisch.png) | -| Inbox | ![Inbox, hell](docs/bilder/inbox-hell-schreibtisch.png) | ![Inbox, dunkel](docs/bilder/inbox-dunkel-schreibtisch.png) | -| Woche | ![Woche, hell](docs/bilder/woche-hell-schreibtisch.png) | ![Woche, dunkel](docs/bilder/woche-dunkel-schreibtisch.png) | -| Aufgaben | ![Aufgaben, hell](docs/bilder/aufgaben-hell-schreibtisch.png) | ![Aufgaben, dunkel](docs/bilder/aufgaben-dunkel-schreibtisch.png) | -| Projekte | ![Projekte, hell](docs/bilder/projekte-hell-schreibtisch.png) | ![Projekte, dunkel](docs/bilder/projekte-dunkel-schreibtisch.png) | -| Ideen | ![Ideen, hell](docs/bilder/ideen-hell-schreibtisch.png) | ![Ideen, dunkel](docs/bilder/ideen-dunkel-schreibtisch.png) | -| Kalender | ![Kalenderkonten, hell](docs/bilder/kalenderkonten-hell-schreibtisch.png) | ![Kalenderkonten, dunkel](docs/bilder/kalenderkonten-dunkel-schreibtisch.png) | -| Bereiche | ![Bereiche, hell](docs/bilder/bereiche-hell-schreibtisch.png) | ![Bereiche, dunkel](docs/bilder/bereiche-dunkel-schreibtisch.png) | -| Einstellungen | ![Einstellungen, hell](docs/bilder/einstellungen-hell-schreibtisch.png) | ![Einstellungen, dunkel](docs/bilder/einstellungen-dunkel-schreibtisch.png) | -| Protokoll | ![Protokoll, hell](docs/bilder/protokoll-hell-schreibtisch.png) | ![Protokoll, dunkel](docs/bilder/protokoll-dunkel-schreibtisch.png) | +| | Hell | Dunkel | +| ------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| Anmelden | ![Anmeldeseite, hell](docs/bilder/anmelden-hell-schreibtisch.png) | ![Anmeldeseite, dunkel](docs/bilder/anmelden-dunkel-schreibtisch.png) | +| Start | ![Startseite, hell](docs/bilder/start-hell-schreibtisch.png) | ![Startseite, dunkel](docs/bilder/start-dunkel-schreibtisch.png) | +| Inbox | ![Inbox, hell](docs/bilder/inbox-hell-schreibtisch.png) | ![Inbox, dunkel](docs/bilder/inbox-dunkel-schreibtisch.png) | +| Woche | ![Woche, hell](docs/bilder/woche-hell-schreibtisch.png) | ![Woche, dunkel](docs/bilder/woche-dunkel-schreibtisch.png) | +| Aufgaben | ![Aufgaben, hell](docs/bilder/aufgaben-hell-schreibtisch.png) | ![Aufgaben, dunkel](docs/bilder/aufgaben-dunkel-schreibtisch.png) | +| Projekte | ![Projekte, hell](docs/bilder/projekte-hell-schreibtisch.png) | ![Projekte, dunkel](docs/bilder/projekte-dunkel-schreibtisch.png) | +| Ideen | ![Ideen, hell](docs/bilder/ideen-hell-schreibtisch.png) | ![Ideen, dunkel](docs/bilder/ideen-dunkel-schreibtisch.png) | +| Kalender | ![Kalenderkonten, hell](docs/bilder/kalenderkonten-hell-schreibtisch.png) | ![Kalenderkonten, dunkel](docs/bilder/kalenderkonten-dunkel-schreibtisch.png) | +| Bereiche | ![Bereiche, hell](docs/bilder/bereiche-hell-schreibtisch.png) | ![Bereiche, dunkel](docs/bilder/bereiche-dunkel-schreibtisch.png) | +| Einstellungen | ![Einstellungen, hell](docs/bilder/einstellungen-hell-schreibtisch.png) | ![Einstellungen, dunkel](docs/bilder/einstellungen-dunkel-schreibtisch.png) | +| Meldungen | ![Benachrichtigungen, hell](docs/bilder/benachrichtigungen-hell-schreibtisch.png) | ![Benachrichtigungen, dunkel](docs/bilder/benachrichtigungen-dunkel-schreibtisch.png) | +| Protokoll | ![Protokoll, hell](docs/bilder/protokoll-hell-schreibtisch.png) | ![Protokoll, dunkel](docs/bilder/protokoll-dunkel-schreibtisch.png) | Alle Bilder entstehen mit `npm run screenshots` in einer Wegwerf-Instanz mit ausschließlich erfundenen Daten — niemals aus einer Instanz mit echten Daten. @@ -136,6 +139,38 @@ Rückleit-URI beim Anbieter lautet `/api/auth/callback/oidc`. Ein Anbieter erscheint erst, wenn Kennung **und** Geheimnis gesetzt sind — und nur, wenn die Instanz ihn erlaubt (Google nur `daheim`). +### Benachrichtigungen + +Beides ist freiwillig. Fehlt ein Satz, bleibt der Weg in den Einstellungen +ausgegraut, und der Planer läuft ohne ihn weiter. + +| Variable | Standard | Bedeutung | +| ------------------- | -------- | --------------------------------------------------------- | +| `VAPID_OEFFENTLICH` | _(leer)_ | Öffentlicher Push-Schlüssel, geht an den Browser | +| `VAPID_PRIVAT` | _(leer)_ | Privater Push-Schlüssel, bleibt auf dem Server | +| `VAPID_KONTAKT` | _(leer)_ | Kontakt für den Push-Dienst, `mailto:` oder `https:` | +| `SMTP_HOST` | _(leer)_ | Mailserver. Ohne ihn kein Mailversand | +| `SMTP_PORT` | `587` | Port des Mailservers | +| `SMTP_BENUTZER` | _(leer)_ | Anmeldename. Leer lassen für einen Server ohne Anmeldung | +| `SMTP_PASSWORT` | _(leer)_ | Passwort dazu | +| `SMTP_ABSENDER` | _(leer)_ | Absenderadresse, z. B. `Planer ` | +| `SMTP_TLS` | `false` | `true` bei Port 465 (SMTPS), `false` bei 587 mit STARTTLS | + +Push braucht **alle drei** VAPID-Werte, Mail mindestens `SMTP_HOST` und +`SMTP_ABSENDER`. Die Schlüssel entstehen einmalig mit: + +```bash +npx web-push generate-vapid-keys +``` + +Wird das Schlüsselpaar später getauscht, müssen sich alle Geräte neu +anmelden — die alten Abos sind dann wertlos. Push setzt außerdem HTTPS +voraus; `http://localhost` gilt dem Browser als sicher, jede andere +Klartextadresse nicht. + +Was der Planer wann meldet, steht im +[Handbuch](docs/handbuch/benachrichtigungen.md). + ### Einrichtung und Sonstiges | Variable | Standard | Bedeutung | diff --git a/docs/handbuch/README.md b/docs/handbuch/README.md index 38933a0..f3b7b5c 100644 --- a/docs/handbuch/README.md +++ b/docs/handbuch/README.md @@ -20,10 +20,12 @@ Anleitung für den Alltag mit dem Planer. Eine Seite je Thema. verbinden, Belegung verstehen 7. **[Wochenplanung](woche.md)** – Aufgaben per Ziehen und Ablegen in den Kalender legen +8. **[Benachrichtigungen](benachrichtigungen.md)** – Push und E-Mail + einrichten, Ruhezeiten setzen ## Verwaltung -8. **[Protokoll](protokoll.md)** – nachsehen, wer wann was geändert hat +9. **[Protokoll](protokoll.md)** – nachsehen, wer wann was geändert hat ## Was noch kommt @@ -31,7 +33,6 @@ Diese Seiten entstehen mit den nächsten Meilensteinen: | Thema | Meilenstein | | ------------------------------- | ----------- | -| Benachrichtigungen | M5 | | Integrationen | M6 | | Schnellerfassung vom Handy, API | M7 | | MCP | M8 | diff --git a/docs/handbuch/benachrichtigungen.md b/docs/handbuch/benachrichtigungen.md new file mode 100644 index 0000000..deed848 --- /dev/null +++ b/docs/handbuch/benachrichtigungen.md @@ -0,0 +1,105 @@ +# Benachrichtigungen + +Ab Werk meldet der Planer **gar nichts**. Das ist Absicht: Eine Anwendung, +die zu oft meldet, wird stummgeschaltet — und dann verpasst du auch das +Wichtige. Was du hier einschaltest, kommt. Alles andere nicht. + +![Benachrichtigungen in den Einstellungen](../bilder/benachrichtigungen-hell-schreibtisch.png) + +Du findest die Einstellung unter **Einstellungen → Benachrichtigungen**. + +## Die zwei Wege + +| | Web-Push | E-Mail | +| --------- | ---------------------------------------- | ---------------------------------------- | +| Kommt an | als Systemmeldung auf dem Gerät | im Postfach | +| Braucht | Erlaubnis des Browsers, je Gerät einzeln | nichts weiter | +| Gut für | „gleich beginnt ein Zeitblock" | den Tagesüberblick am Morgen | +| Fällt aus | wenn der Browser die Erlaubnis entzieht | wenn der Mailserver nicht erreichbar ist | + +Beide Wege lassen sich gleichzeitig einschalten. Dann kommt jede Meldung +über beide — der Planer verschickt sie trotzdem nur **einmal je Anlass**. + +Ist ein Weg auf dem Server nicht eingerichtet, steht das direkt daneben. +Was dafür nötig ist, steht im [README](../../README.md), Abschnitt +_Benachrichtigungen_. + +## Push auf einem Gerät einschalten + +1. Auf **Anmelden** klicken. +2. Der Browser fragt nach Erlaubnis — **Zulassen**. +3. Das Gerät erscheint in der Liste darunter. + +Das gilt **je Gerät und je Browser**. Der Rechner im Büro und das Handy +sind zwei Anmeldungen; Firefox und Chrome auf demselben Rechner ebenfalls. + +> **Der Knopf fehlt oder ist grau?** Push braucht HTTPS. Unter +> `http://localhost` geht es zum Entwickeln, unter jeder anderen +> Klartextadresse nicht. Hat der Browser Benachrichtigungen einmal +> blockiert, lässt sich das nur in seinen eigenen Einstellungen +> zurücknehmen — die Anwendung darf dann nicht mehr fragen. + +Ein Gerät, das der Push-Dienst dauerhaft ablehnt, entfernt der Planer von +selbst aus der Liste. Du musst nichts aufräumen. + +## Was gemeldet wird + +| Anlass | Wann | +| ---------------------------------------- | ------------------------------------------------------------------------ | +| **Tagesüberblick** | einmal morgens zur eingestellten Zeit | +| **Fällige Aufgaben** | wenn eine Aufgabe an diesem Tag fällig wird, höchstens einmal je Aufgabe | +| **Gleich beginnt ein Zeitblock** | kurz vor dem Beginn, Vorlauf einstellbar | +| **Kalender lässt sich nicht abgleichen** | erst nach dem dritten Fehlversuch hintereinander | + +Eingeschaltet sind anfangs nur Tagesüberblick und fällige Aufgaben — und +selbst die kommen erst, wenn du einen Weg (Push oder E-Mail) aktiviert hast. + +Der **Tagesüberblick** entfällt an Tagen, an denen es nichts zu sagen gibt. +Eine Meldung „heute steht nichts an" ist keine Information, sondern Lärm. + +Der **Abgleichfehler** kommt bewusst spät: Ein Netz hustet, ein Anbieter hat +Wartung. Erst wenn es dreimal hintereinander nicht klappt, ist es eine +Nachricht wert — dann allerdings dringend, denn solange bleibt deine +Wochenansicht auf einem alten Stand. + +## Ruhezeit + +Voreingestellt ist **20:00 bis 07:00**. In diesem Fenster kommt nichts. + +- Die Ruhezeit läuft über Mitternacht hinweg — das ist der Normalfall. +- Gleiche Start- und Endzeit heißt: **keine** Ruhezeit. +- **Am Wochenende still** legt Samstag und Sonntag komplett still. + +Eine Ausnahme: Der **Tagesüberblick** kommt zu seiner festen Zeit, auch wenn +die noch in der Ruhezeit liegt. Wer ihn auf 06:00 stellt, steht um 06:00 auf +und will ihn dann auch haben. + +Was in der Ruhezeit anfällt, wird **nicht nachgeholt**. Eine Erinnerung an +einen Zeitblock, der längst begonnen hat, hilft niemandem. + +## Ausprobieren + +Der Knopf **Probe senden** schickt eine Testmeldung über alle +eingeschalteten Wege — er umgeht Ruhezeit und Wiederholungssperre. Wer +darauf drückt, will jetzt wissen, ob es ankommt. + +Die Rückmeldung sagt, was passiert ist: an wie viele Geräte der Push ging, +ob die Mail hinausging. Kommt „kein Gerät für Push angemeldet", fehlt die +Anmeldung dieses Browsers. + +## Wenn nichts ankommt + +| Symptom | Ursache | +| ----------------------------------------- | ----------------------------------------------------------------- | +| Probe sagt „verschickt", nichts kommt an | Betriebssystem blendet Browsermeldungen aus (Fokus, Nicht stören) | +| Gerät verschwindet immer wieder | Der Push-Dienst lehnt das Abo ab — neu anmelden | +| Gar nichts, seit der Server umgezogen ist | Neues Schlüsselpaar auf dem Server. Alle Geräte neu anmelden | +| Mail fehlt, Push kommt | SMTP prüfen; Fehler stehen im Serverprotokoll | + +Der Planer prüft alle zehn Minuten, ob etwas zu melden ist. Eine Erinnerung +kann also ein paar Minuten vor der eingestellten Zeit kommen — nie danach. + +--- + +Weiter zur [Wochenplanung](woche.md) oder zurück zum +[Handbuch](README.md).