Releases: johannes-kaindl/calendar-notes
Releases · johannes-kaindl/calendar-notes
Release list
0.1.9
- Fix (Abgleich): Eine leere Sammlung brach den Abgleich mit „Antwort ist kein DAV:multistatus" ab. Ein Kalender ohne Termine antwortet regulär mit einem Wurzelknoten ohne Kinder, und mailbox.org schickt ihn selbstschließend (
<D:multistatus … />). Der XML-Parser liefert dafür einen leeren String statt eines leeren Objekts — die Prüfung hielt das für „gar kein Multistatus" und meldete einen Protokollfehler. Betroffen war damit jeder leere Kalender und jedes frisch angelegte Adressbuch, also gerade der Zustand beim ersten Einrichten. Jetzt ist nur noch ein fehlender Wurzelknoten ein Fehler; ein leerer bedeutet schlicht „keine Einträge". Gegen mailbox.org verifiziert: sechs Sammlungen, kein Fehler. - Fehlermeldungen des DAV-Parsers nennen jetzt die Anfrage und den Antwortanfang. Vorher lautete die Meldung an sieben verschiedenen Aufrufstellen gleich, ohne zu sagen, welche Anfrage gescheitert war oder was der Server stattdessen geschickt hat — der Fehler war aus ihr heraus nicht eingrenzbar. Genau daran ist die Ursachensuche oben zuerst gescheitert.
- Die Einstellungen erklären sich jetzt selbst. Jede Zeile sagt, was sie bewirkt — bis dahin standen dort Wörter aus dem DAV-Protokoll ohne Auflösung („Sammlung", „Profil", „Ordner-Override", „Trockenlauf"), und wer CalDAV nicht kennt, hatte keinen Einstiegspunkt. Konkret: „Sammlungen" heißt „Kalender & Adressbücher", und die Seite darunter trägt jetzt den Kontonamen samt Anzahl („mailbox.org — 6 gefunden") statt nur den Kontonamen — vorher sah es aus, als gäbe es genau eine Sammlung, die so heißt wie der Anbieter. „Profil aus der geöffneten Notiz erzeugen" ist eine beschriftete Zeile mit Erklärung geworden statt eines unbeschrifteten Zauberstab-Icons, dessen Bedeutung nur im Tooltip stand (auf Mobilgeräten also nirgends) — es ist der zentrale Einrichtungsschritt und war praktisch unauffindbar. Die Sprachwahl steht nicht mehr unter „Synchronisation", sondern unter „Darstellung"; sie bleibt, weil sie gebraucht wird, wenn man Obsidian in einer anderen Sprache bedient, als man das Plugin lesen will.
- Fix: Der Hinweis an Sammlungen ohne Termine war grammatisch bezuglos („Sie wird nicht gespiegelt; es wäre nichts zu finden") und nannte den Gegenstand nicht. Neu formuliert.
- Fix (still, aber ernst): Eine Einstellungs-Liste zählt ihre Lösch-Funktion über den Index in der Zeilenliste. Eine Erklärzeile darin hätte beim Löschen das falsche Konto getroffen. Erklärungen stehen jetzt neben der Liste statt darin, abgesichert durch einen Test, der jede Liste mit Lösch-Funktion darauf prüft.
0.1.8
- Fix (Sammlungen): Eine Aufgaben-Sammlung sah aus wie ein Kalender und wurde still nicht gespiegelt. Server können
VEVENTundVTODOin getrennten Sammlungen führen (bei mailbox.org ist das der Normalfall) — beide melden<c:calendar/>als Ressourcentyp, aber nur die eine nimmt Termine an. Welche das ist, sagtsupported-calendar-component-set; das Plugin erhob die Eigenschaft zwar bei der Discovery, ließ sie danach aber fallen. Wer die Aufgaben-Sammlung aktivierte, bekam einen Lauf ohne Ergebnis und keinen Hinweis warum. Der Wert wird jetzt bis in die Einstellungen durchgereicht, eine Sammlung ohneVEVENTwird beim Sync mitunsupported-componentsübersprungen, und die Zeile in den Einstellungen sagt es. Sagt der Server nichts (Radicale etwa liefert die Eigenschaft nicht zwingend), ändert sich nichts — es wird nichts angenommen.
0.1.7
- Fix (Discovery): 405 gegen Nextcloud — die Startadresse wurde aus der Anfrage-URL geraten statt aus der Antwort gelesen.
wellKnown()war darauf gebaut, den Redirect von/.well-known/caldavselbst zu sehen. ObsidiansrequestUrlfolgt Weiterleitungen aber selbst (und behält die Methode), also kam dort direkt ein207an — der 301-Zweig war toter Code, und der 207-Zweig gab die angefragte Adresse plus Schrägstrich zurück (/.well-known/caldav/). Bei Nextcloud ist das eine andere Route: sie leitet auf/index.php/.well-known/caldav/weiter und antwortet dort mit 405. Die richtige Adresse steht längst in der Antwort — das<d:href>des Multistatus nennt die Ressource, die der Server tatsächlich beantwortet hat; genau die wird jetzt genommen. Gegen die echte Nextcloud verifiziert: 16 Sammlungen, keine Warnungen.
0.1.6
- Fix (Auth): Die Reparatur aus 0.1.5 griff im Normalfall nicht. Sie erkannte nur Konten, deren Schlüsselbund-Eintrag die eigene ID als Wert trug — entstanden ist der Schaden aber fast immer anders: unter der plugin-eigenen ID lag der Name des Eintrags, den der Nutzer im Dialog vergeben hat. Genau das ist jetzt die Erkennungssignatur (der Wert ist selbst ein vorhandener Eintrag), und der Fall ist verlustfrei: das Konto wird auf diesen Eintrag umgehängt, das Passwort muss nicht neu ausgewählt werden.
repairSelfReferencingSecrets()heißt deshalb jetztrepairSecretLinks().
0.1.5
- Fix (Auth): Kein Konto konnte sich anmelden — jeder Server antwortete 401. Die Passwort-Zeile in den Einstellungen benutzt Obsidians
SecretComponent, und die ist ein Verweis auf einen Schlüsselbund-Eintrag, kein Passwortfeld: ihronChangeliefert die ID des gewählten bzw. neu angelegten Eintrags zurück, nicht dessen Wert. Das Plugin speicherte diese ID als Passwort-Wert und meldete sich fortan mit dem Namen des Eintrags an. Das Konto merkt sich jetzt die ID (account.secretId), und den Wert verwaltet allein Obsidian. Betroffene Konten repariertrepairSelfReferencingSecrets()beim Start automatisch: Sie gelten wieder als unverknüpft, der unbrauchbare Eintrag wird geleert — das echte Passwort bleibt unter der selbst vergebenen ID erhalten und muss nur neu ausgewählt werden. - Fix: Das X an der Passwort-Zeile (Verknüpfung lösen) rief den Rückruf mit
nullauf und lief in einen Fehler statt die Verknüpfung zu lösen. - Beim Löschen eines Kontos wird der Schlüsselbund-Eintrag nicht mehr überschrieben — im Verweis-Modell gehört er dem Nutzer und darf von einem zweiten Konto genutzt werden.
0.1.4
- Fix: Ein per Zwischenablage kopiertes DAV-Passwort mit abschließendem Zeilenumbruch (z. B.
pbcopy < datei) landete unverändert im Schlüsselbund und führte trotz korrekten Passworts zu 401 beim Sync.stripCrLf()entfernt führende/abschließende\r/\njetzt beim Speichern in beidenSecretStore-Implementierungen, ohne sonstige Whitespaces im Passwort anzutasten.
0.1.3
fast-xml-parser4.5.7 → 5.11.0: der Store-Gate-Scan meldet jede Version <5.7.0 (GHSA-gh4j-gqv2-49f6, betrifft nur den nicht genutztenXMLBuilder) als Warning — Bereichs-, nicht Codepfad-Urteil. Parser-Nutzung unverändert, alle Tests grün.
0.1.2
- Plugin-Name
Calendar & Contact Notes→Calendar and Contact Notes: das Developer Dashboard lehnt&ab (Manifest-Regel: keine Satzzeichen außer Bindestrich, Plus und Klammern — docs.obsidian.md/Reference/Manifest#name);eslint-plugin-obsidianmdprüft das nicht, der Fund kam erst bei der Store-Registrierung.
0.1.1
- CI-Gate:
tsconfig.test.jsonziehtscripts/nicht mehr mit — die Treiber importieren die zentrale CDP-Brücke aus dem Dach, die im GitHub-Checkout fehlt;typecheck:scripts(mit Existenz-Guard) deckt sie weiterhin ab. 0.1.0 scheiterte genau daran in der Release-Action (kein GitHub-Release, nie im Store) — 0.1.1 ist der erste veröffentlichte Stand.