Subscribe
03 Dec, 2025

[0.2.2.5] - 2025-12-03

Added

  • Screen Share Permission Control:[cite_start]Implemented screenshare_roles shortcode parameter to granularly control who can share their screen[cite: 25].[cite_start]'all' Support: Setting screenshare_roles="all" allows every participant (including guests) to share their screen[cite: 25].[cite_start]Specific Roles: Supports comma-separated role slugs (e.g., screenshare_roles="subscriber,customer")[cite: 25].[cite_start]Presenter Rights: Presenters/Admins always retain screen sharing rights regardless of this setting[cite: 25].
  • [cite_start]Implemented screenshare_roles shortcode parameter to granularly control who can share their screen[cite: 25].
  • [cite_start]'all' Support: Setting screenshare_roles="all" allows every participant (including guests) to share their screen[cite: 25].
  • [cite_start]Specific Roles: Supports comma-separated role slugs (e.g., screenshare_roles="subscriber,customer")[cite: 25].
  • [cite_start]Presenter Rights: Presenters/Admins always retain screen sharing rights regardless of this setting[cite: 25].
  • State Persistence (Lobby to Meeting):Seamless Transition: Implemented logic to carry over the user's Microphone (Mute/Unmute) and Camera (On/Off) states from the Lobby to the Meeting Room.Smart Initialization:Camera Off in Lobby: The meeting starts with the camera disabled (no track created to save resources), but the "Enable Camera" button remains active/clickable.Mic Muted in Lobby: The meeting starts with the microphone track muted immediately.Backend Integration: Updated wpj_generate_token_callback to receive mic_state and cam_state params and store them securely in the WordPress Transient (mic_enabledcam_enabled).
  • Seamless Transition: Implemented logic to carry over the user's Microphone (Mute/Unmute) and Camera (On/Off) states from the Lobby to the Meeting Room.
  • Smart Initialization:Camera Off in Lobby: The meeting starts with the camera disabled (no track created to save resources), but the "Enable Camera" button remains active/clickable.Mic Muted in Lobby: The meeting starts with the microphone track muted immediately.
  • Camera Off in Lobby: The meeting starts with the camera disabled (no track created to save resources), but the "Enable Camera" button remains active/clickable.
  • Mic Muted in Lobby: The meeting starts with the microphone track muted immediately.
  • Backend Integration: Updated wpj_generate_token_callback to receive mic_state and cam_state params and store them securely in the WordPress Transient (mic_enabledcam_enabled).
  • Enhanced UI/UX (Lobby):Icon-Only Device Selectors: Redesigned the Lobby device dropdown buttons to be cleaner (Icon only), removing the text labels to save space.Smart Tooltips:Device Info: Moved the active device name to a multi-line tooltip (e.g., "Pick Microphone - current: Default") that appears on hover.Dynamic Controls: Added real-time dynamic tooltips to Mic/Cam buttons that update based on state (e.g., toggling between "Mute microphone" and "Unmute microphone").Localization: Added new translation keys (pick_mic_currentpick_cam_currentmute_microphonedisable_camera, etc.) to translations.json.
  • Icon-Only Device Selectors: Redesigned the Lobby device dropdown buttons to be cleaner (Icon only), removing the text labels to save space.
  • Smart Tooltips:Device Info: Moved the active device name to a multi-line tooltip (e.g., "Pick Microphone - current: Default") that appears on hover.Dynamic Controls: Added real-time dynamic tooltips to Mic/Cam buttons that update based on state (e.g., toggling between "Mute microphone" and "Unmute microphone").
  • Device Info: Moved the active device name to a multi-line tooltip (e.g., "Pick Microphone - current: Default") that appears on hover.
  • Dynamic Controls: Added real-time dynamic tooltips to Mic/Cam buttons that update based on state (e.g., toggling between "Mute microphone" and "Unmute microphone").
  • Localization: Added new translation keys (pick_mic_currentpick_cam_currentmute_microphonedisable_camera, etc.) to translations.json.

