* Fix OIDC compatibility with self-hosted providers like Authelia
* Refactor OIDC authentication to enhance compatibility with Authelia and Entra ID
* Improve logging format and enhance code readability in OIDC authentication
Stream presenter audio over Phoenix Channel, transcribe with Voxtral,
and display subtitles on presenter and attendee views. Configurable
via manage view toggles and MISTRAL_API_KEY env var.
- 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>