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

Commits on Jul 24, 2025
64d4f44

📌 (Gemfile): Pin mailgun-ruby gem to ~> 1.2.0

Pin the mailgun-ruby gem to a compatible version range. This prevents unexpected breaking changes from future major releases and ensures stability.

eceeaa6

♻️ Refactor payment method checks for improved clarity

Move payment_method? to group related payment methods. Introduce stripe_connect_only? helper method to encapsulate specific Stripe Connect logic. Update donations_to_dandelion? to use the new helper method, simplifying its logic and improving readability.

Commits on Jul 23, 2025
9d5d521

♻️ (models/carousel.rb): Refactor event retrieval logic for clarity

Break down the complex single-line event query into two distinct queries for future and past events. Combine the results and ensure uniqueness.

This improves code readability and maintainability by separating the concerns of fetching future and past events. It also streamlines the process of combining event collections directly rather than through an intermediate ID list.

bbdb5b0

♻️ (models): Improve event description field semantics

Rename 'hide_event_names_from_order_descriptions' to 'use_event_slugs_in_order_descriptions'. The previous name was semantically inverted and less clear.

Update order description logic to use event slugs when the new flag is enabled, providing more meaningful context.

b122e6f

✨ Add option to hide event names from order descriptions

  • Add hide_event_names_from_order_descriptions boolean field to Organisation.
  • Update Order#description to conditionally exclude the event name.

This feature provides organisations with the flexibility to hide event names from order descriptions, which can be beneficial for privacy or to streamline information presented to users.

395b1cf

🐛 (event_duplication.rb): Prevent copying sales end date for duplicated ticket types

Exclude the sales_end attribute when duplicating event ticket types. This ensures that new events created via duplication do not inherit the original event's sales end dates, allowing for proper configuration.

12ae4e3

✨ Display GoCardless payment method in order and ticket views

Add GoCardless specific styling for background and label colors. Display a "GoCardless" label in the orders table and ticket price views when an order is associated with a GoCardless billing request. This provides visual identification for GoCardless transactions. Ensure Coinbase background color is applied with high specificity.

Commits on Jul 21, 2025
26dcdd8

🦺 Add prefix validation for tax_rate_id

Adds a validation rule to ensure tax_rate_id starts with txr_.

This enforces a consistent format for tax rate identifiers, preventing invalid IDs and improving data integrity across events and organisations.

ee67946

♻️ (models/carousel.rb): refactor events to return queryable criteria

The method now plucks event IDs from sub-queries and uses an :id.in query. This ensures a Mongoid::Criteria object is returned, improving efficiency and allowing proper chaining of further queries.

Commits on Jul 20, 2025
57a2d6a

✨ Introduce explicit GoCardless subscriptions toggle

Adds a new gocardless_subscriptions boolean field to the Organisation model. Updates the organisation build form to include this new setting and renames the GoCardless section heading for clarity.

Modifies the event ticket type view to conditionally display GoCardless donation options based on this new setting. Updates the monthly donation sync Rake task to only process organisations with gocardless_subscriptions enabled.

This provides organisations with explicit control over GoCardless monthly donor functionality, separating it from Instant Bank Pay. It ensures subscription-related features and tasks only run when opted in.

Commits on Jul 19, 2025
6693872

✨ (organisations): Add GoCardless webhook secret and setup instructions

  • Introduce gocardless_endpoint_secret field for webhook verification.
  • Separate GoCardless settings into a dedicated card in the build view.
  • Provide clear instructions for GoCardless webhook endpoint setup.
  • Improve UI organization by grouping GoCardless related fields.
  • Update description for gocardless_access_token for clarity.
5f00d4c

🎨 (organisations): Rename 'Other services' tab to 'Analytics'

Rename the 'Other services' tab in the organisation build form to 'Analytics'. This provides a more accurate description as the tab primarily contains analytics-related fields.

Move GoCardless access token, instant bank pay, and Patreon API key fields to the 'Experimental' tab. These fields are less commonly used or experimental, decluttering the 'Analytics' tab and improving logical grouping.

c7fb4a3

🐛 (app/controllers/purchase.rb): connect GoCardless client to production environment

Remove explicit sandbox environment setting from GoCardless client. This ensures the client connects to the production environment by default, preventing hardcoded sandbox connections in production deployments.

097e5df

✨ Introduce GoCardless Instant Bank Pay and gathering payments

Add GoCardless Instant Bank Pay as a new payment method for events. This includes UI elements, JavaScript logic, backend controller integration, and webhook handling for successful payments. This expands payment options for users, offering direct bank transfers.

Introduce a dedicated GatheringsPay controller to centralize payment processing for gatherings. This new controller handles Stripe, Coinbase, and EVM payments, along with their respective webhooks, ensuring robust payment tracking for gatherings.

Refactor the not_found route to consistently serve the HTML error page, simplifying content type handling for 404 responses.

Commits on Jul 16, 2025
4d87b93

⬆️ Upgrade dependencies

Upgrade various Ruby gems to their latest patch versions. This ensures the project benefits from the latest bug fixes, performance improvements, and security updates from upstream.

Specifically: - Upgrade activate-tools from 0.0.23 to 0.0.24. - Upgrade mime-types-data from 3.2025.0701 to 3.2025.0708. - Upgrade tilt from 2.6.0 to 2.6.1.

Commits on Jul 15, 2025
b53e4fd

🐛 Fix Event#started? logic and feedback email link visibility

The Event#started? method incorrectly checked if an event had begun. It now correctly determines if the current date is on or after the event's start time.

This allows feedback email links to appear as soon as an event starts, rather than only after it finishes. The link text also adapts to the event's state, showing "Send feedback email" for started events and "Resend feedback email" for finished ones.

dc6c871

📝 Update feedback email body description Add guidance to include a feedback URL in the email body.

Commits on Jul 11, 2025
92042c8

🐛 Handle missing account for order and ticket notifications

Prevent NoMethodError when an order's account is nil in the orders controller. Ensure that ticket notifications are only sent if an account is present. This improves the robustness of the application by gracefully handling scenarios where an associated account might be missing.

4f13910

🐛 (stripe_charge.rb): Add guard clause for nil application fee

Add a guard clause to the ticket_revenue_to_revenue_sharer method. This ensures that if application_fee_amount is nil, the method returns Money.new(0, currency) immediately. Prevents potential errors when application_fee_amount is not set, making the calculation more robust.

79cd37a

🐛 Fix revenue calculation for zero application fees and balance

Previously, revenue calculation methods incorrectly returned zero when both application_fee_amount and balance were zero. This happened because the conditional check balance > 0 && application_fee_amount_money > 0 evaluated to false, leading to a zero fallback.

This commit introduces a specific handling for the application_fee_amount == 0 && balance == 0 case. Now, in this scenario, the methods correctly return the base revenue or donation amount instead of zero, ensuring accurate reporting.