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

Commits on Sep 16, 2026
6e70d69

Move organisation payment fields and validation into their own concern.

aeaae96

Move refunds, badges, and purchase errors onto EventPaymentMethod.

Adding a processor should mean a registry entry and its lib file, not another if/elsif chain in Order, Ticket, and the purchase controller.

336661d

Let organisations take event payments through Mollie.

2a25c63

Let event mailers email ticket type waitlists.

The existing Waitlist To option only covered the event-wide waitlist, so organisers with people waiting on ticket types saw a send count of 0.

d5ab2dc

Publish a robots.txt so crawlers have allow and disallow rules.

Commits on Sep 15, 2026
a558371

Expect leftover decoded markup after a single name sanitise pass.

One Nokogiri pass strips the Mailgun token but leaves the decoded img text; the tests now match that instead of requiring a second strip.

b5aaff3

Hide GoCardless checkout on non-GBP/EUR events.

Instant Bank Pay only supports UK and Eurozone currencies, so SEK events were failing at billing-request creation. Fixes DANDELION-3R.

b35549f

Stop re-parsing names until a fixed point on every save.

One Nokogiri pass is enough; nested Mailgun tokens are already stripped by EmailHelper, and the loop made sanitise quadratic in attacker-controlled input.

7a434bf

Only complete Open Collective bookings when the contribution is paid.

Abandoned or failed OC checkouts stay NEW/ERROR/CANCELLED, but Dandelion was matching those orders and marking tickets payment_completed. Ask OC for PAID and ACTIVE contributions only, skip any other status, and page through the GraphQL results.

Co-authored-by: stephen

8ddeaa5

Replace Object#presence with explicit present? and blank? checks.

Commits on Sep 14, 2026
d540b5f

Ignore memoized deleted accounts and leftover cookies when signing in via magic link.

d5621a0

Allow magic-link sign-in when the session account no longer exists.

A leftover account_id for a deleted account was treated as a live session, so later booking tests RSVPed as guests and never reached the confirmation page.

ccc8a2a

Merge pull request #238 from symbiota-coop/cursor/mailgun-token-strip-fixed-point-262b

Keep stripping Mailgun recipient tokens until none remain

4273dd8

Fix overlapping-token strip assertion to ignore leftover whitespace.

Co-authored-by: stephen

4ca89fe

Keep stripping Mailgun recipient tokens until none remain.

A single-pass gsub left overlapping tokens intact, and entity-decoding in sanitize_fields could reassemble markup. Loop both until the value stops changing so saved names cannot keep %recipient.token%.

Co-authored-by: stephen

81593ab

Stop Mailgun sign-in tokens leaking through saved names.

dea6b02

Clarify that star ratings are public and only written answers can be quoted.

7437961

Count only current star ratings in feedback averages.

Deleted and unrated feedback was inflating the "from N ratings" figure on organisation and profile pages.

Commits on Sep 13, 2026
e54822b

Ask buyers to confirm before booking another ticket for the same email.

2d0663b

Bind Bluesky OAuth logins to the DID resolved from the handle.

Without this check a malicious authorization server can return any public DID in token.sub and take over a linked account.