Changed

  • Parameter Renaming:[cite_start]Renamed share_roles to screenshare_roles for better clarity and standard naming convention[cite: 27].
  • [cite_start]Renamed share_roles to screenshare_roles for better clarity and standard naming convention[cite: 27].
  • Logic Refinement:[cite_start]Updated wpj_generate_token_callback to calculate can_share status server-side based on the context key and store it in the session[cite: 27].
  • [cite_start]Updated wpj_generate_token_callback to calculate can_share status server-side based on the context key and store it in the session[cite: 27].
  • Lobby Logic (wpj-lobby.js):Refactored populateDeviceDropdowns to update data-wpj-tooltip attributes instead of button text.Added updateControlTooltip() helper for real-time state feedback.Updated proceedToJoin to capture and send current device states to the server.
  • Refactored populateDeviceDropdowns to update data-wpj-tooltip attributes instead of button text.
  • Added updateControlTooltip() helper for real-time state feedback.
  • Updated proceedToJoin to capture and send current device states to the server.
  • Meeting Logic (wpj-meetingroom.js):Updated createVideoTask and createAudioTask to respect micEnabled and camEnabled flags from session data.UX Fix: Ensured the "Enable Camera" button remains enabled (.prop('disabled', false)) even if the user enters the room with the camera turned off, allowing them to enable it later.
  • Updated createVideoTask and createAudioTask to respect micEnabled and camEnabled flags from session data.
  • UX Fix: Ensured the "Enable Camera" button remains enabled (.prop('disabled', false)) even if the user enters the room with the camera turned off, allowing them to enable it later.
02 Dec, 2025

[0.2.2.4] - 2025-12-02

Added

  • Enhanced Shortcode Parameters:Added full support for customizing the lobby experience directly via shortcode attributes.room_title: Sets the welcome title displayed in the lobby (Default: "Meeting Room").display_name: Controls the user naming strategy. Options: FirstnameLastnameDisplaynameAnonym.room_id: Manually overrides the channel name (e.g., for creating a permanent VIP room).presenter_roles: Allows overriding global presenter permissions for a specific room (e.g., presenter_roles="editor,shop_manager").auto_approve: Controls waiting room logic (on/off).
  • Added full support for customizing the lobby experience directly via shortcode attributes.
  • room_title: Sets the welcome title displayed in the lobby (Default: "Meeting Room").
  • display_name: Controls the user naming strategy. Options: FirstnameLastnameDisplaynameAnonym.
  • room_id: Manually overrides the channel name (e.g., for creating a permanent VIP room).
  • presenter_roles: Allows overriding global presenter permissions for a specific room (e.g., presenter_roles="editor,shop_manager").
  • auto_approve: Controls waiting room logic (on/off).

Fixed

  • Critical Role Synchronization (BuddyBoss & Fallback):Fixed a logic gap where the user_role parameter was missing in the shared asset loader (wpj_load_lobby_assets), causing Admins/Presenters to be treated as guests (forcing them to "Knock") when joining from BuddyBoss tabs or non-standard pages.Resolution: The system now calculates the role server-side using the wpj_get_user_role_status helper and explicitly passes it to the JavaScript settings object in all scenarios.
  • Fixed a logic gap where the user_role parameter was missing in the shared asset loader (wpj_load_lobby_assets), causing Admins/Presenters to be treated as guests (forcing them to "Knock") when joining from BuddyBoss tabs or non-standard pages.
  • Resolution: The system now calculates the role server-side using the wpj_get_user_role_status helper and explicitly passes it to the JavaScript settings object in all scenarios.
  • Meeting Room Button Logic:Fixed an issue where the "Share Screen" button was missing for Presenters who were granted rights via Shortcode Override (presenter_roles).Resolution: The wpj_meetingroom_shortcode function now prioritizes the role stored in the secure Transient (session) over the global settings, ensuring HTML elements match the actual user permissions.
  • Fixed an issue where the "Share Screen" button was missing for Presenters who were granted rights via Shortcode Override (presenter_roles).
  • Resolution: The wpj_meetingroom_shortcode function now prioritizes the role stored in the secure Transient (session) over the global settings, ensuring HTML elements match the actual user permissions.

Changed

  • Refactored Asset Loading:Centralized lobby asset loading into a shared function wpj_load_lobby_assets() to ensure consistent behavior between standard WP pages and shortcode fallbacks.
  • Centralized lobby asset loading into a shared function wpj_load_lobby_assets() to ensure consistent behavior between standard WP pages and shortcode fallbacks.
01 Dec, 2025

[0.2.2.3] - 2025-12-01

