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

Commits on Mar 05, 2026
cca9e15

🔥 Remove Coinbase Commerce payment integration

e596c61

🐛 (dandelion_bank.rb): fix error handling to gracefully fallback to Frankfurter rates when CoinGecko API fails

The previous code would raise an exception if both APIs failed, but now it only notifies Honeybadger if we have at least some rates from Frankfurter, allowing the app to continue running with partial data.

f86484b

♻️ (dandelion_bank.rb): replace static KNOWN_CURRENCIES constant with dynamic known_currency? method

The static constant was computed at class load time, now the currency validation is done on-demand which improves memory usage and startup time.

d44eff4

♻️ (dandelion_bank.rb): refine error handling to catch specific Faraday and JSON errors instead of broad StandardError
🎨 (dandelion_bank.rb): reformat Faraday initialization block for improved readability

Commits on Mar 01, 2026
378b688

🧵 (dandelion_bank.rb): add Mutex for thread-safe rate updates to prevent race conditions
♻️ (dandelion_bank.rb): refactor known currencies to constant and improve data access safety
🩹 (dandelion_bank.rb): add error handling with fallback rates validation and Honeybadger notification

d6894ce

♻️ Refactor HTTP client to use Faraday with timeout and error handling - Use specific exception types (Faraday::Error, JSON::ParserError) for better error handling - Add 10s timeout and 5s open_timeout to prevent hanging requests - Leverage Faraday's auto-JSON parsing to simplify response handling

25b4fad

🔧 Add STRIPE_API_VERSION env var and refactor hardcoded values

Add STRIPE_API_VERSION environment variable to .env.example and .env.test.example, then refactor all Stripe API version hardcoded values across the codebase to use the environment variable instead. This improves configurability and makes version updates easier.

ddfad98

♻️ Remove legacy HMAC feedback token format support

Simplifies token generation and verification by removing the deprecated legacy HMAC format. The MessageVerifier now handles all token validation directly, and missing SESSION_SECRET will raise an error rather than silently failing.

5a55f68

🔧 (organisation_accounting.rb): add automatic_payment_methods config with redirect disabled for off-session payments

Commits on Feb 28, 2026
121d497

✨ (event_feedbacks): add preview mode for feedback form to allow admins to test before sending

This introduces a preview functionality that lets administrators test the feedback form without requiring account resolution or allowing submission. The preview is triggered by passing 'preview' as a token parameter, displays a warning message, and disables the submit button.

63baf21

➖ Remove strong_password gem and simplify password validation to length check

93d7150

🔥 (config/boot.rb): remove unused net/http require statement

15cd047

♻️ Replace money-uphold-bank gem with custom DandelionBank implementation

The custom implementation fetches exchange rates from Uphold API with Frankfurter and CoinGecko as fallback sources for improved reliability.

10ddd0c

♻️ (Gemfile): reorganize gem placements by moving redis and mcp to appropriate sections

The diff shows redis gem being moved from one location to another, and mcp gem being moved from a commented section to the main gems section. This cleans up the Gemfile structure by placing dependencies in their proper locations.

4c2b739

➖ Remove bech32 gem dependency

971d105

➖ Remove eu_central_bank gem dependency and related code

The eu_central_bank gem is no longer needed as the application uses the uphold bank for currency exchange rates instead.

b44e935

✨ (events.rb): add opt_in_facilitator attribute for events with third-party facilitators

f834088

🐛 Remove default opt-in for facilitator in events controller

The change removes the automatic setting of opt_in_facilitator to true when creating events, likely as part of fixing incorrect default behavior.


👷 Add Cursor IDE fix command for Honeybadger integration

Commits on Feb 27, 2026
cd5c415

♻️ Refactor audio transcription to use direct OpenAI Whisper API instead of OpenRouter

The change separates transcription and cleanup into distinct steps, using a temporary file for proper audio handling. This improves reliability and provides more control over the transcription process.

47f1c82

✨ (whatsapp.rb): add intelligence parameter to OpenRouter.chat for improved transcription quality