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

Commits on Jun 28, 2025
0848491

🚸 Display lock icon for locked activities

  • Visually indicates when an activity is locked (admin-only).
  • Adds new_hints and edit_hints to the Activity model.
  • Provides helpful context for the locked attribute in forms.
42b7522

♻️ Refactor activity slug access and deletion redirect

  • Remove redundant organisation_slug method from Activity model.
  • Directly access activity.organisation.slug in views.
  • Redirect to organisation-specific activity list after deletion.
  • Improves code clarity and user navigation post-deletion.
1e93501

🐛 (event_callbacks): Correct activity attribute from hidden to locked

The hidden attribute was being incorrectly updated on the activity object. The correct attribute to control its availability or editability is locked. This ensures activities are properly unlocked after creation, aligning with the intended logic.

cb10a87

✨ Add organisation_slug helper to Activity model

Introduce organisation_slug method to Activity model. This method safely retrieves the organisation's slug. It checks if the association is loaded; otherwise, it fetches the organisation by ID. This prevents N+1 queries and ensures the slug is always available for views, improving efficiency. Update the activity build view to use this new helper.

b78f714

✨ (organisations): Add feedback summary generation for organisations
✨ (organisations): Display feedback summary on organisation page
🐛 (feedback): Improve feedback summary generation logic for accounts, activities, and organisations
🐛 (feedback): Correct account name in feedback summary prompt

75050b4

✨ (event_feedbacks): add AI-generated feedback summary for organisations
✨ (event_feedbacks): display AI-generated feedback summary for activities first
✨ (organisation): add feedback_summary field to organisation model
✨ (organisation): include OrganisationFeedbackSummaries concern
✨ (organisation): add OrganisationFeedbackSummaries concern to generate summaries

Commits on Jun 27, 2025
1a936fc

🔥 (activities): Remove 'hide members' option from activity build form

This option is no longer needed to simplify the activity creation process.

a8a6d8b

💄 (activities/build.erb): Rename activity visibility checkbox from hidden to locked

Renames the hidden checkbox field to locked in the activity build form. This change improves the semantic clarity of the checkbox, better reflecting its purpose of locking an activity rather than simply hiding it.

a4d3dc5

♻️ Refactor activity visibility logic and field names

Rename hidden field to locked in Activity model and all its usages. This improves the semantic clarity of the field, better indicating that an activity is restricted from public access or participation.

Remove the hide_members field from the Activity model. This field was no longer necessary, simplifying the model.

Update activity access control in ActivitiesController to use kick! helper. This standardizes the handling of unauthorized access to locked activities, centralizing the logic for redirection and messaging.

e6cd276

🚸 Improve local group form and factory data

Increase geometry textarea height and add input hint. Add slug generation to Activity and LocalGroup factories. Update default geometry coordinates in LocalGroup factory. Improve hide_members attribute label.

Enhance usability for GeoJSON input by providing more space and guidance. Ensure factory-generated data includes slugs for consistent URL generation and testing. Provide a more relevant default geometry for development. Clarify form fields for better administrator understanding.

4f608c0

🚸 Add unsubscribe confirmation pages

WHAT: - Introduce GET routes for unsubscribe pages. - Create new unsubscribe confirmation view templates. - Ignore 'Invalid multipart/form-data: EOFError' in Honeybadger.

WHY: - Provide a confirmation step to prevent accidental unsubscriptions. - Improve user experience by adding a safety net for unsubscription. - Reduce noise from non-actionable error reports in Honeybadger.

b3406fa

✨ Introduce slug-based URLs for activities and local groups

  • Add slug field to Activity and LocalGroup models.
  • Implement validations for slug presence, uniqueness, and format.
  • Provide input fields for slugs in activity and local group forms.
  • Create new routes for accessing activities and local groups by slug.
  • Redirect old ID-based URLs to the new slug-based URL format.

Why: - Improve URL readability and user experience. - Enhance SEO by using descriptive slugs in URLs. - Enable direct access to resources via their slugs within an organisation.

59a948d

🚚 events: Migrate event edit routes to use slugs

Refactor event edit routes from ID-based to slug-based URLs. This change applies to controllers, views, and tests, improving URL readability and user experience.

Also, refactor a conditional statement for conciseness.

44253b5

🐛 (event_feedbacks): Reduce maximum quote length to 500 characters
🎨 (organisations): Remove unnecessary div elements in event search form
🐛 (account_cache): Fix participant filtering and empty people check

Commits on Jun 26, 2025
d7d7db1

♻️ Refactor event feedback display and account cache

Extract event feedback public answers into a local variable. Limit the length of displayed event feedback quotes to 800 characters. Use Hash#slice instead of Hash#select for key filtering. Use Enumerable#any? instead of count > 0 for existence checks.

Prevent excessively long quotes from cluttering the homepage, improving readability. Enhance code readability and maintainability by using a dedicated variable for quotes. Improve performance and conciseness in account cache logic by using more idiomatic Ruby methods.

Commits on Jun 25, 2025
f1c305a

📌 Pin ferrum, update demo values, and refine UI text

  • Pin ferrum gem to version 0.14.0
  • Update CREATE_VIDEO demo values for ticket and worth counts
  • Refine introductory text in event build flow

  • Pin ferrum to prevent breaking scroll behavior in version 0.15

  • Update demo values to reflect higher numbers for video creation

  • Improve clarity and tone of intro messages for new orgs/events

aa94c94

🔒️ (comments.rb): Validate commentable_type before constantizing

Add validation for the commentable_type parameter in comment endpoints. This prevents arbitrary code execution by restricting constantize calls to predefined types, mitigating a security vulnerability.

96c13e2

🚨 (test/test_config.rb): Disable Lint/Debugger RuboCop rule

Allows the use of debugger statements in test configuration without triggering linter warnings or CI failures.

6ba4046

🎨 Improve code style and readability in helpers

  • Refactor partial helper to use idiomatic super call.
  • Add parentheses for clarity in random helper's range definition.
a77f4de

✨ (event): introduce responsible_name method to centralize event organizer logic
🐛 (event): fix event organizer display logic to correctly show "Promoted by" for experimental organizations
🐛 (purchase): fix terms and conditions display to use responsible_name for clarity and consistency