Added

  • Settings Persistence (LocalStorage):Implemented intelligent device memory using browser localStorage.Lobby Persistence: Automatically restores the user's previously selected Microphone, Camera, and Speaker upon entering the lobby.Meeting Persistence: Saves any device changes made via the Device Dock during a meeting.Refresh Restoration: When refreshing the meeting room page, the system validates and restores the last active device configuration instead of resetting to defaults.Smart Validation: Added checks to ensure saved device IDs still exist physically (e.g., if a USB mic was unplugged) before attempting to restore them, falling back gracefully if missing.
  • Implemented intelligent device memory using browser localStorage.
  • Lobby Persistence: Automatically restores the user's previously selected Microphone, Camera, and Speaker upon entering the lobby.
  • Meeting Persistence: Saves any device changes made via the Device Dock during a meeting.
  • Refresh Restoration: When refreshing the meeting room page, the system validates and restores the last active device configuration instead of resetting to defaults.
  • Smart Validation: Added checks to ensure saved device IDs still exist physically (e.g., if a USB mic was unplugged) before attempting to restore them, falling back gracefully if missing.

Refactored

  • Code Cleanup (wpj-lobby.js):Removed redundant global variable declarations for dropdown elements.Consolidated device population logic into a single, cleaner function with local scoping to prevent variable collisions.
  • Removed redundant global variable declarations for dropdown elements.
  • Consolidated device population logic into a single, cleaner function with local scoping to prevent variable collisions.
28 Nov, 2025

[0.2.2.1] - 2025-11-28

Added

  • Network Quality Indicator:Added a visual connection strength indicator (Signal Icon) to the top-left corner of every video tile.Real-time Feedback: The icon changes color (Green/Yellow/Red) and tooltip based on the real-time uplink/downlink quality reported by Agora RTC.Robust Handling: Implemented checks to handle undefined remote stats, ensuring the UI degrades gracefully if a user is not sending streams.
  • Added a visual connection strength indicator (Signal Icon) to the top-left corner of every video tile.
  • Real-time Feedback: The icon changes color (Green/Yellow/Red) and tooltip based on the real-time uplink/downlink quality reported by Agora RTC.
  • Robust Handling: Implemented checks to handle undefined remote stats, ensuring the UI degrades gracefully if a user is not sending streams.

