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

Commits on Jun 06, 2025
6c11fb1

🎨 (pmails/build.erb): Reorder partials for improved form structure

Moves 'clicks' partial to appear directly after 'header' partial. This improves the logical flow and grouping of form sections.

9ba22d6

🎨 (pmails/build.erb): Adjust layout of pmail build form

Move header partial outside the max-width container. This allows the header to span the full width, improving the visual presentation of the pmail build form.

d2e1779

💄 (pmails/build.erb): Adjust mail build container width

Replaces the 'container' class with inline styles to explicitly set a maximum width of 720px and center the content. This improves the readability and visual presentation of the mail build interface by preventing content from stretching too wide on large screens.

65a14e2

🎨 (pmails/build.erb): Wrap pmail form in a container div to improve layout and consistency The form content was previously not contained within a standard layout element, which could lead to inconsistent spacing and alignment. Wrapping it in a div with class container ensures it adheres to the site's overall layout structure.

f1fb69a

💄 (pmails): Remove preview text from pmails listing

Removes the display of the pmail's preview text and an associated line break from the pmails index view. This simplifies the UI by removing redundant information, making the listing cleaner and more focused.

948742d

💬 (pmails): Clarify "Everyone" recipient option in pmail form

Add organization name to the "Everyone" option to provide better context for the user.

4012a97

✨ Add pmail filtering by recipient and type

Implement new filtering options for pmails based on their intended recipients (e.g., monthly donors, facilitators) and associated record types (e.g., activities, events). Introduce a new search form in the pmails view to allow users to select these filters. Reorder the "Subject" and "From" columns in the pmails table and display preview_text for better readability.

Commits on Jun 05, 2025
c638669

♻️ (pmail): Use environment variables for sender email Replaces hardcoded sender email construction with configurable environment variables (MAILER_EMAIL, MAILER_EMAIL_FULL). This improves flexibility by decoupling the sender address from the Mailgun host.

e46bf72

👔 (pmail.rb): Allow sending from subdomains of Mailgun domain

The condition for setting the from address in Mailgun batch messages now permits sending from subdomains of the configured Mailgun domain. This change enables more flexible email configurations, allowing emails to originate from subdomains while still being handled by the main Mailgun domain. Previously, only exact domain matches were allowed.

28275f3

🐛 (pmail.rb): Fix Mailgun sender email construction

Updates the 'from' email address for Mailgun batch messages to dynamically use the MAILGUN_TICKETS_HOST environment variable. This ensures the sender email consistently uses the Mailgun-configured domain, preventing potential delivery issues and improving email reliability.

46e93dd

♻️ (pmail): Refactor Mailgun 'from' and 'reply-to' handling

Move from address parsing to the top for early access. Separate from and reply_to logic based on mailable type. For Event mailables, ensure from is always a system email, while reply_to retains the original sender. For Organisation mailables, use original from if domain matches Mailgun's, otherwise use a generic mailer@domain with original sender in reply_to. Improve deliverability by ensuring from address is from a verified domain. Remove redundant and less precise from address logic.

289803a

🔥 Remove redundant /organisations/:id route

The /organisations/:id route was a simple redirect to /o/:slug. The /o/:slug route is the canonical and preferred way to access an organization. Removing this redundant route simplifies the routing logic and removes an unnecessary redirect.

Commits on Jun 04, 2025
3bc489f

✏️ (models): Fix typo in validation error messages

Remove redundant 'not be' from validation error messages. This improves clarity and correctness of messages.

Commits on Jun 03, 2025
79ed2ce

✨
🐛 (organisations, mailgun): Improve Mailgun metrics and add org ID redirect

Add a new route /organisations/:id to redirect to the slug-based URL. This provides a direct way to access an organization by its ID.

Wrap Mailgun metrics display with a check for available metrics. This prevents rendering an empty table when no metrics are present.

Implement error handling for Mailgun API communication errors. This ensures the application does not crash if Mailgun API calls fail and allows the UI to gracefully handle missing metrics data.

4207a9d

🚸 (pmails): Format percentage values to two decimal places

Formats the display of percentage values in the header partial. This ensures consistent presentation and improves readability for users.

cc42368

💄 (pmails): Conditionally display header analytics

Remove unused local variable. Wrap email metrics table in conditional block. This prevents displaying irrelevant analytics for Event pmails.

16fb14f

✨ (pmails): display Mailgun metrics for sent emails in a table
🎨 (pmails): refactor header layout for A/B test and queued emails
🐛 (pmails): add period to "Sending completed at" message

ae79e39

🐛 Fix Mailgun API parameter types

Converts tag id to string and sent_at to Unix timestamp.

Ensures label and value fields are strings for tag filters. Changes start parameter to integer timestamp as expected by Mailgun's get_tag_stats API, preventing incorrect data retrieval.

f33c00a

♻️
✨ Refactor Mailgun integration into concern

  • <br />♻️ Extract Mailgun URL and metrics logic into PmailMailgun concern.
    • Improves code organization and maintainability of the Pmail model.
  • <br />✨ Introduce metrics method to provide detailed Mailgun statistics.
    • Enables comprehensive performance tracking for individual emails.
  • <br />✨ Update mailgun_url to use sent_at for precise reporting.
  • <br />🐛 Add nil check for organisation.mailgun_domain in from_email.
    • Prevents errors if the Mailgun domain is not configured.
  • <br />✏️ Fix non-breaking space in to_selected_text method.
Commits on Jun 02, 2025
0970f14

✨ (nav): Add Mailgun link and update Messages icon

Add a direct link to Mailgun's sending domains in the navigation. This improves developer experience by providing quick access. Update the 'Messages' navigation icon from an envelope to a chat. This clarifies the link's purpose and avoids icon duplication.