What’s Changed
Features
- Checkout UI improvements by @daveearley in #915
- Admin ticket list enhancements by @daveearley in #916
- Locale-aware date formatting by @YoranSys in #782
- Organizer and event homepage redesign by @daveearley in #924
- Attendee ticket lookup by @daveearley in #927
- XML sitemap generation by @daveearley in #931
- EU VAT handling by @daveearley in #893
- VAT number validation by @daveearley in #938
- Extract image metadata on upload (LQIP, dimensions, average colour) by @daveearley in #947
- Disable event templates for unverified users by @daveearley in #948
- Allow passing platform fees to buyers by @daveearley in #956
- Marketing opt-in support by @daveearley in #957
- Platform fee enhancements by @daveearley in #958
- Fathom analytics event tracking by @daveearley in #961
- Admin UTM tracking by @daveearley in #963
- Event ended notice on frontend by @daveearley in #967
- Allow order creators to edit orders and attendee details by @daveearley in #970
- Platform fees reporting by @daveearley in #974
- Superadmin experience improvements by @daveearley in #980
Fixes
- Pin PostgreSQL to v17 to avoid startup issues with v18+ by @d3473r in #912
- Improve Docker Compose security and configuration by @hannes-lehmann in #911
- Fix incorrect product indexing with PER_ORDER checkout by @daveearley in #918
- Fix partial refund input validation by @daveearley in #919
- Fix homepage designer preview rendering by @daveearley in #921
- Fix non-SaaS checkout flow issues by @daveearley in #943
- Backfill missing Stripe payment currency data by @daveearley in #977
- Fix zero-value net application fee edge case by @daveearley in #978
- SSRF and IDOR security hardening by @daveearley in #982
UI and Styling
- Homepage styling refinements by @daveearley in #928
- Mobile sidebar style updates by @daveearley in #950
- Mobile breadcrumb styling updates by @daveearley in #952
- Organizer UI styling improvements by @daveearley in #954
- General style fixes by @daveearley in #930
- New logos and brand assets by @daveearley in #935
Translations
- Italian translation updates by @albanobattistella in #914
- Italian translation updates by @albanobattistella in #926
- Italian translation updates by @albanobattistella in #949
- Fix missing translations by @daveearley in #953
- Replace “Fahrkarte” with “Ticket” by @dsprayman in #934