Dandelion is an open-source project. View the code on Github

Enhanced Event Management and Ticketing

The platform now offers improved event management features, making it easier to create and customize your events. Ticket types now include a sales end time feature, allowing you to set deadlines for ticket purchases. When sales end time has passed, tickets will display a "sales closed" badge to attendees. The ticket type form has been visually enhanced with better layouts and responsive design, ensuring a great experience on both desktop and mobile devices. Currency symbols now update dynamically when you change the event currency, providing a more intuitive experience.

Improved Search and Tag Functionality

Finding events that match your interests is now simpler with enhanced search capabilities. The platform has improved the event tagging system, allowing you to search for events based on their tags. Event listings now show a limited number of relevant tags with a "+ more" indicator for events with many tags, keeping the interface clean while still providing complete information. This improvement helps you discover events that align with your interests without overwhelming the display with too many tags.

Enhanced Communication and Email Features

The mail system for event hosts and organizers has been significantly improved. Event hosts can now more effectively communicate with participants through improved mail functionality, including better handling of sender names and reply-to addresses to ensure responses reach the right person. The system now allows organizers to exclude specific local groups from mail recipients, providing more targeted communication options. The mail composition interface has been redesigned with a better layout, making it easier to create, organize, and send communications to your participants.

Commits on Mar 24, 2025
428cd00

🐛 (models/ticket_type.rb): render integers instead of floats in price range

The price_or_range method was modified to render integers instead of floats when displaying the price range. This change ensures that the displayed price range is more user-friendly and avoids unnecessary decimal places when the values are whole numbers.

935436c

💄 (app/views/events_build/_ticket_types.erb): Improve ticket type form UI

Commits on Mar 14, 2025
5c6049b

✨ (app.js): add function to get currency symbol from currency code
🎨 (app/views): use javascript to dynamically update currency symbol The currency symbol was previously hardcoded in the views. This commit adds a javascript function to get the currency symbol from the currency code and uses this function to dynamically update the currency symbol in the views. This allows the currency symbol to be updated when the currency is changed.

Commits on Mar 13, 2025
8009309

💄 (app/views/search.erb): add line break on small screens for better readability
🐛 (models/payment.rb): fix: only create payment notifications if gathering is not hidden

Commits on Mar 12, 2025
c76aa29

🐛 (models/event.rb): fix tag generation prompt to use local variables

The tag generation prompt was using e.name and e.description instead of the local name and description variables, leading to incorrect tag generation. This commit fixes the prompt to use the correct local variables.

21a2c9b

🔥 (app/views): remove Telegram support links from contact and doc pages

1ff99ed

💬 (models/event.rb): improve prompt for tag generation

The prompt for generating tags for events has been improved to include instructions for handling multi-word tags. The prompt now explicitly states to separate multiple words within a tag with spaces, ensuring that the generated tags are more accurate and useful.

93a42f0

✨ (app): limit tags in event stats row and add plus more

This commit introduces a limit to the number of tags displayed in the event stats row and adds a "+ more" indicator if the event has more tags than the limit. This improves the readability of the event stats row by preventing it from becoming too cluttered with tags.

00a91fa

🎨 (purchase/_ticket_type.erb): change col class to col-auto

The change was made to improve the layout of the ticket type selection on the purchase page. By changing the col class to col-auto, the width of the quantity selection element will be determined by its content, rather than taking up the full width of its parent. This allows the other elements in the row to be displayed more naturally.

671c7bc

🔥 (code/_commits.erb): remove caching for current month commits

The caching logic was removed because it was causing issues with displaying the latest commits for the current month. The cache key was not being invalidated when new commits were added, so users were not seeing the most up-to-date information.

780238f

🚚 (app/views/code/code.erb): move commit listing to a partial
✨ (app/views/code/_commits.erb): create _commits partial to display commit history

Commits on Mar 11, 2025
d4a3002

🐛 (models/pmail.rb): fix from_name and from_email extraction

The regex for extracting the from_name was too strict and didn't handle all cases. The logic is changed to handle emails without a name and to correctly extract the email address when no name is present.

8b22d15

