Stop registerPresenter from demoting hosts to panelists, recognize room owners as managers, and show stage controls in the green room banner.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move the participant name strip below the speaker area instead of overlaying it, and use Ladill profile photos on no-video tiles before falling back to initials.
Co-authored-by: Cursor <cursoragent@cursor.com>
Templates duplicated create-form settings without edit/delete flows; drop the feature and table. Conference and webinar pages render synced programme snapshots and link back to Ladill Events.
Co-authored-by: Cursor <cursoragent@cursor.com>
Service rooms support town_hall/webinar types with source lookup, update, and cancel; stage poll no longer overwrites layout while the modal is open.
Co-authored-by: Cursor <cursoragent@cursor.com>
RoomController show may redirect to conference/webinar pages; SSO connect honors intended URL when already authenticated.
Co-authored-by: Cursor <cursoragent@cursor.com>
Webinars can enable multi-speaker stage layout at creation or on the details page; plenary view shows 12 attendee avatars before the overflow count.
Co-authored-by: Cursor <cursoragent@cursor.com>
Speakers get a full-screen spotlight with overlapping audience avatars; hosts can configure panels in the green room and switch layouts live.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hosts can assign team speakers and invite panelists by email from the
conference show page, with presenter refs synced to live sessions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Route guests through silent SSO to the Meet product page, fix Afia context
query, add conference green-room UX and copy, and extend service API for
Care/CRM/Invoice calendar integration.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the third-party comparison from the Rooms index subtitle and neutralize the SpaceService docblock.
Co-authored-by: Cursor <cursoragent@cursor.com>
Split town_hall into a Conferences sidebar flow and Spaces-style Rooms with host/speaker/listener roles; enforce audio-only LiveKit UI for rooms; show schedule icon on mobile meetings index.
Co-authored-by: Cursor <cursoragent@cursor.com>
Force light color-scheme on app shells while scoping dark UI to the live room; remove join/restart from list cards and consolidate start/join/rejoin on the details action row; route Join meeting through /r/ so participants are registered before entering /room/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Meetings and webinars now share GHS 0.30 per peak participant, with usage UI and plan quotas updated to match.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add restart meeting actions, a dedicated webinar sidebar flow billed at GHS 0.30 per participant, and reserve speaker-line space with a placeholder to prevent layout shift.
Co-authored-by: Cursor <cursoragent@cursor.com>
Highlight speaking participants on video tiles and in the panel, with header copy that names one or multiple speakers at once.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>