Fixed

  • Network UI Selector: Updated the network indicator update logic to use ID-based selectors (#player-wrapper-{safeId}) instead of attribute selectors ([data-uid]) for reliable DOM targeting across all user types.
  • Network Quality Stuck State: Fixed a critical issue where the indicator remained stuck on "Checking connection..." for remote users who were muted or not publishing video.Logic Change: Switched iteration source from Agora's stats.remoteUsers (which is empty for idle users) to rtcClient.remoteUsers (client list source of truth).Fallback: Implemented default "Good" status for users with no active stream stats to prevent UI confusion.
  • Logic Change: Switched iteration source from Agora's stats.remoteUsers (which is empty for idle users) to rtcClient.remoteUsers (client list source of truth).
  • Fallback: Implemented default "Good" status for users with no active stream stats to prevent UI confusion.
28 Nov, 2025

[0.2.2.2] - 2025-11-28

Added

  • UI Tooltips (UX Enhancement):Added CSS-based tooltips to all meeting control buttons (Mute, Camera, Share, Leave) and the Device Settings dock.Smart Positioning: Tooltips automatically adjust alignment (Center/Left) to prevent being cut off by the screen edge (e.g., Gear icon at the bottom-left).Dynamic Status: Tooltips text updates dynamically based on state (e.g., "Mute" vs "Unmute", "Spotlight" vs "Un-Spotlight").Localization: All tooltip texts are fully translatable via translations.json and wpj_t().
  • Added CSS-based tooltips to all meeting control buttons (Mute, Camera, Share, Leave) and the Device Settings dock.
  • Smart Positioning: Tooltips automatically adjust alignment (Center/Left) to prevent being cut off by the screen edge (e.g., Gear icon at the bottom-left).
  • Dynamic Status: Tooltips text updates dynamically based on state (e.g., "Mute" vs "Unmute", "Spotlight" vs "Un-Spotlight").
  • Localization: All tooltip texts are fully translatable via translations.json and wpj_t().

Fixed

  • Settings Gear Tooltip: Fixed a CSS issue where the tooltip for the Device Settings gear was clipped by the left screen edge.
27 Nov, 2025

[0.2.1.0] - 2025-11-27

Changed

  • Stretched Grid Layout:CSS: Removed forced 50% height on sub-grids in stretched mode. Grids now naturally stack based on content height.
  • CSS: Removed forced 50% height on sub-grids in stretched mode. Grids now naturally stack based on content height.

Fixed

  • Critical Tile Visibility (Data-First Architecture):Changed the tile creation logic from "Video-First" to "Data-First".Tiles are now created immediately upon receiving RTM attributes (USER_ATTRIBUTES_UPDATE).Benefit: Users without cameras (Audio-Only) or those with delayed video tracks now appear instantly as avatars.
  • Changed the tile creation logic from "Video-First" to "Data-First".
  • Tiles are now created immediately upon receiving RTM attributes (USER_ATTRIBUTES_UPDATE).
  • Benefit: Users without cameras (Audio-Only) or those with delayed video tracks now appear instantly as avatars.
  • Background Throttling (Heartbeat System):Implemented attributeSyncInterval (10s) to periodically broadcast user presence.Benefit: Fixes issues where users in background tabs (minimized browsers) would "disappear" or fail to sync status.
  • Implemented attributeSyncInterval (10s) to periodically broadcast user presence.
  • Benefit: Fixes issues where users in background tabs (minimized browsers) would "disappear" or fail to sync status.
  • Grid Stability (Anti-Flashing):Added Data Diffing logic to the RTM listener. The grid only re-sorts if role or joinTime changes, eliminating UI flicker during Heartbeat updates.
  • Added Data Diffing logic to the RTM listener. The grid only re-sorts if role or joinTime changes, eliminating UI flicker during Heartbeat updates.
  • Screen Share Border Radius (The Clipper Fix):Implemented a JS-based Clipper Wrapper (<div class="clipper">) for screen sharing.Benefit: Solves the persistent "Overflow Hidden" bug on Chrome/Edge where the video player ignored border-radius.
  • Implemented a JS-based Clipper Wrapper (<div class="clipper">) for screen sharing.
  • Benefit: Solves the persistent "Overflow Hidden" bug on Chrome/Edge where the video player ignored border-radius.
  • Page Refresh Logic:Updated leaveMeeting() with a shouldRedirect parameter.Browser refresh (beforeunload) now gracefully cleans up resources without kicking the user back to the lobby.
  • Updated leaveMeeting() with a shouldRedirect parameter.
  • Browser refresh (beforeunload) now gracefully cleans up resources without kicking the user back to the lobby.
26 Nov, 2025

[0.2.0.9] - 2025-11-26

Added

  • Advanced Device Management:Speaker Selection: Added support for selecting Audio Output devices (Speakers) in both Lobby and Meeting Room (Chrome/Edge only).Device Sync: Microphone, Camera, and Speaker selections from the Lobby are seamlessly synced to the Meeting Room.Smart Device Dock:Implemented a "Pop-up" style menu for device selection.Auto-Hide: The device dock gear icon automatically hides if there are no alternative devices to switch to, keeping the UI clean.Hot-Plugging: The dock automatically reappears if a new device is plugged in during the meeting.Device Deduplication: Implemented logic to filter out duplicate/virtual devices (e.g., "Default" vs "Communications") on Windows to show only unique hardware.
  • Speaker Selection: Added support for selecting Audio Output devices (Speakers) in both Lobby and Meeting Room (Chrome/Edge only).
  • Device Sync: Microphone, Camera, and Speaker selections from the Lobby are seamlessly synced to the Meeting Room.
  • Smart Device Dock:Implemented a "Pop-up" style menu for device selection.Auto-Hide: The device dock gear icon automatically hides if there are no alternative devices to switch to, keeping the UI clean.Hot-Plugging: The dock automatically reappears if a new device is plugged in during the meeting.
  • Implemented a "Pop-up" style menu for device selection.
  • Auto-Hide: The device dock gear icon automatically hides if there are no alternative devices to switch to, keeping the UI clean.
  • Hot-Plugging: The dock automatically reappears if a new device is plugged in during the meeting.
  • Device Deduplication: Implemented logic to filter out duplicate/virtual devices (e.g., "Default" vs "Communications") on Windows to show only unique hardware.

Changed

  • Session Persistence (Refresh Support):Changed transient security logic from "Burn on Entry" to "Sliding Expiration" (1-hour extension on access).Users can now refresh the meeting room without being kicked out, while maintaining security against unauthorized access.
  • Changed transient security logic from "Burn on Entry" to "Sliding Expiration" (1-hour extension on access).
  • Users can now refresh the meeting room without being kicked out, while maintaining security against unauthorized access.
  • Screen Share Logic:Camera Unlock: Removed the restriction that disabled the camera toggle during screen sharing. Users can now freely toggle their camera on/off while presenting (Dual-Client architecture).
  • Camera Unlock: Removed the restriction that disabled the camera toggle during screen sharing. Users can now freely toggle their camera on/off while presenting (Dual-Client architecture).

Fixed

  • Device Dock Race Condition: Fixed a bug where the device dock wouldn't hide correctly on load due to execution order issues.
25 Nov, 2025

[0.2.0.8] - 2025-11-25

Added

  • Waiting Room & Approval System:Implemented a manual approval flow for non-presenter users when auto_approve is disabled.Lobby: Users send "Knock" requests via RTM and wait for a host response. Implemented a "Heartbeat" mechanism (every 3s) to ensure new presenters see pending requests immediately.Presenter UI: Presenters receive "Join Requests" as Toast notifications with Approve/Reject buttons.Co-Host Sync: Approval/Rejection actions are synchronized; if one presenter handles a request, the toast automatically clears for all other presenters.
  • Implemented a manual approval flow for non-presenter users when auto_approve is disabled.
  • Lobby: Users send "Knock" requests via RTM and wait for a host response. Implemented a "Heartbeat" mechanism (every 3s) to ensure new presenters see pending requests immediately.
  • Presenter UI: Presenters receive "Join Requests" as Toast notifications with Approve/Reject buttons.
  • Co-Host Sync: Approval/Rejection actions are synchronized; if one presenter handles a request, the toast automatically clears for all other presenters.
  • Presenter Bypass: Users with the presenter role (e.g., Administrator) now bypass the waiting room and join directly, regardless of settings.

Changed

  • Improved Grid Scrolling (Desktop UX):Implemented Independent Scrolling for Presenter and User grids on desktop layouts.Benefit: Users can scroll through the participant list without losing sight of the presenters (or vice versa).Styling: Added custom thin scrollbars (-webkit-scrollbar) to minimize visual clutter in the split view.
  • Implemented Independent Scrolling for Presenter and User grids on desktop layouts.
  • Benefit: Users can scroll through the participant list without losing sight of the presenters (or vice versa).
  • Styling: Added custom thin scrollbars (-webkit-scrollbar) to minimize visual clutter in the split view.
  • Mobile Scroll Logic:Preserved unified vertical scrolling for mobile layouts (< 767px) to ensure a seamless touch experience without nested scroll traps.
  • Preserved unified vertical scrolling for mobile layouts (< 767px) to ensure a seamless touch experience without nested scroll traps.
  • Desktop Grid Layout (Independent Scrolling):Implemented independent scrolling for Presenter and User grids on desktop.Benefit: Allows users to scroll through large participant lists without losing visibility of the presenters.Styling: Applied custom thin scrollbars (-webkit-scrollbar) for a cleaner UI.
  • Implemented independent scrolling for Presenter and User grids on desktop.
  • Benefit: Allows users to scroll through large participant lists without losing visibility of the presenters.
  • Styling: Applied custom thin scrollbars (-webkit-scrollbar) for a cleaner UI.
  • Mobile/Tablet Layout Refinements:Natural Stacking: Removed the forced 50% height split in mobile view. Sub-grids now stack naturally based on their content height.Stretched Mode Optimization: Adjusted the mobile layout when Screen Share/Stretch is active:Stage Area: Fixed to 30% height to maintain visibility.Grid Area: Takes the remaining 70% height for scrollable participant tiles.Full Width: Forced .wpj_call-grid to 100% width on mobile to prevent flexbox shrinking issues.
  • Natural Stacking: Removed the forced 50% height split in mobile view. Sub-grids now stack naturally based on their content height.
  • Stretched Mode Optimization: Adjusted the mobile layout when Screen Share/Stretch is active:Stage Area: Fixed to 30% height to maintain visibility.Grid Area: Takes the remaining 70% height for scrollable participant tiles.
  • Stage Area: Fixed to 30% height to maintain visibility.
  • Grid Area: Takes the remaining 70% height for scrollable participant tiles.
  • Full Width: Forced .wpj_call-grid to 100% width on mobile to prevent flexbox shrinking issues.

Fixed

  • User List Ghosting: Fixed a bug where waiting users (guest_xxx) appeared in the meeting room User List before being approved.
  • Duplicate Tiles: Added strict checks to prevent duplicate video tiles for the same UID in the DOM.
  • View Transition Crash: Added error handling for View Transition API to prevent UI freezes during layout updates.
20 Nov, 2025

[0.2.0.7] - 2025-11-20

Added

  • Stretch Video (Expand Mode):Added a "Stretch" button to user video tiles.Functionality: Moves the selected user's video to the main stage (previously reserved only for screen sharing) for a larger view.Smart Interaction:Screen Share Priority: If a screen share starts (local or remote), any stretched video is automatically unstretched and returned to the grid to prioritize the presentation.Single Focus: Stretching a second user automatically unstretches the current one.Toggle: Clicking the stretch button again returns the user to their original position in the grid.
  • Added a "Stretch" button to user video tiles.
  • Functionality: Moves the selected user's video to the main stage (previously reserved only for screen sharing) for a larger view.
  • Smart Interaction:Screen Share Priority: If a screen share starts (local or remote), any stretched video is automatically unstretched and returned to the grid to prioritize the presentation.Single Focus: Stretching a second user automatically unstretches the current one.Toggle: Clicking the stretch button again returns the user to their original position in the grid.
  • Screen Share Priority: If a screen share starts (local or remote), any stretched video is automatically unstretched and returned to the grid to prioritize the presentation.
  • Single Focus: Stretching a second user automatically unstretches the current one.
  • Toggle: Clicking the stretch button again returns the user to their original position in the grid.
  • Pin Video (Pinned Strip):Added a Pinned Strip area at the bottom of the screen (above the toolbar).Added a "Pin" button to user tiles.Functionality: Moves the user's video to the bottom strip, keeping them visible regardless of grid pagination or layout changes.Pin-to-Stretch Logic: If a pinned user is stretched, they move to the main stage. When unstretched, they return to the main grid (resetting the pin state), preventing UI conflicts.
  • Added a Pinned Strip area at the bottom of the screen (above the toolbar).
  • Added a "Pin" button to user tiles.
  • Functionality: Moves the user's video to the bottom strip, keeping them visible regardless of grid pagination or layout changes.
  • Pin-to-Stretch Logic: If a pinned user is stretched, they move to the main stage. When unstretched, they return to the main grid (resetting the pin state), preventing UI conflicts.
  • Local User Controls (Self-View):Self-Pin & Self-Stretch: Added support for local users to Pin or Stretch their own video tile.Implementation: The local player tile now shares the same ID structure and button logic as remote users, allowing seamless interaction with layout features.
  • Self-Pin & Self-Stretch: Added support for local users to Pin or Stretch their own video tile.
  • Implementation: The local player tile now shares the same ID structure and button logic as remote users, allowing seamless interaction with layout features.
  • Real-time Chat System:Integrated a text chat interface within the Sidebar (#wpj_sidebar--messages).Functionality: Allows participants to send and receive messages instantly via Agora RTM.Smart Notifications: Automatically injects a notification badge (red dot with count) into the Message toolbar button when the sidebar is hidden or when viewing the People tab.
  • Integrated a text chat interface within the Sidebar (#wpj_sidebar--messages).
  • Functionality: Allows participants to send and receive messages instantly via Agora RTM.
  • Smart Notifications: Automatically injects a notification badge (red dot with count) into the Message toolbar button when the sidebar is hidden or when viewing the People tab.
  • Device Settings Dock:Replaced the static device settings panel with a collapsible Settings Dock (floating gear icon) at the bottom-left.Improved UI/UX for managing Microphone and Camera selections during the meeting.
  • Replaced the static device settings panel with a collapsible Settings Dock (floating gear icon) at the bottom-left.
  • Improved UI/UX for managing Microphone and Camera selections during the meeting.

Changed

  • Optimistic UI Initialization (Instant Join):Re-architected the join flow to execute startMeetingTimer() and initial Grid Sorting immediately after local DOM creation.Benefit: Eliminates the ~3-second perceived delay ("frozen state") while waiting for RTC/RTM connection and hardware acquisition. The room UI now feels instant and responsive.
  • Re-architected the join flow to execute startMeetingTimer() and initial Grid Sorting immediately after local DOM creation.
  • Benefit: Eliminates the ~3-second perceived delay ("frozen state") while waiting for RTC/RTM connection and hardware acquisition. The room UI now feels instant and responsive.
  • Smooth Layout Transitions:Implemented the View Transitions API (with fallback) for grid sorting operations.Added CSS keyframe animations for tile entry (Pop-in effect).Benefit: Eliminates visual "glitches" or jumping tiles when users join/leave or when re-sorting the grid. Tiles now smoothly slide to their new positions.
  • Implemented the View Transitions API (with fallback) for grid sorting operations.
  • Added CSS keyframe animations for tile entry (Pop-in effect).
  • Benefit: Eliminates visual "glitches" or jumping tiles when users join/leave or when re-sorting the grid. Tiles now smoothly slide to their new positions.
  • UI Refinements:Updated "Pin" icon to a solid, 45-degree angled design for better visibility.Updated "Gear" icon to a solid filled style for the new Device Dock.Improved button visibility and hover states in the video tiles.
  • Updated "Pin" icon to a solid, 45-degree angled design for better visibility.
  • Updated "Gear" icon to a solid filled style for the new Device Dock.
  • Improved button visibility and hover states in the video tiles.
19 Nov, 2025

[0.2.0.6] - 2025-11-19

Added

  • Moderator Controls (Mute/Kick): Presenters can now remote-control participants via the User List sidebar:Remote Mute: Allows the host to mute a participant's microphone (sends an RTM signal to the target client).Kick User: Allows the host to remove a participant from the meeting instantly.Mute Toggle Logic: The mute command now intelligently toggles the state (Mute if open, Unmute if closed) rather than just forcing mute.
  • Remote Mute: Allows the host to mute a participant's microphone (sends an RTM signal to the target client).
  • Kick User: Allows the host to remove a participant from the meeting instantly.
  • Mute Toggle Logic: The mute command now intelligently toggles the state (Mute if open, Unmute if closed) rather than just forcing mute.
  • Active Discovery Protocol (Name Sync):Implemented a new RTM command CMD_WHO_ARE_YOU.Logic: Upon joining (or re-joining), the client now broadcasts a discovery request. All existing participants immediately reply with their user attributes (unamerole).Benefit: Guarantees that the User List and Video Grid display correct names instantly instead of UIDs, even if the standard REMOTE_JOIN event is delayed or missed.
  • Implemented a new RTM command CMD_WHO_ARE_YOU.
  • Logic: Upon joining (or re-joining), the client now broadcasts a discovery request. All existing participants immediately reply with their user attributes (unamerole).
  • Benefit: Guarantees that the User List and Video Grid display correct names instantly instead of UIDs, even if the standard REMOTE_JOIN event is delayed or missed.
  • Robust Audio-Only Support: Users without a camera (or with permission denied) can now successfully join meetings in "Audio-Only" mode.Lobby: Displays a friendly "Microphone ready (Audio only)" status instead of an error.Meeting Room: Automatically shows the user's avatar and disables the camera toggle button.
  • Lobby: Displays a friendly "Microphone ready (Audio only)" status instead of an error.
  • Meeting Room: Automatically shows the user's avatar and disables the camera toggle button.
  • Configurable Video Resolutions: Added Admin Settings to select default resolutions for Camera and Screen Share (Standard 480p, Medium 720p, High 1080p).
  • Audio Enhancements: Explicitly enabled Agora's built-in Noise Suppression (ANS), Echo Cancellation (AEC), and Automatic Gain Control (AGC).

Changed

  • Major Performance Optimization (Instant Join): Re-architected the joinMeeting flow for maximum responsiveness (Instant Mirror, Non-blocking RTM).
  • Smoother Grid Layout: Replaced setTimeout with requestAnimationFrame in grid sorting logic.

Fixed

  • User Re-join Race Condition: Fixed a critical bug where a re-joining presenter (or user) would see other participants as UIDs instead of names until they interacted. The new Active Discovery logic ensures immediate synchronization of user profiles.
  • Sidebar Interaction: Solved a critical bug where e.stopPropagation() prevented Admin buttons (Mute/Kick) from being clickable. Implemented smart event delegation to allow button clicks while keeping the sidebar open.
  • Real-time Mute Sync: Fixed the mute icon state in the User List. It now correctly reflects the remote user's actual microphone status in real-time.