Commit Graph

9 Commits

Author SHA1 Message Date
2e6a1a58e5 Feld-Zuordnung: Feldname wieder frei eingebbar
Die Spalte "DocuWare-Feldname" war ein starres <select>, dessen Optionen
ausschliesslich aus availableFields kamen - der Feldliste eines Archivs. Die ist
aber erst gefuellt, wenn Schrankliste gecacht, Passwort dieser Sitzung eingegeben
und ein Archiv gewaehlt ist. Bis dahin enthielt jedes Dropdown nur
"- Feld waehlen -": eine neue Zeile hatte null auswaehlbare Felder, und weil
collectMapping() Zeilen ohne Feldnamen verwirft, verschwand sie beim Speichern
kommentarlos wieder.

Jetzt wieder freie Texteingabe mit Vorschlagsliste (<input list>), wie der
veraltete Kommentar an mapCabinet es schon beschrieb. Die Vorschlaege kommen aus
drei Quellen statt einer: Felder des gewaehlten Archivs, die Namen aus
DEFAULT_FIELD_MAP und alles bereits Eingetragene - damit stehen sofort nach dem
Oeffnen Vorschlaege bereit, auch ohne Anmeldung.

fillFieldSelect entfaellt; refreshFieldSelects baut nur noch die gemeinsame
<datalist> auf und wird zusaetzlich am Ende von loadMapping aufgerufen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 10:07:41 +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
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
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
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
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
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
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
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