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

Commits on Oct 08, 2025
051649f

💄 (facilitators): enable full-screen map view on facilitators map page

0b7f29d

🚚 Move facilitator routes to dedicated controller and add map view

384e832

🔧 Add 10-minute timeout to Ruby test retry step

4edd651

👷 (ruby.yml): wrap test run in retry action to auto-retry flaky tests up to 3 times

c9ad4e5

✨ Allow one-click unsubscribe via signed link
🐛 Fix redirect loop when not signed in
🎨 Show confirmation page after unsubscribe

a894239

🐛 Fix unsubscribe flow to use sign-in code instead of session
♻️ Replace token with account_id in unsubscribe link to match new auth

6ad9b24

✨ Introduce sign-in-code flow for sensitive pages
♻️ Replace sign_in_required! with sign_in_code_required! on /edit and /subscriptions
🐛 Fix redirect loop after code sign-in by honoring session[:return_to]
📝 Update e-mail links to use account_id instead of sign_in_token

Commits on Oct 07, 2025
432f7cc

✨ Add notifications for starred events

da96ccb

♻️ (accounts,sign_in): replace inline generate_sign_in_token with bang-method
✨ (account): add generate_sign_in_token! that persists the new token immediately

ec5b8cb

♻️ Refactor sign-in token generation to avoid collisions
✨ Add uniqueness validation for sign_in_token
🔧 Replace direct token assignment with instance method for clarity

d426d7b

✨ (pmails.rb): move duplicate action before update to preserve to_option value
🎨 (_to_options.erb): reorder event options to appear before organisation options

9d7f563

💄 Fix image spacing in email templates

00130a4

💄 Add muted caption styling for media elements in email template

d409218

✨ (accounts.rb): generate and assign a new sign-in token before sending the code

Commits on Oct 06, 2025
cc7cad9

🔒️ (sign_in): reject expired sign-in tokens to close session-hijack window

Commits on Oct 05, 2025
86b20a4

🎨 (followers.erb): remove extra form-row wrapper to simplify layout and align checkboxes

11e3227

🐛 (account_notification_cache): guard invalidate! against destroyed records

0c47499

✨ Replace regex search with dedicated search method for activities, local groups and pmails

92ff175

♻️ (activity_applications): replace separate name/email filters with unified search param
✨ (activity_applications): add Account.search scope to handle combined name/email queries

ba2acec

♻️ Replace name/email filters with unified search param

  • Replace separate name/email filters with a single search param
  • Use Account.search to handle the search logic
  • Update views to use a single search input field