Dandelion is a fair source project. View the code on Github
Commits on Jul 26, 2026
| fd2344e |
📝 Update Mailgun settings references to API security
|
| cdd4bad |
🔐 Verify Mailgun webhooks and block javascript: click XSS Unsigned click webhooks could create arbitrary PmailLink URLs rendered to org admins; require HMAC signatures and allow only http(s) links. |
| 1d97fb3 |
Review bugs since the last successful workflow run |
Commits on Jul 25, 2026
| 880472b |
Upgrade Claude Code workflows to Opus 5. |
| dccf59f |
✨ Allow free tickets by setting minimum price to 0 Update ticket price validation and input field to accept 0 as a valid price, enabling the creation of free tickets. Previously, the minimum price was 1, which prevented offering complimentary tickets. |
| 2b6f884 |
🐛 Prompt for a price before ticket quantity selection Explain why variable-price quantity selectors are disabled so customers know how to enable them. |
Commits on Jul 22, 2026
| 86c13ae |
🐛 Prevent notification creation when gathering is nil or being destroyed The after_destroy callback now checks that gathering exists and is not flagged for destruction before creating a notification, avoiding potential errors and dangling references. |
Commits on Jul 21, 2026
| c652134 |
🐛 fix variable price ticket validation and range clamping
|
| ce7c92b |
Notify facilitators of waitlist registrations when order notifications are on. |
| 0f56413 |
✨ Improve Meta Pixel tracking and shared analytics helpers Validate pixel IDs, dedupe Purchase on refresh, add ViewContent, and extract shared analytics/Facebook pixel code. |
Commits on Jul 20, 2026
| bbac53b |
🐛 Fix WhatsApp transcription when media URL has no file extension Whisper infers audio format from the filename; force .ogg, use OpenAI::Client, and raise on blank transcripts so failures surface in Sentry. |
Commits on Jul 18, 2026
| bef1e9e |
🔒️ (models): add protected_attributes to multiple models to prevent mass assignment of sensitive fields
|
| 15516e1 |
🦺 Prevent reassigning organisation and account on existing records Add validation to Activity and LocalGroup models to prevent changing organisation_id and account_id after persistence. This ensures data integrity by preventing accidental reassignment of these critical associations. Also add protected_attributes class method to expose the list of attributes that should not be modifiable after creation. Include tests to verify the new validation behavior. |
| 9d425c3 |
✨ (event_validation.rb): add validation to prevent changing organisation and account on persisted events
|
Commits on Jul 17, 2026
| f77ae1d |
♻️ Simplify event feedback partial structure and consolidate nested conditionals The nested if blocks made the partial harder to read and maintain. By
flattening the structure and using safer navigation ( |
| b6e94d0 |
🐛 Normalize hash carousel_ids to prevent CGI.escape TypeError Fixes DANDELION-30 |
Commits on Jul 15, 2026
| 9ce9918 |
🐛 (pmail_mailgun.rb): return nil when opened_total is zero to prevent invalid rate calculations |
| 9bd384d |
✨ Enable analytics for free gift emails sent via Mailer |
| 5278692 |
🔨 (local_groups_test.rb): wrap test method calls in parentheses |
| 0ed97f5 |
🐛 Preserve local group polygons on failed validation |