- Introduced ManageSlideSidebarComponent for displaying slide thumbnails with click functionality to navigate to the current page.
- Refactored ManagerSettingsComponent to improve layout and organization, including:
- Consolidated toggle options into a reusable toggle_row component for better maintainability.
- Enhanced the presentation and attendees settings sections with clearer labels and improved styling.
- Removed redundant code and improved readability.
The FormSubmit changeset required user_id, but anonymous attendees only
have attendee_identifier. This caused a CaseClauseError since the error
tuple was unhandled. Now the changeset accepts either user_id or
attendee_identifier, and error cases are properly handled.
* Fix critical security vulnerabilities
Address 5 critical findings from security audit:
- Sanitize custom embed HTML to prevent stored XSS (strip all non-iframe content)
- Escape URLs in format_body/1 to prevent reflected XSS via post messages
- Add authorization check to form export endpoint (IDOR fix)
- Replace String.to_atom/1 on user input with explicit whitelists (8 locations)
- Add IP-based rate limiting on authentication endpoints via Hammer
* Start rate limiter before endpoint in supervision tree
* Update CHANGELOG
- Add custom btn-gradient utility for cyan-to-purple gradient buttons
- Update all buttons to use DaisyUI classes (btn-primary, btn-outline, btn-secondary, etc.)
- Apply gradient style to "Create an event" and "Join" buttons only
- Increase grid card height to h-96 and adjust panel position for better content visibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Updated background styles in event join page to a solid color.
- Simplified button styles across various components, replacing complex gradient backgrounds with utility classes.
- Adjusted layout and spacing in profile dropdown and user menu for improved accessibility and readability.
- Enhanced alert and badge components with new styling classes for better visual consistency.
- Refined tab component styles for better alignment and spacing.
- Cleaned up button component attributes for clarity and maintainability.
- Improved test readability by formatting multiline statements.
- Add gray color palette to theme.css
- Add disabled attribute support to Tabs component
- Refactor event list filter tabs to use the Tabs component
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Drops Mua in favour of the SMTP Swoosh adapter and adjusts the config
accordingly. The lock file has also been cleaned up by running
`mix deps.unlock --unused`.
Create tabs component based on DaisyUI design system:
- Styles: bordered (underline), lifted (raised active), boxed (pill)
- Support for slot-based tab items with active state
- Individual tab_item component for more control
- Accessible with role="tablist" and aria-selected
- Support for phx-click handlers on tabs
Import component globally in claper_web.ex.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create a comprehensive button component based on DaisyUI design system:
- Styles: primary, secondary, neutral, accent, ghost, default
- Sizes: xs (24px), sm (32px), md (48px), lg (64px)
- Shapes: square (rounded-lg) and circle (pill)
- Support for left/right icon slots
- Disabled state with proper styling
- Icon-only button variant (icon_button)
Import component globally in claper_web.ex for use in all views/LiveViews.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* add quiz_responses association to user
* bugfix possible duplicate key entries in multi when adding quiz responses
* remove user_id from casting changeset in QuizResponse
* pass whole user to submit_quiz function
* update test to match changes
* simplify submit_quiz/3 function for inserting quiz response
---------
Co-authored-by: Dimitrije Dimitrijevic <me@dimitrijedimitrijevic.com>