🐛 (models/pmail.rb): fix from and reply_to headers for mailgun

The goal is to use the sender's email address as the from address when sending via Mailgun, instead of rewriting it to use the default MAILER_EMAIL. This allows replies to go directly to the sender.

The changes ensure that if the from email address belongs to the organization's Mailgun domain, it's used as the from address. Otherwise, the existing logic (using MAILER_EMAIL) is preserved. A reply_to header is no longer needed in the mailgun case, as the from header is already correct.

cb53eba

📝 (app/views/code/_commit_summary.erb): remove past tense instruction

0ba0012

🔥 (app/views/code/_commit_summary.erb): remove begin rescue block

The begin rescue block was removed because it was hiding errors. If the OpenRouter.chat method fails, the error should be raised so that it can be handled properly.

5d1bb59

🐛 (code/_commit_summary.erb): fix commit summary parsing

The commit summary parsing logic was updated to handle cases where the response from OpenRouter starts with '# '. This ensures that the summary extraction works correctly for different response formats.

116e86f

💬 (app/views/code/_commit_summary.erb): improve prompt for commit summary generation to be more user-centric
✨ (app/views/code/_commit_summary.erb): specify anthropic/claude-3.7-sonnet:beta model for OpenRouter.chat to improve summary quality

d785d0d

🐛 (code.erb): fix escaping underscores in commit messages

The previous implementation was escaping underscores, but then not unescaping them in the final output. This commit fixes this issue by unescaping underscores after the emoji replacement.

27e38b2

🐛 (code.erb): fix emoji presentation in commit messages

The emoji presentation was broken due to a regex issue. This commit fixes the regex to properly handle emojis in commit messages.

97a0d91

💬 (code.erb): improve commit message rendering in code view

This commit improves the rendering of commit messages in the code view by:

  • Replacing underscores with escaped underscores to prevent markdown interpretation.
  • Adding line breaks before emojis to improve readability.
  • Removing leading line breaks.
7cb2e7f

💬 (app/views/code/_commit_summary.erb): improve prompt for commit summary

The prompt is improved to provide better instructions for summarizing commit messages, specifically focusing on user-facing changes and avoiding internal terminology.

062277a

📝 (app/views/code/_commit_summary.erb): clarify instructions for writing commit summaries

8ef32d1

💬 (app/views/code/_commit_summary.erb): improve prompt for commit summaries

The prompt for summarizing commit messages was improved to generate more informative and user-friendly summaries. The changes include:

  • Specifying a minimum length of 3 sentences per paragraph to ensure sufficient detail.
  • Clarifying the exclusion of technical details, such as z-index changes, to focus on user-relevant information.
3beca22

✨ (Gemfile): add octokit gem to fetch commit data from Github
🚚 (app): move code view to a subdirectory for better organization
🐛 (app.js): add support for month input type to submitOnChange form
✨ (app): add code view to display commit history and network graph
✨ (lib): update claude model to 3.7-sonnet:beta

bb7d90d

➕ (app/views/contact.erb): add Telegram link to contact page
💬 (app/views/layouts/pmail.erb): update Telegram link in email layout

1afaf4f

🔇 (models): remove logs to prevent sensitive data exposure
✨ (tasks): add done! log to show when rake task is finished

Commits on Mar 10, 2025
4ee860b

🐛 (models/order.rb): reduce qr_size to improve readability

2f72bde

🚚 (app.scss, app/views/_chat_card.erb): move chat related styles from app.scss to _chat_card.erb

The chat related styles were moved from app.scss to _chat_card.erb to improve component modularity and maintainability. This change encapsulates the styles within the chat card component, making it more self-contained and easier to reuse or modify in isolation.

1aa9b96

✨ (app.scss): add responsive styles for chat card
➕ (app/views/_chat_card.erb): add chat card partial
♻️ (app/views/events/_discussion.erb): refactor discussion to use chat card partial
♻️ (app/views/events/event.erb): refactor event to use chat card partial
♻️ (app/views/pmails/build.erb): refactor pmails build to use chat card partial
➕ (app/views/pmails/_files.erb): add files partial for pmails

88d25ac

💄 (app/views/pmails/build.erb): Improve chat UI on larger screens

