- prefillFor löst Token-String ODER {const:...} auf; Options-Editor mit
'Fester Wert'-Option + Konstanten-Eingabe.
- Feld-Zuordnung: JSON exportieren/anwenden/kopieren, von URL laden (Gitea/GitHub raw).
- Fix: zwei Statustexte mit ASCII-Quote in " gehärtet.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Dialog/Optionen: mailFormat-Radio (.eml/PDF) + eigener Anhänge-Haken statt
scope/optPdf; nie mehr eml UND pdf gleichzeitig. Migration storeEml/storePdf.
- Feld-Zuordnung in den Einstellungen editierbar (MAIL_TOKENS/DEFAULT_FIELD_MAP
in store.js); PREFILL -> TOKEN_FN + effectiveFieldMap/prefillFor.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Erster C2O-Parität-Schritt. Die RFC822-Message-ID wird normalisiert ins Feld
EML_ID geschrieben und zur Dubletten-Erkennung genutzt.
- mail.js: rfcMessageId aus den Mail-Headern
- docuware.js: normalizeMessageId, cabinetFieldNames, getSearchDialogId,
findByMessageId (DialogExpression, Format gem. Postman-Collection), documentViewUrl
- background.js: ✓-Badge am Nachrichten-Button beim Öffnen (Suche im Standard-
schrank, Cache, archive:done-Refresh); lädt dafür lib/docuware.js
- dialog: EML_ID beim Upload mitschreiben; „bereits abgelegt"-Banner mit
„Dokument öffnen"; Dubletten-Warnung beim Ablegen (warnen, „Trotzdem ablegen")
UX-Entscheidung: Prüfung beim Öffnen (1 Schrank) + Duplikat warnen/erlauben.
Schema bestätigt (EML_ID existiert). TB-Runtime-Test steht noch aus.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- web-ext fest auf 7.x via npx (ab 8.x spricht es nur AMO-v5 → ATN gibt 404)
- korrekter Flag --api-url-prefix für ATN-API v4
- neuer --xpi-Modus: bereits signiertes XPI veröffentlichen (Gitea-Release +
updates.json + push), ohne erneut zu signieren. Nötig, weil ATN das signierte
XPI nicht über die API zurückgibt – Download aus dem ATN-Entwicklerbereich.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
scripts/release.sh signiert die Extension via web-ext gegen
addons.thunderbird.net (Kanal unlisted, also signiert aber nicht öffentlich
gelistet), lädt das XPI als Gitea-Release hoch und trägt es in updates.json
ein. web-ext wird global genutzt oder per npx (kein globales Install nötig).
Secrets kommen aus scripts/.env (gitignored); .env.example als Vorlage.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Das DocuWare-Passwort wird nicht mehr in storage.local abgelegt. Das
Hintergrundskript fungiert als Auth-Broker und hält den OAuth-Token nur im
Speicher der TB-Sitzung. Der Ablage-Dialog fragt das Passwort einmalig per
Overlay ab, holt darüber den Token und verwirft das Passwort sofort.
- store.js: password aus DEFAULTS entfernt; Settings.set() löscht password defensiv
- auth.js: setToken/currentToken für Token-Transfer, Cookie-Modus als Sentinel
- background.js: Broker (auth:status/auth:logon/auth:logout)
- dialog: ensureAuth() + Passwort-Overlay statt direktem Auth.logon
- options: Passwort nur transient für Test/Diagnose, nicht gespeichert; Export ohne Passwort
- manifest: lib/store.js + lib/auth.js ins Hintergrundskript geladen
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Thunderbird-MailExtension zum Ablegen von E-Mails in DocuWare
(.eml + PDF + Anhänge), dynamische Indexfelder aus dem Store-Dialog,
Auswahllisten, Identity-Service-Login. Self-distribution-Updates
über updates.json auf eigenem Gitea.