Dandelion is a fair source project. View the code on Github
Commits on Sep 13, 2026
| 63469c0 |
Clamp /code pagination so a negative page no longer 500s. Fixes DANDELION-3Q |
| 40e59b2 |
Revert "move skills from project to user" This reverts commit b19fca70c1b5ff261dcbbca7e0919895f18a0375. |
| 79b1ac0 |
Sign out in test helpers so account switches still work after magic-link session locking. |
| fa25ecd |
Reject GET password callbacks and stop magic links from swapping sessions. |
| 43e1867 |
Use amount + currency code again in admin contribution emails. Symbol formatting like £3 is harder to scan in admin subjects than 3 GBP. |
| 1294c64 |
Prevent Mailgun recipient tokens from leaking through user-controlled email HTML. |
| dcfb96b |
Stop an abandoned OmniAuth session from attaching to a later signup. |
| 8bdf5ff |
Discover injected wallets via EIP-6963 and accept CRLF SIWE form posts. Modern wallets may never set window.ethereum, and browsers submit the signed message with Windows newlines that siwe-rb rejects. |
| 8fd02f6 |
Merge pull request #234 from symbiota-coop/cursor/siwe-sign-in-c7b0 Replace omniauth-ethereum with Sign-In with Ethereum (EIP-4361) via siwe-rb |
| 9ba897c |
Refresh carousel IDs in place so a failed rebuild cannot wipe live membership. |
| ed4484e |
Store carousel membership on events instead of a per-carousel cache. Listings and carousel queries can filter on event.carousel_ids, rebuilt hourly, without looking up another organisation's carousel. |
| c9826a0 |
Treat carousel-filtered listings like search when blocking scrapers. Drop the leftover carousel_id alias so the public events listing only accepts carousel_ids, matching the filter Rack::Attack now challenges. |
Commits on Sep 12, 2026
| bd0ab51 |
Add rack tests for the Sign-In with Ethereum flow Covers the request-phase message, sign-in for a linked wallet (case-insensitive uid match), signup for an unknown wallet, and rejection of replayed signatures, GET callbacks, forged nonce/domain, and signatures from another wallet. Keys are generated and signed with OpenSSL so no eth gem is needed. Co-authored-by: stephen |
| 0bb83cc |
Replace omniauth-ethereum with an EIP-4361 Sign-In with Ethereum strategy built on siwe-rb The q9f/omniauth-ethereum strategy verified only that a wallet had signed 'Sign in with Ethereum |
| 79e4bec |
Move payment provider name from the event view onto Order. |
| f6f9543 |
Move event access tests into their own file. Keep events_test focused on create/edit, slugs, and reminders, and put manager, cohost, and revenue permission cases in event_permissions_test. |
| 1443551 |
Drop tests that only restate coverage already in a broader case. Fold waitlist subscription checks into the join test, and remove MCP/order/ticket/webhook cases that duplicate a parent assertion. |
| 6f06d7a |
Purge soft-deleted rows between tests |
| 5876f39 |
Don't let nested ticket type/group attributes move records to another event |
| cc4bd26 |
Don't let optionships, teamships or shifts adopt their parent from a child. Gathering and rota must be set by the caller, matching spends and inventory items, so a missing parent cannot skip the same-parent check. |