This commit improves the chat user interface on larger screens by:

  • Removing the border from the chat card.
  • Removing the margin from the chat card.
  • Removing the padding from the chat card body.
  • Setting the z-index of the chat container to 99.
0792f9c

✨ (app/views/pmails/build.erb): Refactor pmail form and add partials for header, clicks, to_options, and exclude
✨ (app/views/pmails/_clicks.erb): Add partial for displaying pmail link clicks
✨ (app/views/pmails/_exclude.erb): Add partial for excluding people from pmail based on event, activity, or local group
✨ (app/views/pmails/_header.erb): Add partial for displaying pmail header information
✨ (app/views/pmails/_to_options.erb): Add partial for selecting pmail recipients

041eb7f

✨ (app/views/pmails/_attachments.erb): add copy URL functionality to attachments
💄 (app/views/pmails/_attachments.erb): improve attachments table style
💄 (app/views/pmails/build.erb): remove paperclip icon from files header

90e48d8

🎨 (app/views/pmails/build.erb): improve layout and UI of pmail build form

This commit improves the layout and UI of the pmail build form for better user experience. The changes include:

  • Wrapping the form content in a row to utilize Bootstrap's grid system.
  • Moving the file upload section to a separate column on the right side of the form.
  • Adding icons to the file search input and the card header for visual appeal.
  • Adding a style tag to fix the width of the file input.
  • Adding a conditional rendering for A/B test emails.
8ef5232

♻️ (models): simplify time field types for pmail models

The change simplifies the type of requested_send_at and sent_at fields from ActiveSupport::TimeWithZone to Time in Pmail, PmailTest, and PmailTestship models. This removes the ActiveSupport dependency for these fields, making the code more straightforward and easier to maintain.

034cf61

✨ (app/views/pmails/build.erb): Add ability to exclude local groups from pmails
✨ (models/local_group.rb): Add associations for excluding local groups from pmails
✨ (models/pmail.rb): Add local group exclusion to pmails

f0f59a8

🔇 (tasks.rake): remove logger.info and replace with puts for simpler logging

1cc57b9

🔇 (models/event.rb): comment out unused variable assignment

The c variable was assigned the count of recommendable accounts but was never used. This commit removes the unused variable assignment to improve code clarity and reduce potential confusion.

bd19385

🎨 (tasks.rake): fix indentation in tasks.rake file

e0640ac

🚚 (tasks.rake): move code_to_markdown task to late:other namespace
🔥 (tasks.rake): remove dump namespace

The 'dump' namespace was removed because it contained a task 'code_to_markdown' that was not actively used and was creating unnecessary clutter in the rake task list. The 'code_to_markdown' task has been moved to the 'late:other' namespace to keep it available if needed, but to signal that it is not part of the main task flow.

44f8bcd

🔇 (models/event.rb): remove progress output during recommendation

The progress output was removed because it is not needed in production and it slows down the recommendation process.

Commits on Mar 09, 2025
cc09963

🔊 (tasks.rake): replace puts with logger.info for better logging

764b739

✨ (app/helpers/helpers.rb): add event_tags_joined to search query

This commit adds the event_tags_joined field to the search query in the search_events helper method. This allows users to search for events based on their tags, improving the search functionality of the application.

49774b8

✨ (models): add event_tags_joined field to Event model

This commit introduces a new field, event_tags_joined, to the Event model. This field stores a comma-separated string of all event tag names associated with an event. The set_browsable callback is updated to set this field after an event is saved. This change allows for easier searching and filtering of events based on their tags.

866cc33

🔊 (tasks.rake): add puts statements to rake tasks to improve debugging

f7c0564

✨ (tasks.rake): move tasks to modules and call them from rake

This commit refactors the rake tasks by moving them into modules and calling them from the rake tasks. This makes the code more modular and easier to maintain.

The following tasks were moved:

  • organisations:check_squarespace_signup to CheckSquarespaceSignup.check
  • organisations:set_counts to Organisation.set_counts
  • stats:monthly_contributions to MonthlyContributionsCalculator.calculate
  • events:recommend to Event.recommend
  • late: update feedback counts to EventFeedback.update_facilitator_feedback_counts
