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

Commits on Jun 02, 2025
fb2c838

📈 (pmail.rb): Update default pmail analytics configuration

  • Change default sort order to clicked_rate:desc.
    • Prioritizes engagement rate for better insights.
  • Switch from count-based to rate-based metrics.
    • Provides normalized performance indicators like clicked_rate.
  • Update default resolution from day to month.
    • Aggregates data for a higher-level, less granular overview.
  • Extend default date range from 30 days to 1 year.
    • Retrieves a more comprehensive historical data set by default.
158fb42

✨ (pmail): add mailgun_url method to Pmail model to generate Mailgun analytics URL
♻️ (pmail): refactor Mailgun analytics URL generation into a dedicated method
💄 (pmail): update _header.erb to use mailgun_url helper for Mailgun analytics link

This change introduces a new mailgun_url method in the Pmail model. This method encapsulates the logic for constructing the complex Mailgun analytics URL, including region-specific domains, search metrics, and date ranges.

The _header.erb partial is updated to call this new mailgun_url method on the @pmail object, simplifying the view logic and centralizing the URL generation. This improves maintainability and reduces duplication of URL construction logic across the application.

20892d8

👔 (pmail): Enhance email domain validation for subdomains

Extract from_domain for improved readability and reusability. Allow Mailgun domain to match subdomains of the sender's email. This provides greater flexibility for email sending configurations.

Commits on Jun 01, 2025
76e4042

🦺 Re-enable and refine event uniqueness validation Re-enables uniqueness validation for event name, start time, and organization. Adds unless: :duplicate to allow intentional event duplication, preventing accidental duplicates while supporting workflow.

b0bf2cc

👔 (app/views/events/_info_table.erb): Refine criteria for 'Promoted by' display

Expands the condition for an event to be considered 'promoted'. Previously, only events with a purchase URL were considered promoted. Now, events with an organiser or revenue sharer are also included.

This change ensures that events managed by an organiser or involving revenue sharing are correctly categorized and displayed as 'Promoted by', aligning with updated business rules for event promotion.

Commits on May 30, 2025
3ee5070

🎨 (email): Consolidate link styles into external stylesheet

Moves 'a' and 'a:hover' CSS rules from inline blocks in email.erb and pmail.erb layouts to email.css. This centralizes styling, improves maintainability, and ensures consistent link hover states.

Commits on May 29, 2025
4ec8035

🐛 Remove event name uniqueness validation

The validation on event name, start time, and organisation ID was preventing the creation of duplicate events. This behavior is undesirable as event duplication is a valid use case. The validation is temporarily commented out to allow this functionality while a more suitable validation approach is being re-evaluated.

Commits on May 27, 2025
6277188

🐛 Prevent NoMethodError when @from is nil in date pickers

Modified the value attribute for :from date input fields in several search forms. Previously, if @from was nil, calling .to_fs on it would raise a NoMethodError. The change adds a conditional check to ensure to_fs is only called when @from is present, preventing runtime errors and making the forms more robust.

a8fcd17

🥅 (account_farcaster.rb): Add JSON parsing error handling

Adds rescue JSON::ParserError to farcaster_user and farcaster_casts. This prevents crashes when the Farcaster API returns invalid JSON. Methods now return nil on parsing errors, improving robustness.

c7dc3c2

🦺 (event_validation): Add uniqueness validation for event name and start time To prevent duplicate events with the same name and start time within an organization. This ensures data integrity and avoids confusion.

Commits on May 26, 2025
87f11e8

🐛 (app.js): Prevent iframely errors when script is undefined

Wrap the iframely loading logic in a conditional check. This prevents a ReferenceError if the iframely script fails to load or is not present, ensuring the application continues to function.

Commits on May 24, 2025
34e72e7

🚸 (events): Improve ticket purchase success message Dynamically adjusts wording based on the number of tickets. Ensures correct singular/plural forms for "ticket" and "ticketholder". Enhances user experience by providing more precise feedback.

6b20faf

✨ (pagelets.js): Add data-pagelet-no-opacity-change attribute to prevent opacity changes
🎨 (app.scss): Remove unused .ticket CSS class
✨ (events/_success.erb): Add showSavedTooltipAndSubmit JS function for improved UX
💄 (events/_success.erb): Update ticketholder message for clarity
🎨 (events/_success.erb): Change .ticket class from border to alert alert-success
✨ (events/_success.erb): Apply data-pagelet-no-opacity-change to ticketholder pagelets
✨ (events/_ticketholder_email.erb): Call showSavedTooltipAndSubmit on email field change
✨ (events/_ticketholder_name.erb): Call showSavedTooltipAndSubmit on name field change

ffa3918

💄 Improve link styling in email layouts

Add !important to link color and adjust hover state color to match the normal state. This helps ensure consistent rendering across different email clients. Also add a missing semicolon to a style rule.

26d1828

🎨 Reference default model via intelligence levels

Remove the DEFAULT_MODEL constant. Update the default value for the model parameter in the chat method to use INTELLIGENCE_LEVELS['standard'].

This change ensures the default model is explicitly tied to the 'standard' intelligence level defined in the INTELLIGENCE_LEVELS hash. This improves clarity and maintainability by avoiding a separate constant for a value already present in the intelligence levels map.

d34d6ef

✨ Introduce intelligence level for AI model selection

Add an intelligence parameter to OpenRouter.chat to abstract the specific model name used. Map levels like 'standard' and 'smarter' to configured models.

Update the default model to google/gemini-2.5-flash-preview-05-20. Remove support for the anthropic/claude-3.7-sonnet:beta model.

Use the 'smarter' intelligence level for generating commit summaries. This makes it easier to switch models based on desired capability.

Commits on May 23, 2025
46c4b25

🐛 Fix rendering of event cohost block

Prevent rendering cohost media block if no image or video exists. Avoids displaying empty or broken sections.

07a1f97

💄 Change d-inline-block to d-inline for event title in _block_main.erb

3b2a07a

💄 Update link hover/focus/active style

Change the styling for link hover, focus, and active states. Previously, these states modified the background color of the link. This commit changes the style to modify the text color instead. This provides different visual feedback for interactive links.

536fc00

🎨 Add missing semicolon in organisation stylesheet

Add a semicolon to the background property for link hover, focus, and active states in the organisation stylesheet.

This fixes a syntax issue and improves consistency.