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

Commits on Oct 16, 2025
fc0e1b9

🐛 Fix required-select detection for questions ending with “*”

  • Update SELECT_FIELD_REGEX to accept an optional trailing “*”
  • Use the raw question string (q) instead of the parsed text when checking “required” so that the asterisk is still present
  • Reflect the new syntax in the admin placeholder & help text
1638d44

✨ Add support for select-field questions in event forms

  • Introduce Order::SELECT_FIELD_REGEX to parse “Question [opt1,opt2]”
  • Render
f629fdd

🐛 Fix CSV export to only include questions actually answered in orders
✨ Add questions_a_from_orders to collect unique questions from order answers

Commits on Oct 15, 2025
0815410

🐛 Fix assignment of responsible_id in inventory item update

3390034

♻️ (orders): replace direct model assignment with foreign-key id assignment Avoids loading full event records into memory and prevents potential stale-object issues when only the id is needed.

fea58be

♻️ Replace :image_uid.ne => nil queries with has_image: true

  • Introduce a new boolean field has_image on all models that carry an image_uid (Account, Activity, Carousel, Cohortship, Event, Gathering, Organisation, Photo, Space, Tactivity).
  • Populate the flag automatically in before_validation hooks so it stays in-sync with the actual presence of an uploaded image.
  • Swap every controller / view / scope filter from the slower :image_uid.ne => nil pattern to the indexed has_image: true check, speeding up photo-related listings throughout the app.
6fd477f

💄 Add bottom margin to search result lists for better spacing

ed6fbda

✨ Add pagination to search results for all entity types

Paginate events, accounts, organisations and gatherings with 20 items per page to improve UX on large result sets. Update Searchable concern to apply a default 200-record limit and remove debug puts.

2d6e20a

♻️ Remove hard-coded limit: 25 from controller search calls
♻️ Move limit into aggregation pipeline for consistent server-side enforcement

55c849a

♻️ Remove hard-coded score_threshold from all search calls
♻️ Drop unused score_threshold parameter from Searchable.search

4dda361

🐛 Fix event visibility by adding .public scope to all queries
♻️ Replace current scope with future_and_current to simplify logic

Commits on Oct 14, 2025
db5b236

🐛 Fix Ruby hash syntax in privacy update

5c1eea4

♻️ Replace deprecated update_attribute with set across codebase

b828ba1

Revert "
♻️ Replace deprecated set with update_attribute for single-column writes"

This reverts commit 43d3115470573060a7e717cddce280da9748a97d.

43d3115

♻️ Replace deprecated set with update_attribute for single-column writes

5c4eac1

♻️ Replace global search helper with model-scoped search method
✨ Add configurable search options: limit, score threshold, phrase boost
🗃️ Handle null checks and complex selectors in Atlas Search pipeline

deb6098

♻️ Replace sign_ins_count == 0 with has_signed_in? helper

8d88ce9

🐛 Replace sign_ins_count check with explicit has_signed_in flag

  • Introduce a dedicated boolean field has_signed_in to track whether an account has ever signed in, replacing the fragile sign_ins_count.zero? check.
  • Update all queries, scopes and mailers to use the new flag so public listings and email copy rely on the same explicit state.
  • Keep sign_ins_count incrementing on every new sign-in for analytics while guaranteeing the boolean is set only once.
5346580

✨ (search_helper.rb): push range and equality filters into Atlas Search filter clause to offload work to the index

a113847

♻️ (event_fields.rb): move ai_tagged and sold_out_cache into the shared boolean list