b5ad59ff9d
Outlook->Starface macht das Starface-Adressbuch zur exakten Kopie von Outlook: Kontakte, die nur in Starface existieren, werden geloescht. Starface->Outlook entsprechend umgekehrt (Phase 4). Sicherheit: - Loeschphase laeuft nur bei vollstaendig geladener Liste (unvollstaendige Ladevorgaenge brechen schon vorher ab). - Ist die Quelle komplett leer (z.B. falscher Ordner), wird die Loeschphase uebersprungen statt die Zielseite zu leeren. UI: Profil-Editor zeigt jetzt unter der Sync-Richtung einen Warnhinweis, der das jeweilige Verhalten erklaert. README/CHANGELOG aktualisiert. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
84 lines
4.2 KiB
Markdown
84 lines
4.2 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
|
||
|
||
- **Ein-Richtungs-Modi sind jetzt echtes "Ersetzen".** Outlook->Starface macht
|
||
das Starface-Adressbuch zu einer exakten Kopie von Outlook: Kontakte, die nur
|
||
in Starface existieren (kein Pendant in Outlook), werden geloescht.
|
||
Starface->Outlook entsprechend umgekehrt. Schutz: Ist die Quelle komplett
|
||
leer (z.B. falscher Ordner gewaehlt), wird die Loeschphase uebersprungen
|
||
statt die Zielseite zu leeren. Mass-Loeschungen finden nur bei vollstaendig
|
||
geladener Liste statt (unvollstaendige Ladevorgaenge brechen vorher ab).
|
||
- **Bidirektionale Loeschungen** werden jetzt erkannt. Wird ein Kontakt auf
|
||
einer Seite geloescht und ist die andere Seite seit dem letzten Sync
|
||
unveraendert (Abgleich ueber die gespeicherte Baseline), wird die Loeschung
|
||
auf die andere Seite gespiegelt – statt den Kontakt wieder anzulegen. Wurde
|
||
die andere Seite zwischenzeitlich bearbeitet, gewinnt die Bearbeitung und der
|
||
Kontakt wird neu angelegt (kein Datenverlust). In den Ein-Richtungs-Modi
|
||
bleibt die jeweilige Quelle fuehrend (Loeschung im Ziel wird wiederhergestellt).
|
||
- 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.
|