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

Commits on Jan 02, 2026
9dd803e

♻️ (searchable.rb): inline text_search_index variable to simplify compound text search stage

f1b18a8

♻️ (searchable.rb): move fetch_limit calculation inside vector search branch to avoid unnecessary computation

569b460

🐛 (search_helper): deduplicate events by name, keeping only the earliest dated event

be45d47

💄 (search.erb): update UI copy from “Fuzzy search” to “AI search” to reflect new search behaviour
🔥 (searchable.rb): remove unused vector_search method to clean up dead code

9e625f3

🎨 (search): unify vector weight handling across search calls
♻️ (searchable): make vector_weight optional and derive text_weight from it
🔧 (search): set vector_weight to 0.5 in all search invocations for balanced hybrid scoring

b55c561

🔥 Remove AI search mode and consolidate search logic
♻️ Refactor search to use unified text/vector fusion instead of separate AI path

3f3dbef

⬆️ (ruby.yml): bump MongoDB version from 8.0 to 8.2 in CI

Commits on Jan 01, 2026
acc6834

♻️ (searchable): fetch double results and trim to requested limit after deduplication

686c35c

🐛 Fix search queries to use regex_search flag for consistent results

9943068

♻️ Extract geographic bounding-box logic into reusable helper method set_bounding_box

adae69e

🐛 (app/views/_ai.erb): replace hard-coded prompt text with configurable Stash value to allow prompt updates without code changes

86e94be

📝 Update AI prompt to use British English and day-before-month format

33e2a85

💬 (search.erb): replace “full” with “precise” in search option links to better reflect the refined search behavior

77c2c82

♻️ Refactor kept_ids creation to use to_set with block

7099879

♻️ (searchable): replace name-based deduplication with earliest-dated event logic

99107ff

🐛 (searchable): deduplicate search results by name to avoid showing duplicates

22e875c

📝 (app/views/_ai.erb): update AI prompt to preserve event order and paragraph structure, remove stray “§”

7d44281

🎨 (app/views/_ai.erb): remove bullet-point normalization and extra blank line handling to simplify markdown rendering

506071c

✨ (app.rb): filter AI search results to only live, public, browsable, future events
♻️ (searchable.rb): allow vector_search to work on existing scopes by injecting filter

c4799a7

🐛 (_ai.erb): guard against nil AI response and show fallback message
🐛 (_ai.erb): only render carousel blocks for events that have an image
🐛 (_block_carousel.erb): skip rendering link/image when event has no image
✅ (search_test.rb): update test to expect AI mode as default search tab