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

Commits on Feb 01, 2026
1bac339

✨ Add location-based event discovery feature

Introduce a new /near/:near endpoint that lists upcoming in-person events around a given place. A short AI-generated summary is shown first, followed by the standard event blocks, letting users quickly see what’s happening nearby.

Commits on Jan 31, 2026
ab11759

🐛 (event_stats_row/_feedback.erb): guard percentage calculation to avoid division by zero when no attendees are present

7b4f2de

🐛 Fix feedback link visibility logic in event stats row

Remove the extra checks for event.past? and event.attendees.exists? so the feedback link appears as soon as any feedback exists, ensuring consistent UI behavior regardless of event state.

7ba8c46

⚡️ (pagelets.js): limit concurrent pagelet loads to 4 to reduce server pressure
🚸 (pagelets.js): queue pagelets instead of firing all at once for smoother UX
🐛 (_event_stats.erb): drop hard-coded BASE_ADMIN_URI so links work on any domain

Commits on Jan 30, 2026
8f346a0

🐛 Fix broken link when feedback event is missing

1764b3a

✏️ Fix grammar in event field description for monthly donors
🐛 Guard against nil event when rendering feedback notification

c047a24

🐛 (tasks.rake): fix time-window logic for feedback requests Use > and <= instead of >= and < so events ending exactly at the top of the hour are included, preventing missed feedback requests.

a627e34

🐛 (event_notifications): prevent duplicate feedback requests by checking sent_feedback_requests_at
✨ (tasks): move feedback requests from morning to hourly rake task to send them right after events end

Commits on Jan 29, 2026
1246c96

🗃️ Add timestamp fields to track when reminders and feedback requests were sent

57a0826

🔥 Remove unused source_asn field and its assignments

00dd7ee

🔒️ (rack_attack_throttle.rb): add IP-range blocklist to stop abusive traffic at the edge

18c19fc

🗃️ Add source_asn field to track request origin ASN

Store the Cloudflare-provided autonomous-system number so we can later analyse traffic sources at the ISP level.

e446f9d

💡 (events/_blocks.erb): add comment explaining why past events are skipped for co-hosts

fce5979

🐛 (events/_blocks.erb): hide past events that belong to a different organisation

931999c

🔒️ Fix XSS vulnerability in JS challenge response

e818b92

♻️ (sign_in.rb): reorder model declarations to follow Rails conventions

c4c2e5f

♻️ Replace raw env dump with structured request fields

  • Stop serialising the whole Rack env to YAML
  • Introduce RequestFields concern to extract only the relevant parts (path, ip, country, user-agent …)
  • Update every sign_in creation call to pass request instead of env_yaml
  • Unify IP detection between Rack::Attack and models
737940e

🗃️ (PageView): store full request context instead of only path/query
✨ (PageView): enrich analytics with user-agent, referrer, IP and X-Requested-With

dd7fd1e

♻️ Replace future_and_current with future_and_current_featured scope

Introduce new future_and_current_featured scope that returns future events plus featured current-day events, then update every caller to use the new scope instead of the old one.

This lets us keep showing featured events that are running today while hiding non-featured ones that have already started, cleaning up the public listings without losing important content.

0dd7335

💄 Replace `