Hier ist der Changelog als formatierter WYSIWYG-Text, den du direkt kopieren und einfügen kannst:
Changelog — Patch 2026-03-28
Alle Änderungen seit dem Soft Go-Live (2026-03-09, letzter Merge auf main).
Branch: feature/event-hub-umbau — 279 Commits.
Legende: Einträge mit ⏰ wurden in den letzten 48h hinzugefügt und sollten vor dem Patch nochmal geprüft/getestet werden.
Management Summary
Billing & Identity
- ⏰ Identity Re-Zertifizierung entspannt: Wenn ein bereits verifizierter Organizer erstmals Trigger-Felder ausfüllt (z.B.
legal_name,vat_id), wird keine Re-Zertifizierung mehr ausgelöst. Nur tatsächliche Änderungen an bereits ausgefüllten Feldern lösen den Prozess aus. Das unterscheidet jetzt sauber zwischen "Erstbefüllung" und "Änderung". - ⏰ Billing-Portal gehärtet: Strengere Permission-Checks, Identity-Verification enger gekoppelt, Stripe-Polling produktionsreif gemacht. Neuer
billing_policy-Service für Trigger-Feld-Klassifizierung und Drift-Erkennung.
Checkout & Login-Flow
- Login-Modal im Checkout: Gibt ein Gast eine bereits registrierte E-Mail ein, erscheint ein Modal mit drei Optionen: Einloggen, als Gast fortfahren, oder Passwort vergessen. Abhängig von der Account Policy des Events (
required/optional/not_required) wird der Gast-Checkout erlaubt oder das Login erzwungen. - ⏰ Onboarding UI-Redesign: Waitlist-Benutzer können jetzt inline ihr Konto erstellen. Visuell modernisiert (Glassmorphism → solide Flächen).
Templates & Design
- ⏰ Design-Drift über alle 7 Event-Templates behoben: Umfassendes UI/UX-Upgrade mit einheitlichem Checkout-Theming, Light-Mode-Fixes, und Mobile-Optimierung (Safe-Area-Insets, 100dvh, 44px Touch-Targets).
- ⏰ WCAG AA Konformität: Kontrast-Fixes (4.5:1), Fieldset-Legends, aria-live auf Dringlichkeits-Elementen, Focus-Visible überall.
Neue Features
- Google Wallet Integration: Event-Tickets können direkt in Google Wallet gespeichert werden. Lifecycle-Management bei Check-in und Stornierung.
- ⏰ Pre-Event Payout Hold: Automatischer 180-Tage Payout-Hold ab Publish für alle bezahlten Tickets. Sofortige Holds bei Disputes, Force-Release mit Audit-Trail.
- Konfigurierbare Refund Policy: 4 Presets pro Event, Deadline-Anzeige in Checkout, Bestätigungs-E-Mails und Stornierungsseite.
- Feature-Override System: Neuer Admin-Hub-Tab zum Aktivieren/Deaktivieren von Features pro Organizer ohne Deployment.
- Group-Booking: Gruppenbuchungen im Event-Wizard mit konfigurierbaren Rabatten und Per-Person Ticket-Limits.
Ticket-Ansicht & Wallet
- Ticket-View komplett redesigned: Neues Styling, Multi-Ticket Guest-View, Wallet-Download Seite überarbeitet.
- Wallet-Verbesserungen: HiDPI-Logos, adaptive Light/Dark-Varianten, Wide-Logo Fallback.
Organizer Admin
- ⏰ Admin Hub Audit: 33 Fixes — Permissions für 18+ DocTypes, Rate-Limiting auf 8 Endpoints, 90-Tage Retention für Session-Logs, GDPR-Konformität.
- ⏰ Stripe Plan-Wechsel überarbeitet: 14 Audit-Findings (6 Critical) behoben, Expired-Abo Handling, Cache-Resilience.
Security
- ⏰ XSS-Hardening: Alle 7 Templates, Backend-Kontext, Jinja safe_render Fix, Payment-Token-Regex.
- Checkout-Sicherheit: Nonce-Lifecycle, Rate-Limits, Turnstile-Fallback, Timing-Oracle Prevention.
- DSGVO: Consent-Einträge für Stripe/Promo-Free Flows, Privacy Anonymizer gehärtet, PII Redaction.
- ⏰ Alle Plain-Text Mails auf HTML migriert mit Cita Design v2.
- Templates in thematische Subdirectories reorganisiert.
Detailliertes Changelog
🔒 Security & XSS
- ⏰ XSS-Hardening für alle 7 Event-Templates und Backend-Kontext (Escaping, Sanitization)
- ⏰ Double-Escaping in Event-Templates behoben (
str(escape_html())) - ⏰ Jinja
safe_renderFix —window.__durchwindow['__']ersetzt (Illegal-Template-Fehler) - ⏰ Payment-Token-Regex Validierung und Sponsor-Links Absicherung
- Nonce-Lifecycle Härtung im Checkout (Rate-Limits, Turnstile-Fallback, Timing-Oracle)
- Open-Redirect Prevention (GL-W12)
- CWE-209: Generische Error-Messages in API-Responses statt
str(e) - Webhook Fail-Closed Verification (GL-W1, GL-W2)
- Error-Log Sanitization und Housekeeping-Guard
- Limit-System Security-Hardening (Phase 1)
- ⏰ Template-Validation,
rel=noopenerfür externe Links - ⏰ XSS-Escaping für Custom Fields, Membership-Help und Waitlist
💳 Stripe & Payments
- ⏰ Plan-Wechsel komplett überarbeitet — 14 Audit-Findings behoben (6 Critical, 5 High, 3 Medium)
- ⏰ Pre-Event Payout Hold mit
released_byTracking und Force-Release Option (#913) - Refund Policy — konfigurierbare Rückerstattungsrichtlinien pro Event
- ⏰ Checkout Cancel leitet jetzt zur Event-Seite statt
/checkout/cancelled - ⏰ Stripe Preview Fallback für fehlende Upcoming-Invoices + escapeHTML-Hardening
- ⏰ Subscription Guard: fehlende
current_period_end→ Redirect zu Checkout - ⏰ Expired-Abo Checkout-Redirect, Quick-Actions, Cache-Resilience
- ⏰ Stale/Missing Subscription-ID Handling in Preview und Plan-Change
- ⏰ Non-schedulable Subscriptions → Checkout-Routing bei Plan-Change
- ⏰
line.prorationAttributeError behoben (Stripe API Kompatibilität) - Stripe Connect Sync-Konsistenz + Field-Descriptions
- ⏰
stripe_account_idLese-Konsistenz inrelease_payout_hold+ Invariant E-01 - ⏰ Null-safe
current_planSerialization im Stripe Preview Fallback - ⏰ Plan-Selector: XSS-Escape, i18n, Redirect-Validation, submitGuard finally-Pattern
- ⏰ Plan-Selector von sofortigem API-Call entkoppelt, Action-Bar für Dashboard-Mode
- ⏰ Organizer Billing Production-Flow gehärtet
- ⏰ Diagnostic Source in
change_planValidation-Error Responses - ⏰ Production-Readiness Fixes für Stripe Polling Implementation
- ⏰ Consent-Loop bei Plan-Change und Legal-Reconsent gehärtet
- Payment Reconciliation Error-Surfacing und Child-Row Heal
- Payment-Webhook Handling verbessert (mehrere Iterationen)
- P-01 Invariant False-Positives für Free-Ticket und Offline-Registrierungen behoben
🎫 Registration & Checkout
- Guestlist: Approval-Flow, Detail-Panel, Modal-Overhaul, Add-Guest-Flow
- Waitlist: Price-Lock bei Stripe/Cash-Approval, Endpoint akzeptiert
ticket_name, Timing-Guards - ⏰ Group-Members: Cascade-Fix, Child-Table-Sync, Payload-Priority, Metadata-Reader Fallback
- ⏰ Plus-One: Consent-Fields, Membership-Number, Consent-on-behalf Audit-Trail
- ⏰ Custom Fields:
applies_toFiltering korrigiert - Checkout Success Page: Audit-Fixes, CSS-Polish, Dark/Light Logo-Switch, Crew-Section Gating
- Promo-Code: Atomic Usage-Count, Redis-Counter Sync, Lock-Assertion (K-01, K-02)
- ⏰ Cash-Tickets werden jetzt zur Checkout-Success-Page weitergeleitet
min_per_eventEnforcement,max_per_order=0Display-Fix, Capacity-Events- Idempotency-Keys stabilisiert + Waitlist Timing-Guards (W-10)
- Event-Timezone für Age-Validation auf Client und Server (W-05, W-06)
- Guest-Registration: Idempotency, Timezone, Promo Redis-Sync
- Guest-Activation fragt jetzt nach Passwort statt Auto-Aktivierung
- ⏰ Safe Boolean-Coercion in Event-User-API und Promo-Code Canonicalize
- ⏰
canonicalize_emailNone-Safety, +alias Block entfernt - ⏰ Group-Member Stripe-Key Budget und Limit-Fixes (15a/15b/15c)
- Guestlist: Bypasses
min_per_event, nutzt direktescheck_person_ticket_limits - Approval-Notification Fallback zu Event-Owner (H-07, HK-02)
- Backtick-Quote für Reserved Words in Feature-Definition Queries
- Normalize
EVENT_PERSON_MINIMUM_NOT_METError-Code über alle Endpoints max_combined_discount_percentim Ticket-Wizard UI- Checkout-Nonce: Cleanup in SSR verschoben, Approval-TTL, Polling-Hardening
- Hidden-Access Feature für Events
- Konsistente Preisdarstellung bei Gruppenbuchungen
- Promo-Code Usage-Tracking und Ticket-Pricing Display
- Ticket-Wizard Step-Validation und Custom-Fields Fix
- Group-Booking im Event-Wizard und Per-Person Ticket-Limits
📧 Email & Notifications
- ⏰ Plain-Text Mails → HTML migriert mit Template-CSS
- Email-Templates in thematische Subdirectories reorganisiert (Cita Design v2)
- ⏰ Email-Resilience, Privacy-Hardening, Refund-Template Refactor
- ⏰ Announcement Broadcasts und Organizer Services
- Wartelisten-E-Mail: Irreführende Ticket-Sektionen ausgeblendet
- ⏰ Onboarding-Accounts von Connected-Account Restricted-Alert ausgeschlossen
- ⏰ Unused
section_tickets.htmlFallback-Template entfernt - Unstyled Welcome-Email nach Account-Activation entfernt
🎨 Templates & UI/UX
- ⏰ Umfassendes UI/UX-Upgrade für alle 7 Event-Templates und Checkout-Flow
- ⏰ Checkout-Theming und Light-Mode-Fixes
- ⏰ Sticky Summary, Micro-Interactions, A11Y-Verbesserungen
- ⏰ Footer-Legal-Links, Sticky CTA, i18n
- ⏰ Focus-Visible, High-Contrast, Template-Theming
- ⏰ Onboarding UI-Redesign und Waitlist inline-Login
- ⏰ Checkout CSS: Checkbox, Person-Cards, Consent und Waitlist Styling
- ⏰ Event-Templates: i18n, A11Y, Announcements-Filter und CSS-Polish
- ⏰ Design-Drift behoben über alle 7 Checkout-Templates
- ⏰ Inline Login Panel: UI-Polish, Accessibility, State-Fixes
- ⏰ Frontend Comment Cleanup für Production-Readiness
- Checkout Success Page CSS-Polish
- Ticket-Section Templates konsolidiert und Theme-Cleanup
- Slide-Editor: Group-linked Order-Limits, Feature-Combo Validation
- Approvals UI: XSS-Escaping, Double-Click Prevention, Notification Warnings
- Admin Hub Feature-Override Dialog: Select-Field, Debug-Panel, Toggle-Helper
- ⏰ Support-Seite auf CITA Component Library migriert
👤 Organizer Admin
- ⏰ Admin Hub Audit: 33 Fixes (Security, Permissions, Business Logic, GDPR)
- Feature-Override System: Validation-Service, CRUD API, Admin-UI mit Tests
- ⏰ Billing Production-Flow Hardening
- Branding Quick-Cards Feature-Gating und Wallet-Preset Expansion
- ⏰ Plan-Selector Refactoring (entkoppelt von sofortigem API-Call)
- PermissionError-Fixes für Organizer-Admin
save()-Calls (11+ Stellen) - System-Field Guard Refactoring und Organizer Read-Only Permissions (CC04-002)
- Organizer Dashboard Layout und Styling
- Branding Management mit Utils und Quick-Cards
- Event-Creation, Media-Handling und Detail-View Verbesserungen
- Participants Management, Tag-Modal und Group-Members
- Organizer Visitenkarte Anpassungen
- Consent Admin
🪪 Identity & Verification
- ⏰ Identity Verification: Initial Trigger-Backfill ohne Recertification
- Weekly Report mit Status-Summary (verified, blocked, in-progress)
- Stripe Identity Verification Verbesserungen
- Age-Verification Mode Support in Organizer Add-Guest Flows (GL-03)
📱 Wallet & Tickets
- Ticket-View Page Redesign mit neuem Styling und Interactions
- Multi-Ticket Guest-View und Registration-Flow Overhaul
- Wallet Download Page Redesign
- Google Wallet Integration für Event-Tickets
- HiDPI Logo Resolution für Wallet-Passes
- Adaptive Wallet Logo mit Light/Dark Varianten
- Wide Logo Fallback und Passbook-Path Resolver
- Cita Logo Constraint auf 40% Width-Zone
- ⏰ Ticket-View Security: Event-Slug in URL-Fragments, Resend-Links in allen Email-Paths
- Wallet-Pass Generation Cleanup und Logging
🛡️ DSGVO & Compliance
- DSGVO/AGB Cita Consent-Einträge für Stripe Checkout + Promo-Free Flows (K-03)
- Plus-One Consent-on-behalf Audit Trail (W-19)
- Privacy Anonymizer Hardening mit zusätzlichen Tests
- PII Redaction in Billing-Stubs
- ⏰ Unified Email-Validation
- Error-Log Sanitization
🔧 Infrastructure & Cleanup
- ⏰ Fixture-Audit: Fehlende Gate-Events, Feature-Pairs, Templates und Event-Settings
- Heartbeat Utility hinzugefügt
- ⏰ Debug-Logging für Plan-Wechsel-Flow (Frontend + Backend)
- ⏰
frappe.log_errormit echtem Traceback statt statischem String - ⏰ Obsolete Ticket-Audit-Dokumente und Planning-Dokumente entfernt
- ⏰ Unused
section_tickets.htmlFallback-Template entfernt - Event Registration DocType JSON Indentation reformatiert
- Abhängigkeiten aktualisiert
- Subscription Plan-Konfiguration aktualisiert
- One-Off Script zum Archivieren von MVP-Events vor Feedback-Scheduler
- AB/BA Deadlock bei Guest-Token Metadata-Writes behoben
- Auth Cache Validation + Session-Timeout Redirect-Loop behoben
- Distributed Locks und Cache-Invalidation Race-Fix für Feature-Overrides
- Branding Image MIME-Validation gelockert (akzeptiert valide Magic-Bytes)
- ⏰ Checkin Realtime Access-Control und Staff-Messaging Bugs behoben
- Nav-Labels: Nicht mehr durch
_()übersetzen - i18n Wrap für
group_membersError-Messages
Generiert am 2026-03-28 aus 279 Commits auf feature/event-hub-umbau seit Merge-Base 276a1890 (2026-03-09).