Files
hps-thunderbird-templates/README.md
Kendrick Bollens adddef75ac README: auf aktuellen Stand gebracht
Überarbeitete README (QuickMove, Schlagwörter, Web-Editor, Auto-Update,
7z-Build-Befehl) plus die neuen Features 2.4.0/2.5.0: erzwungene
about:config-Einstellungen (mit Opt-out im Sync-Tab), Client-Versions-
Übersicht im Web-Editor, _clients/-Ordner und experiments/prefs/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015PZHd9vRsBiH8cKYdQo1Yv
2026-07-22 14:49:06 +02:00

197 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HPS Vorlagen & Signaturen
Thunderbird-MailExtension zur zentralen Verwaltung von E-Mail-Vorlagen und Signaturen für
Hotel Park Soltau. Vorlagen, Signaturen und Schlagwörter werden über ein Gitea/Forgejo-Repository
synchronisiert und stehen so allen Mitarbeitern zur Verfügung. (Aktuelle Version: siehe
`manifest.json`.)
## Features
- **E-Mail-Vorlagen** erstellen, bearbeiten und per Klick ins Compose-Fenster einfügen
- **3 Sichtbarkeitsstufen** pro Vorlage:
- **Persönlich** — nur für den eigenen Account, gesynct in `_benutzer/{email}/`
- **Abteilung** — für alle in der Abteilung, gesynct in den Abteilungsordner
- **Alle Abteilungen** — firmenweit, gesynct in `_gemeinsam/`
- **Signaturen-Verwaltung** mit persönlichem Kopfbereich + gemeinsamer Fußzeile pro Abteilung
- **QuickMove** — Button in der Nachrichtenansicht: markiert die E-Mail mit deinem Schlagwort
und verschiebt sie in einen festgelegten Ordner. Mehrere Aktionen → Auswahlmenü.
- **Schlagwörter-Sync** — Benutzer-Tags werden zentral über `_config/schlagwoerter.json`
verwaltet, in Thunderbird angelegt und nie gelöscht (dauerhaft nachvollziehbar)
- **Git-Sync** über Gitea/Forgejo API (Pull + Push, automatisch alle 15 Min.)
- **Auto-Erkennung** von Abteilung und Benutzer via `_config/abteilungen.json`
- **Abteilungsverwaltung** — neue Abteilungen direkt aus den Einstellungen anlegen
- **WYSIWYG-Editor** mit Schriftart, Farben, Listen, Bildern, Links
- **Sichtbarkeit direkt änderbar** per klickbarem Badge in der Vorlagenliste
- **Auto-Update** über Gitea (siehe unten) — installierte Clients aktualisieren sich selbst
- **Toolbar-Button** öffnet direkt die Einstellungen
- **Erzwungene Thunderbird-Einstellungen** — setzt bei jedem Start bestimmte `about:config`-Prefs
(z.B. Startseite aus, Kartenansicht, „nicht automatisch als gelesen", Signatur-/Antwort-Verhalten
pro Konto); pro Einstellung im Sync-Tab abschaltbar
- **Client-Versions-Übersicht** — jeder Client meldet Plugin- und Thunderbird-Version; im
Web-Editor unter *Verwaltung → User & Versionen* einsehbar (veraltete Clients markiert)
- **[Web-Editor](web-editor/)** als optionales Web-Gegenstück (gleiche Gitea-Quelle)
## Bedienoberfläche (Einstellungsseite)
Vier Tabs:
| Tab | Funktion |
|---|---|
| **Vorlagen** | Vorlagen anlegen/bearbeiten, Sichtbarkeit, manuelles Push/Pull |
| **Signaturen** | Persönlicher Kopfbereich + Fußzeile (gemeinsam / Abteilung) |
| **QuickMove** | Aktionen konfigurieren (Schlagwort + Zielordner) |
| **Sync** | Server-Verbindung, Benutzer & Abteilung, Sync auslösen, erzwungene Einstellungen (Opt-out) |
## Repository-Struktur (Gitea)
```
repo/
├── _gemeinsam/ # Vorlagen für alle Abteilungen
│ └── beispiel-vorlage.html
├── _benutzer/ # Persönliche Vorlagen pro User
│ ├── max@hotel-park-soltau.de/
│ └── anna@hotel-park-soltau.de/
├── _config/
│ ├── abteilungen.json # E-Mail → Abteilung Mapping
│ └── schlagwoerter.json # Benutzer-Schlagwörter (Name + Farbe)
├── _clients/ # Status-Meldungen: Plugin-/TB-Version pro User
│ └── max@hotel-park-soltau.de.json
├── Rezeption/ # Abteilungsvorlagen
├── IT/
├── signatures/
│ ├── headers/ # Persönliche Signatur-Köpfe
│ │ └── max@hotel.de.max-mustermann.html
│ └── footers/ # Fußbereiche
│ ├── _default.html # gemeinsame Standard-Fußzeile
│ └── Rezeption.html # Abteilungs-Fußzeile
```
### `_config/abteilungen.json`
Mapping von Abteilungs-E-Mail-Adressen zu Ordnernamen. Wird vom Plugin gelesen, um Abteilung und persönliche E-Mail automatisch zu erkennen:
```json
{
"info@hotel-park-soltau.de": "Rezeption",
"veranstaltungs@hotel-park-soltau.de": "Veranstaltungsbuero",
"it@hotel-park-soltau.de": "IT",
"haustechnik@hotel-park-soltau.de": "Haustechnik"
}
```
### `_config/schlagwoerter.json`
Liste der Benutzer-Schlagwörter (für QuickMove/Markierung). Wird beim Sync automatisch um neue
Benutzer ergänzt und nie geleert, damit Markierungen dauerhaft nachvollziehbar bleiben:
```json
[
{ "name": "Max Mustermann", "color": "#4a7c59" },
{ "name": "Anna Beispiel", "color": "#2874a6" }
]
```
## Plugin-Aufbau
| Datei | Funktion |
|---|---|
| `manifest.json` | Extension-Manifest (Thunderbird WebExtension v2) |
| `background.js` | Template-Insertion + QuickMove-Aktionen (Tag setzen, Nachricht verschieben) |
| `popup.html` / `popup.js` | Compose-Popup ("Vorlagen" beim Schreiben) |
| `message_popup.html` / `message_popup.js` | QuickMove-Popup in der Nachrichtenansicht |
| `toolbar_popup.html` | Toolbar-Button → öffnet die Einstellungen |
| `templates_options/` | Einstellungsseite (Tabs: Vorlagen, Signaturen, QuickMove, Sync) |
| `lib/gitea-sync.js` | Gitea-API-Client + Sync-Manager (inkl. Schlagwörter-Sync + Client-Status-Meldung) |
| `lib/forced-prefs-list.js` | Liste der erzwungenen `about:config`-Prefs (geteilt: Background + Optionsseite) |
| `experiments/prefs/` | Privilegierte Experiment-API zum Setzen von `about:config`-Prefs |
| `lib/mdi/` | Material Design Icons (Subset) für den Editor |
| `defaults.local.json` | Optionale vorkonfigurierte Verbindungsdaten (gitignored) |
| `updates.json` | Update-Manifest für Thunderbird-Auto-Update |
| `release.sh` | Release-Skript (Build hashen, Gitea-Release anlegen, updates.json pflegen) |
| `web-editor/` | Optionaler Node/Docker-Web-Editor (eigenständig, gleiche Gitea-Quelle) |
## Installation
### Lokal (Entwicklung)
1. Thunderbird öffnen
2. Extras → Add-ons und Themes
3. Zahnrad-Icon → Add-on aus Datei installieren
4. `templates-reply-hotel.xpi` auswählen
### XPI bauen
`zip` ist nicht zwingend vorhanden, `7z` reicht. Immer **ohne** `defaults.local.json` bauen —
die Datei enthält den Gitea-Token und darf nicht in eine veröffentlichte `.xpi`:
```bash
rm -f templates-reply-hotel.xpi
7z a -tzip templates-reply-hotel.xpi . \
-xr'!.git' -xr'!node_modules' -xr'!web-editor' -xr'!.claude' \
-xr'!defaults.local.json' -xr'!*.xpi' -xr'!release.sh' -xr'!*.md'
```
> Eine **vorkonfigurierte** `.xpi` (mit `defaults.local.json`) ist nur für die interne
> Erstinstallation auf einer neuen Maschine gedacht und darf **niemals** als öffentliches
> Release hochgeladen werden — sonst wäre der Token auslesbar.
### Vorkonfigurierte Verbindungsdaten (`defaults.local.json`)
Wenn eine `defaults.local.json` im Plugin-Root existiert und in die XPI eingebaut wird, werden
die Verbindungsdaten **beim allerersten Start** automatisch gesetzt. Updates brauchen die Datei
nicht — bestehende Installationen behalten ihre Konfiguration in `storage.local`.
```json
{
"baseUrl": "https://git.example.com",
"owner": "organisation",
"repo": "email-vorlagen",
"branch": "main",
"token": "dein-api-token"
}
```
Die Datei ist in `.gitignore` — Tokens landen nicht im Repository.
## Auto-Update (self-hosted über Gitea)
Installierte Add-ons aktualisieren sich automatisch über `updates.json` in diesem Repo
(`manifest.json``browser_specific_settings.gecko.update_url`).
> **⚠️ Dieses Repository muss public bleiben.**
> Der Thunderbird-Auto-Updater greift **anonym (ohne Token)** auf `updates.json` und die
> Release-`.xpi` zu. Ist das Repo privat, liefert Gitea `401` — die automatischen Updates
> funktionieren dann nicht mehr.
Neue Version veröffentlichen:
1. **`version` in `manifest.json` hochzählen** (gleiche Version = Clients updaten nicht!).
2. `.xpi` **ohne** `defaults.local.json` neu bauen (siehe oben).
3. `GITEA_TOKEN=… ./release.sh` — hasht die `.xpi`, aktualisiert `updates.json`, legt das
Gitea-Release an und lädt die `.xpi` als Asset hoch.
4. `updates.json` + `manifest.json` committen & pushen.
Bestehende Installationen ziehen das Update dann automatisch (Prüfung ~1×/Tag, oder manuell
über Add-ons → Zahnrad → „Auf Updates prüfen").
## Einrichtung
1. **Verbindung konfigurieren**: Sync-Tab → Server-URL, Repository, Token eingeben →
Verbindung speichern (entfällt bei vorkonfigurierter XPI)
2. **Abteilung wählen** (oder automatisch erkannt via `abteilungen.json`; neue Abteilungen
lassen sich per **+** direkt anlegen)
3. **Vorlagen erstellen**: Vorlagen-Tab → Neue Vorlage → Sichtbarkeit wählen → Speichern
4. **Signaturen einrichten**: Signaturen-Tab → Identität wählen → Kopfbereich bearbeiten → Speichern
5. **QuickMove einrichten** (optional): QuickMove-Tab → Aktion hinzufügen (Name + Zielordner) →
Speichern. Der Button erscheint dann in der Nachrichtenansicht.
## Voraussetzungen
- Mozilla Thunderbird >= 109.0
- Gitea/Forgejo-Server mit API-Zugang
- API-Token mit Repository-Schreibrechten
## Lizenz
MIT License