53eed8eda3
Der vorherige Fix war zu konservativ: bei einem in der geladenen Liste fehlenden Starface-Kontakt wurde das Mapping immer behalten und nichts neu angelegt - auch wenn der Kontakt in Starface wirklich geloescht war. In Richtung Outlook->Starface wurden geloeschte Kontakte dadurch nie wieder angelegt. Jetzt wird der Kontakt per ID abgefragt: - existiert noch (anderes Adressbuch) -> Mapping behalten, nichts anlegen - 404 (wirklich geloescht) -> in Both/OutlookToStarface neu anlegen (Phase 2), in StarfaceToOutlook Loeschung nach Outlook spiegeln Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
70 lines
3.1 KiB
Markdown
70 lines
3.1 KiB
Markdown
# Changelog
|
||
|
||
Alle nennenswerten Aenderungen an Starface Outlook Sync werden hier dokumentiert.
|
||
|
||
Format orientiert sich an [Keep a Changelog](https://keepachangelog.com/de/),
|
||
Versionsschema ist `x.x.x.x` (siehe `release.sh`).
|
||
|
||
## [Unreleased]
|
||
|
||
### Behoben
|
||
|
||
- **Dubletten auf beiden Seiten beim Synchronisieren.** Mehrere zusammenhaengende
|
||
Ursachen wurden beseitigt:
|
||
- Eine unvollstaendig geladene Starface-Kontaktliste (z.B. durch einen
|
||
Lade-Fehler oder Timeout) liess die Engine Kontakte faelschlich als
|
||
"geloescht" ansehen, ihr Mapping verwerfen und sie beim naechsten Lauf neu
|
||
anlegen. Der Kontakt-Abruf bricht jetzt mit Fehlermeldung ab (inkl.
|
||
Wiederholversuch), statt still mit einer Teil-Liste weiterzuarbeiten.
|
||
- Ist ein Starface-Kontakt nicht in der geladenen Liste, wird er jetzt per
|
||
ID direkt abgefragt: existiert er noch (liegt also in einem **anderen
|
||
Adressbuch**), bleibt das Mapping erhalten und es wird nichts neu angelegt
|
||
(keine Dublette). Ist er **wirklich geloescht** (404), wird er je nach
|
||
Sync-Richtung in Starface neu angelegt bzw. die Loeschung nach Outlook
|
||
gespiegelt. (Vorher wurde das Mapping faelschlich behalten und der Kontakt
|
||
in Outlook->Starface gar nicht neu angelegt.)
|
||
- Das Wiederzuordnen bestehender Kontakte war zu streng: eine von Starface
|
||
umformatierte Telefonnummer konnte einen eindeutigen E-Mail- oder
|
||
Namens-Treffer ueberstimmen und so eine Neuanlage statt Verknuepfung
|
||
ausloesen. Ein gleicher E-Mail- oder voller Namens-Treffer reicht jetzt.
|
||
|
||
- **Synchronisation extrem langsam / schrieb bei jedem Lauf alle Kontakte neu.**
|
||
Die Aenderungserkennung verglich einen einzigen Hash gegen beide Seiten.
|
||
Outlook und Starface stellen denselben Kontakt aber unterschiedlich dar
|
||
(nicht uebertragene Felder, abweichendes Telefonformat), wodurch der Hash nie
|
||
uebereinstimmte und praktisch jeder Kontakt bei jedem Sync neu geschrieben
|
||
wurde. Jede Seite hat jetzt eine eigene Baseline (`LastOutlookHash` /
|
||
`LastStarfaceHash`); nur tatsaechlich geaenderte Kontakte werden geschrieben.
|
||
|
||
### Geaendert
|
||
|
||
- Starface-Kontaktdetails werden beim Laden parallel abgerufen (8 gleichzeitig)
|
||
statt einzeln nacheinander – deutlich schneller bei grossen Adressbuechern.
|
||
- `UpdateContact` (Outlook) und `UpdateContactAsync` (Starface) geben jetzt den
|
||
frisch eingelesenen Stand zurueck, damit die Baseline nach dem Schreiben
|
||
korrekt gesetzt wird und der Sync sauber konvergiert.
|
||
|
||
### Migration
|
||
|
||
- Bestehende Mapping-Dateien werden beim ersten Sync automatisch uebernommen
|
||
(ein ruhiger Durchlauf ohne Massen-Update).
|
||
- **Bereits vorhandene Dubletten werden nicht automatisch entfernt** – die Fixes
|
||
verhindern nur neue. Vorhandene Doppel-Kontakte einmalig manuell bereinigen.
|
||
|
||
## [0.0.0.23]
|
||
|
||
### Behoben
|
||
|
||
- Kritischer Loesch-Fehler: Kontakte wurden bei einer geaenderten Outlook-EntryID
|
||
nicht mehr massenhaft geloescht.
|
||
|
||
### Geaendert
|
||
|
||
- Outlook-Sicherheitsschluessel werden fuer Domaenenumgebungen zusaetzlich nach
|
||
HKLM geschrieben (unterdrueckt die Outlook-Sicherheitsabfrage).
|
||
|
||
## Aeltere Versionen
|
||
|
||
Aeltere Releases (v0.0.0.1 – v0.0.0.22) sind ueber die Git-Historie und die
|
||
Git-Tags nachvollziehbar.
|