Mark legacy zero-byte placeholders as failed, validate files on show/download, and surface upload errors in the meeting room.
Co-authored-by: Cursor <cursoragent@cursor.com>
Capture the meeting in the host browser, upload to Ladill storage on stop, and remove the LiveKit egress placeholder job.
Co-authored-by: Cursor <cursoragent@cursor.com>
Recordings dispatch ProcessRecording to the database queue; without a worker they stay stuck at processing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Handle billing API failures gracefully on session start, add wallet.balance JSON endpoint, and sync Meet into the app launcher.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wallet debits at session end, on recording/file storage, and via daily renewals with grace period before asset deletion.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add meet-icons for leave, end, personal, and schedule; dashboard quick actions sit inline with the Meetings heading on small screens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Shared copy-button component shows Copied state on meeting details; mobile More is icon-only and opens the same panel pattern as chat.
Co-authored-by: Cursor <cursoragent@cursor.com>
Poll and waiting-room clients follow the same redirect when the host ends the call; chat and participants use mobile bottom sheets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show mic, camera, share, and More on mobile with Leave/End after a divider,
and move reactions, chat, and hand-raise into the More panel on small screens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show host-visible waiting badges and enable-audio prompts, harden mic
playback with LiveKit attach patterns, and swipe-scroll meeting controls on mobile.
Co-authored-by: Cursor <cursoragent@cursor.com>
Attach remote audio tracks for playback, remove stale participant cards on
leave, and remove the redundant Ladill Meet label from kiosk join pages.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unlock LiveKit audio after user gesture, respect join mute/video settings,
and replace plain links with btn-secondary pills on the meeting details page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Redesign public join flows on the Frontdesk kiosk template, enforce host
admission when waiting room is enabled, and collect star ratings after leave.
Co-authored-by: Cursor <cursoragent@cursor.com>
Initialize REC/Locked state before Alpine paints, and restore the copy-link
share dropdown on desktop instead of trapping users in native share cancel.
Co-authored-by: Cursor <cursoragent@cursor.com>
Guest joins without email were matching any active participant, overwriting
the host row and granting host controls; header now always shows room host.
Co-authored-by: Cursor <cursoragent@cursor.com>
Guests were sent through silent SSO after entering the meeting room because
/room routes required auth; failed SSO fell back to leftover Care config.
Co-authored-by: Cursor <cursoragent@cursor.com>
Build join URLs from meet.ladill.com config instead of APP_URL, which was still inherited from the Care app template.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve participant photos from linked user records for the header host chip and participants panel, with initials as fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show the host initials in the header in-call control and open a live participant list from poll data when it is clicked.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop header, footer, panel, and tile borders in favor of spacing, shadows, and rounded surfaces for a cleaner borderless layout.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove divider lines from the chat sidebar and wrap messages plus the composer in a single rounded box.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wrap the room chrome in a left column so the full-height chat panel pushes header, video, and toolbar together instead of only the main area.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep share in the header only, make chat a full-height side panel that pushes video left, and load meet icons from an allowlisted set with cache busting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use custom meet-icons assets, custom breakout/end modals instead of native prompts, and relocate share files, recording, and lock controls under the More dropdown.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use meet-icons assets for raise hand, applause, upload, and screen share; move More after lock, redesign the more menu and chat panel with bubbles and close controls.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose join URL and passcode in the room shell with header and toolbar share buttons, native share on supported devices, and a copy-link popover.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use the official LiveKit PHP SDK for tokens, harden client connect/publish timing, keep the Room outside Alpine reactivity, and replace emoji toolbar controls with synced mic/camera toggles and avatar tiles for audio-only participants.
Co-authored-by: Cursor <cursoragent@cursor.com>
Phases 0–18: core meetings, webinar, breakouts, team chat, live streaming, town hall, billing, and Ladill Mail calendar wiring.
Co-authored-by: Cursor <cursoragent@cursor.com>