Changelog – Widerrufs-Button¶
Alle veröffentlichten Versionen mit den wesentlichen Änderungen.
1.4.3 — Juni 2026¶
Behoben
- Footer-Button-Visibility in TWT/ThemeWare-Themes (z. B. ledclusive.de): Body-Level-MutationObserver + 6 Retry-Zeitpunkte (1.5 s / 3 s / 5 s / 7.5 s / 10 s / 15 s) decken jetzt das Theme-Cleanup-Fenster ab. Neuer
.footer-contact-form-Anker als Tier 1b für stark angepasste Themes mit eigener Footer-Struktur. - Aggressive Cleanup-Schleife: Theme entfernte unsere Body-Sibling-Injection innerhalb von ~500 ms wieder; neue Retry-Strategie + Observer-Mechanismus garantieren langfristige Sichtbarkeit.
1.4.2 — Juni 2026¶
Behoben
- Footer-Button-Sichtbarkeit per Visibility-Probe: 150 ms nach jedem Inject wird per
getBoundingClientRect()+offsetParentaktiv geprüft, ob unser Wrapper im Layout gerendert ist. Wenn nicht (TWT-Strict-Slot-CSS), fällt der Button automatisch auf Body-Sibling-Position zurück.
1.4.1 — Juni 2026¶
Behoben
- Footer-Button bei asynchroner Footer-Hydration: Themes wie ThemeWare TWT (
twt-element-*-Markup) rendern den Footer nach DOMContentLoaded neu. Der Inline-JS-Loop läuft jetzt mehrfach (DOMContentLoaded, +300 ms, +1 s, +2.5 s,window.load) plus MutationObserver re-injiziert nach Theme-Re-Rendering.inject()bleibt idempotent über den.kommora-withdrawal-footer-link-Marker.
1.4.0 — Juni 2026¶
Neu
- Teil-Widerruf einzelner Bestellpositionen (§ 356a BGB): Kunde wählt auf der Bestätigungsseite per Checkbox aus, welche Order-Positionen er widerrufen will. Standard: alle Häkchen aktiv = vollständiger Widerruf (wie bisher). Bei Teilauswahl wird ein Snapshot (
line_itemsJSON:[{lineItemId, label, quantity}, …]) zum Zeitpunkt der Einreichung am Widerruf gespeichert und im Backoffice + Kundenkonto angezeigt. Spätere Order-Änderungen verändern den Snapshot nicht. - „Meine Widerrufe" im Kundenkonto: neue Route
/account/withdrawalslistet alle Widerrufe des eingeloggten Kunden mit Status-Badge, Datum, Bestellnummer, ggf. Teil-Widerruf-Positionen und Ablehnungs-Hinweis. Sidebar-Link wird automatisch eingeblendet, wenn die Account-Menü-Platzierung aktiv ist. - Widerruf ablehnen mit Begründung (§ 312g Abs. 2 BGB): neuer roter Button „Widerruf ablehnen" im Backoffice-Detail mit Modal. Dropdown mit 5 vordefinierten Rechtsgrundlagen + „Sonstiges" (Sonderanfertigung, schnell verderbliche Ware, Hygiene-Versiegelung entfernt, entsiegelter Datenträger, untrennbar vermischt), Pflicht-Freitext-Begründung, sendMail-Checkbox. Status
rejectedmit eigener roter Badge in Liste, Detail und Kundenkonto. Neue Mail-Vorlagekommora_withdrawal_rejectedmit wörtlicher Begründung. - Fristbeginn-Option „Bestellung abgeschlossen": dritte Auswahl neben „Bestelldatum" und „Versanddatum". Nutzt den Wechsel des Order-State auf
completedals Fristbeginn — sinnvoll für Dienstleistungs-, Software- und Abo-Verträge ohne physischen Versand. Fallback auf Bestelldatum, solange die Order noch nicht abgeschlossen ist.
Behoben
- „Widerrufslink in Bestellbestätigung anzeigen" war seit Einführung wirkungslos (Config-Feld ohne Code-Verdrahtung). Neuer Mail-Subscriber hängt jetzt einen rechtssicheren Widerrufs-Hinweis-Block mit Link direkt an HTML- und Plain-Body der Bestellbestätigung an — funktioniert ohne Mail-Template-Anpassung. Sprache wird heuristisch aus dem Mail-Body erkannt (DE/EN).
- Footer-Button bei eingeklapptem Hotline-Akkordeon sichtbar: Anker-Erkennung prüft Bootstrap-Collapse-Zustand und hängt den Button bei zugeklapptem Akkordeon an die Spalte selbst (statt in den Collapse-Inhalt) — unter der Hotline-Sektion und immer sichtbar.
- Footer-Button-Fix für Themes mit leerem
<p class="footer-contact-hotline">-Platzhalter: der frühere Tier-2-Selector matchte das leere Inline-<p>, unser Block-Element-Button landete dadurch in einem Inline-Element und wurde silently vom Browser aus dem Layout geworfen. Selector ist raus, Spalten-Tier greift sauber.
1.3.3 — Juni 2026¶
Behoben
- Admin-Menü-Eintrag „Widerrufsbutton" unter „Bestellungen" auf SW 6.5 / 6.6 wiederhergestellt: in den 1.2.9–1.3.2-Paketen fehlten die vorkompilierten Admin-Bundles (
src/Resources/public/administration/js/undassets/) — der Build-Schritt hatte sie aus dem ZIP gedroppt. Shopware 6.5/6.6 laden Admin-Module ausschließlich aus diesen vorkompilierten Bundles, daher wurde das Modul ohne sichtbaren Fehler nicht registriert. Auf 6.7 fiel das nicht auf, weil Vite die Sources zur Laufzeit kompiliert.
1.3.2 / 1.3.1 / 1.3.0 — Juni 2026¶
Behoben (Theme-Robustheit)
- Footer-Button korrekt unter Spalten-Inhalt platziert statt im Collapse-Trigger-Header (MAN, Opel-Collection): die Heading-Suche per
closest('[class*=footer-column]')matchte zuvor die Headline selbst (footer-column-headline) und der Button landete im Collapse-Trigger → Klick triggerte Bootstrap-Collapse statt Navigation. Korrektur: Suche startet jetzt vom Parent-Element der Heading. - Kompakter Button-Stil (
padding:6px 12px,font-size:13px,line-height:1.4) entsprechend Bootstrap-btn-sm. - Capture-phase Click-Handler für Themes, die Klicks abfangen (Smooth-Scroll-Hijacker, SPA-Router, Newsletter-Form-Submit-Listener).
- Eigene
kommora-withdrawal-footer-btn-Klasse statt Bootstrap-.btn .btn-primaryplus explizite Inline-Styles fürposition:static,display:block,float:none— robust gegen Themes, die Bootstrap-Button-Klassen mitposition:absolute/float:rightüberschreiben. - Tier-5-Fallback mittig zentriert statt links unten in der Ecke (TÜV-Theme-Fall): Bei reinem Last-Resort-Append an
<footer>wird der Wrapper jetzt mittext-align:center; width:100%; margin:24px autogestylt. - Mehrstufige Anker-Erkennung (5 Tiers): Admin-Custom-Selektor → Standard-Shopware-Hotline-Spalte → Heading-Text-Suche → letztes
.footer-column-content-inner→ Footer-Sibling. Neues Config-Feld „Eigener CSS-Selektor für Footer-Anker (optional)" unter Darstellung.
1.2.x (Customer-Polish-Releases) — Mai/Juni 2026¶
- 1.2.9 Cart-Icon Mini-Button, Worker-Lock-Fix, Plausi-Check raus + interner Hinweis bei Name-Abweichung, Kommora-Prefix für Mail-Templates, CSS-Override für Button-Stil-Fix
- 1.2.8 Async-Worker-Lock-Fix bei Mail-Versand (Customer-Hotfix)
- 1.2.7
submittedAtalsDateTimeInterfacean Twig (statt ATOM-String) - 1.2.6 Status-Mails (in Bearbeitung / abgeschlossen / Rückerstattung), Refund-Tracking
- 1.2.5 Plausi-Check raus, stattdessen interne Notiz bei Name-Abweichung
- 1.2.2 – 1.2.3 Name als Pflichtfeld im Widerrufsformular (§ 356a Abs. 2 Nr. 1 BGB)
1.2.0 — Juni 2026¶
Neu
- Wählbare Bestell-Identifikation für ERP-Setups. In der Plugin-Konfiguration kann jetzt unter „Bestell-Identifikation" gewählt werden, ob der Kunde im Gast-Widerrufsformular die Shopware-Bestellnummer eingibt (Standard) oder eine externe Nummer aus einem Custom Field der Bestellung (z.B. die ERP-Bestellnummer). Bei aktivierter ERP-Option erscheint ein Dropdown mit allen Custom Fields, die einem Custom-Field-Set mit Bezug zur Bestell-Entität zugeordnet sind – kein manuelles Tippen technischer Feldnamen nötig. Optionaler Fallback auf die Shopware-Bestellnummer (Default an), damit Altbestellungen ohne gepflegte ERP-Nummer für den Kunden auffindbar bleiben.
- Das Auswahl-Dropdown für eingeloggte Kunden zeigt im ERP-Modus die externe Bestellnummer als primären Wert, mit der Shopware-Bestellnummer in Klammern – konsistent mit dem, was der Kunde auf Rechnung/Lieferschein sieht und was Ihr Backoffice führt.
- Eingegebene externe Bestellnummer wird im Widerruf gespeichert (neue Spalte
external_order_identifier) und in der Admin-Liste sowie auf der Detailseite angezeigt. Die Twig-VariableexternalOrderIdentifiersteht in den Mail-Templates und im Flow-Builder-Eventkommora_withdrawal.submittedzur Verfügung.
→ Detail: ERP-Bestellnummer einrichten
1.1.9 — Mai 2026¶
Geändert
- Konfigurationsoption „Optionale Begründung anzeigen" standardmäßig deaktiviert. Hintergrund: Mit Artikel 11a der RL 2011/83/EU (Anwendung ab 19.06.2026) bzw. § 356a BGB n.F. wird die Abfrage des Widerrufsgrunds – auch als optionales Feld – herrschend als unzulässige Erschwernis des Widerrufs ausgelegt. Shop-Betreiber, die die Begründung trotzdem anzeigen möchten, können die Option im Plugin-Konfig weiterhin aktivieren; ein deutlicher Compliance-Hinweis im Helptext weist auf die Rechtslage hin.
Behoben
- Postleitzahl im Gast-Widerrufsformular war fälschlich als Pflichtfeld markiert. Sie ist jetzt eine freiwillige Angabe und dient – wenn ausgefüllt – nur noch als zusätzliche Identitätsprüfung. Identifizierung der Bestellung erfolgt zuverlässig über E-Mail-Adresse + Bestellnummer (beides aus der Bestellbestätigung verfügbar).
1.1.8 — Mai 2026¶
Neu
- Konfigurationsoption „Keine zeitliche Vorfilterung (alle Bestellungen anzeigen)". Wenn aktiviert, werden dem Kunden alle Bestellungen ohne Vorab-Berechnung einer Widerrufsfrist und ohne Anzeige verbleibender Tage angezeigt. Hintergrund: Mit Art. 11a RL 2011/83/EU (Anwendung ab 19.06.2026) muss die Widerrufsfunktion „während der gesamten Widerrufsfrist verfügbar" sein. Da die gesetzliche Frist nach § 356 Abs. 2 Nr. 1 BGB erst mit Erhalt der Ware beginnt, kann eine Vorfilterung anhand von Bestell- oder Versanddatum den Button bei langen Lieferzeiten zu früh ausblenden.
1.1.7 — Mai 2026¶
Behoben
- Unterverzeichnis-Installs: Der Button generiert die URL jetzt über den Shopware-Router. Auf Shops unter
https://shop.tld/subverzeichnis/public/wird der Basis-Pfad automatisch berücksichtigt; vorher führte das zu HTTP 500.
1.1.x (frühere Versionen)¶
- 1.1.6 Kleinere Bug-Fixes
- 1.1.4 Mail-Versand-Stabilität
- 1.1.3 Footer-JS-Fallback für aggressive Themes
- 1.1.2 Theme-robuster Footer-Button (ThemeWare/TWT)
- 1.1.1 Vereinfachung der Konfiguration (Button-Pfad-Option entfernt)
- 1.1.0 Shopware-6.7-Kompatibilität, Custom CompilerPass für Twig-Injection
1.0.x (Initial-Releases)¶
- 1.0.6 / 1.0.7 / 1.0.8 Direktversand statt Flow-Builder-Roundtrip, dynamische Route, Pfad-Konfiguration
- 1.0.4 Resend-Funktion (Admin-Button + CLI)
- 1.0.3 Resend-Funktion mit 60-Sek-Cooldown
- 1.0.2 Flow-Storer für SW 6.5+6.6-Kompatibilität, Twig-Injection
- 1.0.0 → 1.0.1 Initial Store-Release
Versions-Hinweise zur Compliance 19.06.2026¶
| Plugin-Version | Compliance-Status |
|---|---|
| < 1.1.8 | nicht vollständig konform – Vorfilterung kann Button zu früh ausblenden |
| 1.1.8 | konform, wenn „Keine zeitliche Vorfilterung" manuell aktiviert |
| 1.1.9+ | konform-bereit – PLZ optional, Begründung Default aus, „Keine Vorfilterung" verfügbar |
| 1.2.0+ | konform + ERP-Setup-Unterstützung |
| 1.4.0+ | konform + Teil-Widerruf (§ 356a), Ablehnung mit Rechtsgrundlage (§ 312g II), „Meine Widerrufe"-Kundenkonto, Fristbeginn „Bestellung abgeschlossen" für Dienstleistungs-Verträge |
| 1.4.3+ | konform + Theme-Robustheit für TWT/ThemeWare und exotische Custom-Themes (MAN, Opel, BPW, TÜV, ledclusive) |
Empfehlung: Wenn Du noch < 1.1.9 bist, vor dem 19.06.2026 updaten.
→ Zurück zur Übersicht