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

Commits on Jan 06, 2026
181e9ed

💄 (events_build): replace dashed-border block with styled well and input-group for affiliate credit percentage

272094d

🐛 Fix HTML sanitization to strip tags instead of escaping them

Replace Sanitize.fragment with Nokogiri HTML parsing to extract plain text, ensuring user content is cleaned without breaking display.

Commits on Jan 05, 2026
d248307

♻️ Rename parameter organisation → cohost for clarity

The method now receives a co-host object instead of a generic “organisation”, making its purpose self-documenting and avoiding confusion with the main event organiser.

a2c96de

🎨 (event_stats_row/_buttons.erb): re-indent inline JS for better readability

8b71d86

♻️ rename Event#display_image_source_for → image_source

Drops the redundant “display_” prefix and keeps the method concise while preserving the same behaviour across controllers, helpers and views.

b6e0ebe

♻️ Extract cohost/event image selection logic into display_image_source_for

Replace duplicated cohost-vs-event image picking with a single model method. This keeps controllers, helpers and views focused on presentation and eliminates three near-identical code blocks.

a6bca81

♻️ Extract duplicated image-source logic into Event#display_image_source_for

  • DRY up three templates that repeated the same cohostship vs. event image decision
  • New helper returns the actual record (Cohostship or Event) to use, letting views simply ask for its image and dimensions
  • Keeps behaviour identical while shrinking templates and preventing future drift
525942a

🎨 (events.erb): remove environment-based image toggle and always show images when present

9b36965

♻️ (views): remove hard-coded full_width flag and simplify image column logic

  • Drop the obsolete full_width variable
  • Let layout width depend only on presence of event.image
  • Keep behaviour identical while trimming duplicated conditionals
523d346

🔒 (notification.rb): sanitize user-generated text in notification messages to prevent XSS

b8e97f9

🩹 Sanitize user-supplied text fields before validation

  • Introduce constant SANITIZED_FIELDS listing attributes that must be stripped of HTML tags
  • Add before_validation callback sanitize_fields that removes any HTML from name, title and subject using Sanitize.fragment
  • Prevents stored XSS when these fields are rendered later
e2ce78e

🔒️ Add protected_attributes class method to payment models

Declare payment_completed as protected in Donation, Order, Payment and Ticket so it can no longer be mass-assigned via public API calls. This prevents clients from manually marking payments as completed and enforces that only internal business logic can flip the flag.

eebead8

🔧 (.eslintrc.js): remove obsolete global declarations to clean up config
🗃️ (models/organisation.rb): add protected_attributes list to safeguard paid_up fields

22647d5

🐛 Fix Mailgun upsell link placement in pmails view

f5dc828

🐛 Fix free-tier message logic to show “sending…” when mail queued

Commits on Jan 04, 2026
edc9e21

🩹 Add client-side phone validation with country-code hint

Commits on Jan 03, 2026
daf7064

💄 Add right margin to event labels for better spacing

Commits on Jan 02, 2026
bc286b6

♻️ (searchable.rb): add fuzzy matching to text search with maxEdits=2 and prefixLength=2

59cddfd

♻️ (search_helper): narrow event search scope from 1 month to 1 week ago

c5adb08

♻️ (search_helper): simplify event deduplication logic to use uniq by name and location instead of manual earliest filtering