Subscribe
18 Nov, 2025

[0.2.0.5] - 2025-11-18

Added

  • Speaking Indicator: Added a visual indicator (green border) to video tiles when a participant is speaking. Configured with a stable 200ms polling interval for a balance of responsiveness and accuracy.
  • Screen Share Icon: Added a persistent status icon to the bottom-left of video tiles that becomes visible/green when a user is sharing their screen.
  • Token Renewal Safety Net: Implemented a proactive RTM token renewal mechanism that triggers alongside RTC token renewal to prevent "Server banned" errors (RTM logic is now synchronized with RTC).
  • Meeting Timer: Added a real-time meeting duration timer (HH:MM:SS) to the header.
  • Console Error Suppression: Added an interceptor to suppress harmless RTM socket errors when _WPJ_DEBUG_ is false.
  • PHP REST Endpoint: Added /wpj/v1/rtm-token for on-demand RTM token generation.

Changed

  • Performance Optimization (Concurrent Join): Refactored joinMeeting to execute RTC connection, RTM initialization, and Media Track creation in parallel (using Promise.all) to optimize the joining process.
  • Code Cleanup: Removed unused utility functions (e.g., convertMetadataArrayToObject) and fixed duplicate event listeners in initializeRtm.
14 Nov, 2025

[0.2.0.4] - 2025-11-14

Changed

  • Major Screen Share Overhaul: Re-architected screen sharing to use a Dual RTC Client model. The user now joins the channel with a second, dedicated client (e.g., [uid]_screen) to publish the screen track.
  • RTM Logic: RTM messages (SHARE_STARTSHARE_STOP) now include the screenUid to allow viewers to map the correct track to the correct user.
  • Remote Track Handling: handleUserPublished now checks for the _screen UID suffix to correctly route screen share streams to the main container, solving all previous race conditions.

Added

  • PHP REST Endpoint: Added a new REST API route (/wpj/v1/rtc-token) to generate RTC tokens on-demand for the new screen sharing client.

Fixed

  • Critical Error (CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS): This error is now fully resolved. The main client's camera track is no longer unpublished, allowing viewers to see both the user's camera and their screen share simultaneously.
  • User List: The user list (renderUserList) is now filtered to exclude screen share clients (e.g., uid_screen) from appearing as participants.
07 Nov, 2025

[0.2.0.3] - 2025-11-07

Changed

  • Major Security Overhaul: Replaced all insecure input type="hidden" fields and URL parameters with a secure, one-time-use WordPress Transient system. All data (Room ID, User Name, Mic/Cam IDs, Auto-Approve) is now passed securely via the server.
  • Improved Redirect Logic: The "Leave Meeting" button now correctly redirects users back to the specific Lobby URL they came from (which is passed securely via the Transient), instead of defaulting to the site's homepage.

Added

  • BuddyBoss Addon Integration: The main plugin is now "addon-aware" and checks for defined('WPJ_BUDDYBOSS_ADDON_ACTIVE').
  • Automatic Group ID: The plugin now automatically uses the BuddyBoss Group ID (via bp_get_current_group_id()) as the room_id when the [wpj_lobby] shortcode is used within a group tab.

Fixed

  • Critical Addon Fix: Fixed the WPJ_BUDDYBOSS_ADDON_ACTIVE constant not being defined on the front-end. Moved its definition from the admin_init hook to the plugins_loaded hook in the addon file.
  • Critical Fallback Loader Fix: Fixed incorrect file paths in the shortcode.php fallback loader. plugins_url() calls for wpj-lobby.js and wpj-front-style.css now correctly use ../public/ to find the assets folder.
  • Fixed: Major RTM (User List) Overhaul: Reworked the entire user list logic. Replaced the failing RTM Storage (setUserMetadata) system with a new method using RTM Channel Messages (publish) to broadcast user names (uname) and roles. This resolves the -12019 and -10019 errors.
  • Fixed: User List Race Condition: Solved the critical bug where late-joiners (User 2) could not see users already in the room (User 1). The app now uses getOnlineUsers (with correct 'MESSAGE' type) and existing users re-publish their attributes when a new user joins (REMOTE_JOIN).
  • Fixed: RTM Message Payload: Corrected the bug where user data was received as undefined. The app now correctly parses event.message instead of the non-existent event.message.text.
  • PHP Fatal Error Fix: Resolved a TypeError in jd-wpjointly.php where wpj_t() was called with a string as the second argument instead of the required array.
  • PHP Security Fix: Resolved the "Session data NOT FOUND" race condition by migrating from unreliable PHP Sessions to the robust WordPress Transient API.
05 Nov, 2025

[0.2.0.2] – 2025-11-05

Added

  • Added User List sidebar (#wpj_people) to display all participants.
  • Added sidebar toggle logic: click icon to open, click same icon to close, or click other icon to switch panes.
  • Added "click outside" functionality to close the sidebar.
  • Added sanitization for user_account in the lobby AJAX call to prevent errors.
  • Added sanitization for channelName on the server-side (wpj_generate_token_callback) for better security.

Changed

  • Major Change: Upgraded the entire Real-Time Messaging (RTM) API from v1.x to v2.2.2 (Signaling SDK) to support new token authentication.
  • RTM constructor now correctly uses new RTM(appId, userId) and .login({ token }) per v2.2.2 documentation.
  • RTM event listeners updated from .on() to the correct .addEventListener() method.
  • RTM channel/presence subscription consolidated into a single .subscribe(channel, { withPresence: true }) call.
  • Asset Fix: Replaced all 404-ing <img> icons (Sidebar Close, Chat Send, Default Avatar) with inline <svg> elements for faster loading and reliability.
  • Loader Fix: Forced Agora SDK scripts (RTC & RTM) to load in the <head> (in_footer = false) to prevent JavaScript race conditions in the footer.
  • Passed user_role from PHP directly to wpj-meetingroom.js via the settings object.

Fixed

  • RTM Fix: Fixed persistent bug where whoNow function failed with "Invalid channel type" by explicitly specifying the 'MESSAGE' channel type.
  • RTM Fix: Fixed crash (TypeError: reading 'length' of undefined) when checking whoNow results on an empty or new channel by adding proper safety checks.
  • Lobby UI Fix: Fixed control buttons (Mic/Cam) in Lobby disappearing during video preview (Corrected jQuery .empty() to .remove()).
  • Meeting UI Fix: Fixed footer toolbar icons (Mic/Cam/Leave) being squashed (4x22px bug) by adding flex-shrink: 0 to the SVG CSS.
  • Shortcode Fix: Removed hardcoded width/height attributes from all SVGs in shortcode.php to allow CSS to take control.
03 Mar, 2023

[0.1.0.0] – [0.1.9.9] 2023-23-03

Live on client sites - Meeting, Chat, Presenter controle.