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

Commits on Oct 05, 2025
7bd6a7b

🐛 Replace Ticket.search with inline regex queries
🐛 Escape user input to prevent regex injection

884adb1

♻️ Replace inline Regexp with dedicated search methods Use Account.search, Gathering.search, Organisation.search and Event.search instead of manually building regexes. This centralises search logic and makes future improvements (e.g. full-text, stemming) possible without touching every query.

2476d83

♻️ (check_in, orders): replace duplicated ticket-search logic with reusable Ticket.search method

8a331de

🗃️ (ticket.rb): add id_string field to store string representation of id
✨ (ticket.rb): auto-populate id_string from id when id exists and id_string is blank

b15555c

♻️ (search_helper.rb): move query-length guard clauses into helper
🔥 (searchable.rb): remove duplicate length checks now handled by helper

Commits on Oct 04, 2025
ea319bf

🐛 (check_in): rename param from p to secret for clarity
✨ (check_in): show friendly error page instead of plain 403

24cf7e2

♻️ Remove redundant $match stage from aggregation

940e6bd

♻️ (event_tag.rb): refactor update_tags_for_select to reduce aggregation pipeline complexity

20ee5e3

♻️ (organisation_events.rb): move filter_events_by_search_and_tags call before ordering to ensure consistent results

c6b0531

🐛 (event_feedback.erb): wrap answers table in conditional to prevent nil errors

Commits on Oct 03, 2025
ce0f060

🐛 Fix organisation assignment when loading event from draft

bb9dfc2

🔍️ (searchable.rb): wrap query in quotes to force exact-match search

298cbd5

♻️ Remove redundant cache clearing for /accounts/pay_progress fragments

0c808ee

♻️ Rename account_cache association to account_recommendation_cache

The old name was too generic; the new one clarifies its purpose and avoids confusion with other caches.

7d312cc

✨ Introduce AccountRecommendationCache model to store pre-computed people and event recommendations

c4a14c1

♻️ (searchable.rb): replace MongoDB Atlas $search aggregation with $text $match to remove Atlas dependency

942b801

🐛 (search_helper.rb, searchable.rb): strip leading/trailing whitespace from search query to prevent empty or malformed searches

a6188d0

🐛 Clamp requested page to valid range when max limit is set

Prevents 500 when user asks for a page beyond the capped total. Calculates max_page from capped_count / per_page and forces page option into 1..max_page before calling will_paginate.

3b6f6b7

✨ Add PaginateWithLimit module to cap large pagination queries

Prevents excessive DB hits by limiting result sets to 10×per_page and injecting total_entries so will_paginate respects the cap.

c453ff9

♻️ Replace deprecated .page with .paginate for consistency All pagination calls now use the explicit .paginate(page: …) syntax instead of the shorthand .page, ensuring uniform behavior across the codebase and avoiding future deprecation warnings.