Dandelion is a fair source project. View the code on Github

Commits on Nov 22, 2025
6d4ba28

💄 (reminder_starred.erb): add header with event name and tickets table to email layout
🐛 (event_notifications.rb): include missing when_parts data for starred-reminder recipients
✨ (event_notifications.rb): render tickets table inside starred-reminder email

4fbf7e0

🐛 Fix nil-safe check before accessing account.private?

3adf863

♻️ Extract event-details table into reusable partial
🎨 Add tickets_table partial to ticket, order and reminder emails

Commits on Nov 20, 2025
37491f0

📝 Add testing instructions to pre-commit hook

b9158fc

📝 Add testing instructions to AGENTS.md

b3c4222

✨ Add factory definitions for join models (organisationship, activityship, local_groupship)
♻️ Replace inline model creation with factories in activity applications test

fedcb34

👷 (ruby.yml): add dynamic test file matrix generation to automatically discover and run all test files

a963263

📝 Remove outdated test instructions from AGENTS.md
🧪 Remove flaky assertion in activity_applications_test.rb

8a60f07

📝 Add test instructions to AGENTS.md
✅ Add integration tests for activity applications
💄 Add mb-1 spacing to activity action buttons

af7dbeb

🐛 Fix: change port variable case from lowercase port to uppercase PORT to improve semantics
✨ Feat: add support for process.env.PORT so the server can run on a configurable port

22fec59

🐛 Fix quantity selector path in pay-what-you-want flow

The slider and number-field now correctly locate the related quantity input inside the nested DOM structure.

0c81bb5

💄 Improve UX for pay-what-you-want ticket price input

16cab87

🐛 Fix price validation message in ticket type partial

dd6ce7b

💄 (purchase/_ticket_type.erb): remove placeholder text from price field to avoid confusion
💄 (purchase/_ticket_type.erb): add “Set a price first” hint when no price is defined

9e73ab9

🐛 (purchase.js): enforce + prefix on phone numbers to ensure valid international format
💄 (_purchase.erb): re-show phone field if existing number lacks + prefix
🎨 (_ticket_type.erb): replace separate “Set a price first” label with inline placeholder

902039a

♻️ Move WhatsappMessaging include from OrderNotifications to Order

be017e5

🐛 (whatsapp_messaging.rb): remove private keyword to expose whatsapp_configured? method

a09fda7

🛂 (whatsapp.rb): restrict audio transcription to admin accounts only

63bb011

♻️ Extract WhatsApp messaging logic into reusable concern

  • DRY up duplicated code between OrderNotifications and Pmail
  • Add WhatsappMessaging concern with shared helpers
  • Simplify send_whatsapp_order_link and send_whatsapp_messages
4cda33c

♻️ (order_notifications): refactor WhatsApp template name env var to use ORDER-specific key
♻️ (order_notifications): extract truncation logic to respect template header length
♻️ (order_notifications): remove redundant begin/rescue wrapper and let method-level rescue handle it


✨ (pmail): add WhatsApp notifications for new event-related mails
♻️ (pmail): reuse existing phone-normalization logic for WhatsApp messages