6faf811

✨ (tasks.rake): add late:errands task to perform daily tasks This commit introduces a new rake task, late:errands, which consolidates several daily maintenance operations. This task is designed to be run late in the day to perform cleanup and data refreshing tasks.


🚚 (tasks.rake): rename and consolidate tasks for better organization This commit renames the daily:get task to late:errands and incorporates several other tasks into it. The tasks tidy_up:delete_all, organisations:create_edges, gatherings:clear_up_optionships, and stats:facilitator_feedback_counts have been removed as separate tasks and their functionality has been integrated into the new late:errands task. This change aims to improve the organization and maintainability of the rake tasks by grouping related operations into a single task.

7e3a4c5

✨ (tasks.rake): introduce hourly and morning rake tasks

This commit introduces new rake tasks for hourly and morning errands.

The hourly task checks for payments for organisations and events, and deletes stale uncompleted orders.

The morning task sends feedback requests for events that ended yesterday, event reminders for events starting tomorrow, star reminders for events starting in 6 days, and payment reminders for ticket types with payment plans on the 1st of each month.

The check_for_payments, delete_stale_uncompleted_orders, send_feedback_requests, send_reminders, send_star_reminders, and send_payment_reminders tasks were removed from the events namespace as they are now part of the hourly and morning tasks.

3d75fec

📝 (/.cursorrules): add project details for context

This file now contains information about the project's tech stack, Gemfile, and CDN dependencies. This provides context for future cursor movement and code understanding.

d0fa997

🐛 (orders.rb): handle not found orders

This commit fixes a bug where the application would crash if an order with a given ID was not found. The code now checks if the order exists and returns a 404 error if it does not.

Commits on Mar 06, 2025
210675b

✨ (app/app.rb): do not track pageviews for /z/ paths

The change prevents page view tracking for paths starting with '/z/'. This is useful for excluding certain types of requests (e.g., health checks, internal probes) from analytics, reducing noise and improving the accuracy of genuine user traffic data.

d44dc44

💬 (app/views/contact.erb): reduce font size of contact email

09af9e0

💄 (app/views/events_build/_ticket_groups.erb): Improve mobile ticket group input styling

62f8ac7

💄 (app/views/events_build/_ticket_groups.erb): improve ticket group UI

78cace4

💄 (app/views/events_build/_ticket_types.erb): improve ticket types form responsiveness on smaller screens

4d4480f

🎨 (app/views/events_build/_ticket_types.erb): improve ticket type form UI

64c2a6e

Revert "
🎨 (app/views/_nav.erb): replace javascript pseudo-link with #"

This reverts commit da5d264bba7d0e301b18763043d7233580e3215d.

0626840

Revert "
🐛 (apps.js): fix sidebar menu toggle on click"

This reverts commit 9d16354c4a2a2256baca4095abff36860459ccf0.

da5d264

🎨 (app/views/_nav.erb): replace javascript pseudo-link with #

The javascript pseudo-link is not a valid link and can cause accessibility issues. Replacing it with # will make the link valid and prevent the page from reloading.

9d16354

🐛 (apps.js): fix sidebar menu toggle on click

The default action on click was causing the page to jump to the top. This commit prevents the default action and fixes the sidebar menu toggle.

7d7b83a

Revert "Auxiliary commit to revert individual files from a9a55a40647e4d6be4550e0b8c36e7e1d79a2079"

This reverts commit 48f6d560eb23c5f5350f830a9a65fd278417f470.

e0e9238

💄 (app/views/events_build/_ticket_types.erb): fix ticket type form styling on smaller screens

a9a55a4

💄 (app.scss): make sidebar submenus clickable
📝 (_nav.erb): remove href from submenu items to prevent page reload

fbe6cdd

💬 (models/pmail.rb): update sender name and reply-to

This commit modifies the sender name and reply-to address in the Pmail model. The sender name is extracted from the from address if present, otherwise, it defaults to the MAILER_EMAIL_FULL environment variable. The reply-to address is set to the original from address. This change ensures that replies are correctly routed to the original sender while providing a consistent sender name.

