v1.0.8
Behoben
- Das „x" am „Nur Endorte"-Hinweis schloss nicht. Die Markup war eine
Bootstrap-alert-dismissible-Box, aber ohnedata-bs-dismiss="alert"— das
Schließen hing allein an einem eigenen JS-Handler. Jetzt schließt Bootstrap den
Hinweis nativ (zuverlässig, ohne JS-Abhängigkeit); das Merken (nicht erneut
zeigen) läuft über eine robuste Event-Delegation + In-Memory-Flag, sodass es
auch bei blockiertemlocalStorage(Privacy-Modus) sofort wirkt.
Hinzugefügt
- „Letzte Zusammenführungen" mit Rückgängig direkt auf der Ortsliste. Bisher
war der Undo-Button nur im Merge-Ergebnis-Popup erreichbar — nach dem Schließen
war er weg, obwohl die Operation (samt Backup) rückrollbar blieb. Jetzt listet
ein Abschnitt die letzten Merges/Umbenennungen (ausortsregister_merge_log)
mit Datum, Quelle → Ziel und einem „Rückgängig"-Knopf; bereits zurückgerollte
Operationen sind markiert. Nutzt den bestehenden, jetzt getesteten Undo-Pfad;
der Undo-Handler funktioniert dadurch aus Liste und Popup. de/en/nl.
Intern
- Merge-Sicherheitsnetz jetzt integrationstestbar + getestet. Die
datensatz-bezogene Kernlogik von Merge/Undo (PLAC-Ersetzung anwenden,
Undo-Restore, Stale-Erkennung) hinter eine schmale Naht gezogen
(RecordStore-Interface +PlaceRecordMutator); Produktion nutzt
WebtreesRecordStore(dünner Wrapper umGedcomRecord::updateRecord),
Verhalten unverändert. Neuer Integrationstest (PlaceRecordMutatorTest, DB-frei
über In-Memory-Store) belegt die drei bisher ungeprüften Garantien: (1)
Rollback — ein Schreibfehler mitten im Merge lässt in der Transaktion keinen
Teilzustand zurück; (2) Undo stellt den Vor-Merge-Stand byte-identisch her;
(3) Stale-Schutz meldet fremd geänderte Records → All-or-Nothing-Abbruch.
Geändert
- Toten Code des deaktivierten Koordinaten-Imports entfernt
(CoordinateImportPage): Die abgeschaltete Alpha-Implementierung lag als
unerreichbarer Code hinter einem early return und zog eine ungenutzte
Service-Abhängigkeit nach. Entfernt → PHPStan-sauber; die „deaktiviert"-
Hinweisseite bleibt, ein Rework holt die Logik aus der Git-History. - Hardcodiertes
customModuleLatestVersion() { return '1.0.0'; }entfernt — es
meldete dauerhaft „latest = 1.0.0" und hätte einen Update-Hinweis ohnehin nie
ausgelöst. webtrees' Trait-Default greift jetzt (gibt die installierte Version
zurück → Control Panel zeigt sauber „aktuell"). Kein Verhalten für Nutzer
geändert, nur irreführender toter Code weg.
Full Changelog: v1.0.7...v1.0.8