Commit Graph

26 Commits

Author SHA1 Message Date
7e351a818a Feld-Zuordnung: Dateiname, Datum+Uhrzeit, Benutzer und weitere Werte
MAIL_TOKENS wächst von 11 auf 22 auswählbare Werte:
- Dokument: fileName (je Dokument), attachmentCount, rfcMessageId
- Datum/Zeit: dateTime, time, archiveDate, archiveDateTime
- Wer/Woher: dwUser, dwOrganization, accountEmail, folder

fileName kann nicht wie die übrigen Tokens einmal je Mail aufgelöst werden: die
.eml/PDF trägt den Mailnamen, jeder Anhang seinen eigenen. Darum tragen TOKEN_FN
jetzt ein zweites Argument ctx {fileName, attachmentCount}, und Felder, die auf
ein Token aus PER_FILE_TOKENS gemappt sind, werden über applyPerFileFields() vor
JEDEM Upload neu gesetzt. Im Formular steht nur eine Vorschau (Tooltip erklärt
das), die beim Umschalten .eml <-> PDF nachzieht.

Fix DateTime-Felder: _field prüfte t.includes("date") zuerst, und "DateTime"
enthält "date" — jedes DocuWare-DateTime-Feld wurde damit auf UTC-Mitternacht
normalisiert und verlor die Uhrzeit. Das betraf auch bestehende Zuordnungen.
Jetzt wird datetime zuerst geprüft; der Dialog rendert solche Felder als
datetime-local und liest sie lokal zurück. Date-Felder bleiben unverändert auf
dem lokalen Kalendertag als UTC-Mitternacht.

Offen und im Code vermerkt: ob DocuWare bei DateTime das "Z" auswertet oder die
ISO-Zeichenkette als lokale Wanduhrzeit liest, ist nicht gegen einen Server
verifiziert.

Mail.getMeta liefert zusätzlich folder und accountEmail; _accountForMessage
wurde zu _accountInfo (Name + Identitäts-Adresse).
DEFAULT_FIELD_MAP: DOC_FILE_NAME -> fileName.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 16:55:32 +02:00
6ca1e01b46 Release 0.11.0 2026-08-20 16:18:12 +02:00
e201e6c654 Ein Ablagefenster für Mehrfachauswahl + Sitzungs-/Retry-Fixes
Mehrfachauswahl öffnet jetzt EIN Ablagefenster (?messageIds=1,2,3) statt eines
Fensters je Nachricht. Der dafür schon vorhandene, bisher unerreichbare Multi-Pfad
in dialog.js hatte drei Fehler, die dabei aufgeschlagen wären:
- Der Anhang-Haken wurde aus der ERSTEN Mail abgeleitet: hatte die keine Anhänge,
  fielen die Anhänge aller übrigen Mails still weg.
- Die Anhangsliste zeigte die Anhänge von Mail 1 mit wirkungslosen Haken.
- Der „bereits abgelegt"-Banner galt nur für Mail 1, sah aber nach einer Aussage
  über die ganze Auswahl aus.

Weiter:
- Server-/Zugangsdaten-Wechsel verwirft jetzt auch die serverspezifischen Caches.
  auth:logout leert zusätzlich ARCHIVED_CACHE; mit scope:"server" fliegen die
  gecachte Schrankliste sowie defaultCabinetId/dialogByCabinet raus, weil deren
  GUIDs nur auf dem alten Server existieren.
- Retry nach einem Teilfehler lud bereits übertragene Teile erneut hoch und
  erzeugte Dubletten. Jeder Teil (eml/pdf/Anhang) wird nun je Ziel einmal
  hochgeladen; dieselbe Mail lässt sich dadurch auch bewusst in ein zweites
  Archiv ablegen.