8be0b12

💬 (app/views/purchase/_ticket_type.erb): enable links in ticket descriptions

Commits on Mar 05, 2025
2be1147

🐛 (event_stats_row): fix nil error when event end time is nil

The conditional statement event.end_time.to_date < Date.today - 1 was throwing an error when event.end_time was nil. This commit adds a check to ensure that event.end_time is not nil before attempting to call to_date on it.

63e6247

🐛 (app/views/layouts/pmail.erb): fix markdown rendering

The markdown was not rendering correctly due to missing options. This commit adds the autolink: true, tables: true options to the Redcarpet::Markdown renderer to fix this issue.

e39bee9

💄 (events_build/_ticket_types.erb): slightly reduce width of sales_end input to improve UI

896db83

💄(events_build/_ticket_types.erb): Minor UI adjustments for ticket type form

This commit makes small adjustments to the ticket type form in the event builder to improve visual consistency and spacing. Specifically, it reduces the left margin of the "hidden" checkbox and removes the unnecessary font-size styling from the external link icon, relying on the default size for better integration with the surrounding text.

02c3e64

💄 (app/views/events_build/_ticket_types.erb): add a left margin to the sales end datetime field
💄 (app/views/events_build/_ticket_types.erb): slightly reduce the width of the sales end input on smaller screens

2fb7f09

💄(app/views/events_build/_ticket_types.erb): fix width of input fields on smaller screens

0326362

🎨 (app/views/events_build/_ticket_types.erb): improve ticket type form layout and styling
💬 (app/views/events_build/_ticket_types.erb): change "Minimum monthly donation" to "Min. monthly donation"
♿️ (app/views/events_build/_ticket_types.erb): add accessibility attributes to secret ticket type checkbox

209a874

♻️ (app): refactor markdown rendering to use helper method

This commit refactors the markdown rendering logic by introducing a helper method md in app/helpers/helpers.rb. This method encapsulates the markdown rendering process, making it reusable across the application.

The changes include:

  • Introduction of the md helper method in app/helpers/helpers.rb to handle markdown rendering.
  • Replacement of direct Redcarpet::Markdown instantiation and rendering with calls to the md helper method in app/helpers/daily_helper.rb, app/views/books/book.erb, app/views/event_feedbacks/_report.erb, app/views/layouts/pmail.erb, app/views/purchase/_purchase.erb, and app/views/terms.erb.

This refactoring improves code maintainability and reduces duplication by centralizing the markdown rendering logic.

233f4d4

💄 (app.scss): style checkbox accent color and ticket types
✨ (app/views/events_build/_ticket_types.erb): improve ticket type form

This commit improves the styling of checkboxes by setting the accent color. It also enhances the ticket type form in the event build section by:

  • Adding a visual indicator for hidden ticket types with a link icon.
  • Improving the layout and responsiveness of the ticket type form, especially on smaller screens.
  • Adjusting input field styles for better user experience.
5720aca

💄 (app/views/events_build/_ticket_types.erb): add background and shadow to ticket types

f31a618

💄 (app/views/events_build/_ticket_types.erb): Improve ticket type UI

0a0e8f3

✨ (app/views/events_build/_ticket_types.erb): add sales end time to ticket types
✨ (app/views/purchase/_ticket_type.erb): display sales closed badge when sales end is in the past
✨ (models/concerns/event_duplication.rb): duplicate sales_end when duplicating events
✨ (models/ticket.rb): prevent ticket creation if sales end is in the past
✨ (models/ticket_type.rb): add sales_end field to ticket type model
💄 (app/views/events_build/_ticket_types.erb): improve styling of datetime inputs

e60e598

💄 (app/views/gatherings/join.erb): change card margin top to margin bottom to improve spacing

865e12d

⚡️ (tasks.rake): improve stripe monthly contributions rake task performance

The previous implementation fetched all charges and application fees from Stripe for the entire date range specified, then filtered them in-memory for each month. This commit optimizes the task by fetching charges and application fees on a per-month basis directly from Stripe, reducing the amount of data transferred and processed. This significantly improves the performance of the rake task, especially for large date ranges.