Update 2026-02-01
IMPORTANT : Code will change and be cleaned up, it's a bit of a pigs ear at the moment, but for now :
- Major re-write to use the vdo ninja sdk in-stead of butchering vdo ninja application
- Functionality is almost the same but over all experience will be smoother and faster
- Only one popup asking for device permissions, not multiple popups, multiple times
- Will no longer get flashes of the original vdo ninja interface
- No more using cookies, only local and session storage
- Local storage is correctly serialised
- No more need to continually connect / disconnect when changing devices, username or project name
- Project name can be changed after creation
- Increased room entropy to 24 random alpha-numeric, upper and lower case, characters - 6224
- Store 5 previous rooms and the settings for each (not encrypted but in browser local storage), so yes if somebody had access to your machine they could access previous rooms, but I'm guessing if somebody has access to your machine you probably have bigger issues
- Host can reload previous session settings and re-use previous rooms (for multi day events)
- Device capture and resolution now in sync (if set to stream at 1080p the device will try to capture at 1080p, no higher)
- Overall stability improvements and interface consistency
- Interface now dynamic, no markup if no video source and no volume control if no audio source connected
- Markups should be smoother and no longer glitch
- Markup now consistent between screens with different DPI settings
- Markups now maintain state (if a user joins late the latest markups are sent so all users have the same markup data)
- Changed the way the markup erase function works, users will now only erase their own markups, the host will still erase all markups as before
- Zoom in and out now more responsive, markups also behave more consistently when zoomed in
- Main stream bitrate and resolutions can now be changed in session without reconnect
- Resolution settings sets Maximum capture and encode resolution now
- Stream will never scale to greater than their original source for display at 100%
- Streams now auto calibrate for best resolution they start out at a slightly lower resolution and climb to the maximum set by the host over a few seconds.
- Streams will drop resolution to maintain frame rate on a peer by peer basis
- Bitrates updated to Low : 2mbps - 4mbps, med : 4mbps - 8mbps and high : 8mbps - 16mbps
- Bitrate is dynamic and will start lower until eventually reaching maximum selected
- Bitrate is adaptive and may drop on peer by peer basis, will attempt to maintain frame rate
- Streaming can be started without selecting any devices, a temporary audio and video stream is created and is replaced as devices are selected
- Host can blind or deafen main stream for all peers dynamically
- Automatically add (host) to host streamer user name
- Host is always top of peer list, user is always second, other users appear below
- Added help section for users on connect
- Users must enter a user name, this is optional for the host
- Users can join without selecting a microphone or camera
- Users who join without a device display their name correctly in the peer list
- Peer camera previews are smaller than before (60px now, were 80px before)
- Visual clues if user has connected without audio or is mute (No outline, no audio device. Red outline, mute. White outline, live)
- Interface updates dynamically to show mute microphone and camera buttons for user if they have selected corresponding device
- Peer list updates dynamically to show user microphone status
- User camera is now limited to less than 50 kbps and 15 fps
- Audio cue on user connect and disconnect for the host only
- Have limited to h264 and OPUS for compatibility at moment
- New notifications panel
- Mobile will no longer show the peers on the left
- Added a check to see. if the app is in focus to stop device sleep
- Simplified home page splurb, will add back as new features get added