- ARCHIVED_CACHE wächst nicht mehr unbegrenzt (500 Einträge, ältester fliegt).
- HTTP 401/403 liefern statt des nackten Statuscodes eine verständliche Meldung.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 16:16:35 +02:00
d02228e4c9 Release 0.10.8 2026-06-17 13:44:46 +02:00
589c0018a9 Fixes: XSS-Schutz, Datums-Zeitzone, Multi-Retry, Settings-Race, http-Warnung
- dialog.js: Anhang-Liste per DOM-API statt innerHTML (kein HTML-Inject über
  angreiferkontrollierte Anhang-Namen); Feldname-Selektoren via CSS.escape,
  datalist-id bereinigt; Datums-Eingabe lokal statt UTC (kein Off-by-one);
  bereits abgelegte Mails bei Retry überspringen (keine Dubletten)
- docuware.js: Datumsfelder auf lokalen Kalendertag normalisieren (UTC-Mitternacht)
- store.js: Settings.set serialisiert (kein read-modify-write Race)
- options.js: Warnung bei unverschlüsseltem http://-Server
- mail.js: ungenutzten Parameter aus _direction entfernt

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 13:43:59 +02:00
03baacd5d8 Release 0.10.7 2026-06-16 16:21:22 +02:00
ea6a518c9c Ablage-Fenster: Dark-DocuWare-Style (gleiche Palette wie Optionen) – Titelleiste, Eingaben, Button, Banner, Overlays, color-scheme dark
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 16:17:08 +02:00
3425e3cafd Release 0.10.6 2026-06-16 16:09:46 +02:00
51f9362c9c Mapping-Editor: DocuWare-Feldname als Dropdown (aus Archiv), Zeilen als Karten (Feld+Attribut gestapelt, fester Wert breit daneben), Auto-Load der Standard-Archiv-Felder
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 16:09:04 +02:00
1a358a96ef Release 0.10.5 2026-06-16 15:02:41 +02:00
81964c76d3 Mapping: feste Werte ({const}) + Teilen via JSON-Copy/Paste und Pull von raw-JSON-URL (mappingUrl)
- 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>
2026-06-16 15:01:37 +02:00
2194cc2d56 Release 0.10.4 2026-06-16 14:42:12 +02:00
52e8942e6d Optionen: DocuWare-Dark-Style, in Karten aufgeteilt; Export/Import + Diagnose entfernt; Mapping mit Archiv-Feldvorschlägen (datalist)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 14:41:52 +02:00
c7f205d9bc Release 0.10.3 2026-06-16 14:16:34 +02:00
53d3675dc1 Feature: Mail-Format .eml ODER PDF (nicht beides) + konfigurierbares Feld-Mapping
- 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>
2026-06-16 13:23:39 +02:00
f1c6d43613 Release 0.10.2 2026-06-16 10:50:45 +02:00
23909dceeb Doku/Release: kein ATN-Signieren (Thunderbird braucht keine Signatur); release.sh baut sauberes XPI; Auto-Update verlangt anonymen Gitea-Zugriff
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:50:31 +02:00
dad16d6ba2 Fix: lesbare PDFs – HTML sauber entkernen (style/script raus, Absätze erhalten) + Typografie-Zeichen via WinAnsi statt '?'
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:50:31 +02:00
8d09f0ef16 Release 0.10.1 2026-06-16 10:27:04 +02:00
73693fc381 Feature: „bereits abgelegt"-Erkennung + Dedup über Message-ID (v0.10.0)
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>
2026-06-05 09:03:48 +02:00
1b15973c9e release.sh: web-ext 7.x für ATN-API v4 pinnen + --xpi-Modus
- 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>
2026-06-03 15:50:06 +02:00
0ca212dd4c Release-Skript: ATN-Signierung (unlisted) + Gitea-Release + Auto-Update
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>
2026-06-03 15:14:15 +02:00
f1454540d5 Passwort nicht mehr speichern: OAuth-Token nur im RAM, 1x-Login pro Sitzung
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>
2026-06-03 15:14:05 +02:00
15b2d578b0 docs/ aus Tracking entfernen und CLAUDE.md ignorieren
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 13:34:07 +02:00
d5fb472cfb first commit 2026-06-03 13:21:54 +02:00
2befbb042b DocuWare Ablage – Thunderbird-Extension v0.8.0
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.
2026-06-03 13:15:59 +02:00