This release brings WebRTC streaming as its headline feature: besides HDMI capture cards, a Display window can now show a remote WebRTC stream from the Roku Cloud Emulator, the BrightScript Simulator (remote screen service enabled), or any WebRTC (WHEP) stream URL. Everything else works on a stream window too: control keys, screenshots, video recording, overlay images, automation scripts and the MCP server.
Device setup is also redesigned: the device grid on the General tab and the Streams and Control tabs are replaced by two tabs, Video (what you watch) and Control (what you send remote presses to). Each has a checklist dialog — Choose video and Choose devices — where Carabiner shows what it found and you check what you want; changes apply right away.
- Video tab: the chosen video sources, each with its kind icon (🎥 Capture Card, ☁️ Emulator, 🖥️ Simulator), status, a Control picker and an Active switch. Allow multiple active sets the window mode (one window at a time, or one per source).
- Control tab: the chosen control devices grouped by type, with a dot showing whether each one is reachable. Choose devices scans the network for Rokus every time it opens (BrightScript Simulators are left out — their control comes with their video), supports Select all, and adds Fire TV, Google TV, Apple TV, Xumo or remote Rokus by hand (with the per-type setup notes).
Upgrading from 2.x: your capture cards, control devices, window settings and links carry over, and everything shows as checked on the Video and Control tabs.
What's Changed
- fix: screenshot and video recording file format mismatches and add recording format preference by @lvcabral in #106
- Add WebRTC streaming: BrightScript Simulator and Roku Cloud Emulator stream sources by @lvcabral in #107
- Built-in control for each stream (Cloud Emulator keys through its authenticated Device API, Simulator keys through its ECP port), created, linked and removed together with the stream
- Cloud Emulator access token encrypted with the OS keychain, with consent required before storing it unencrypted
- Connecting animation (inside the display border) and stream name while a stream loads, with automatic reconnection
- Record streams through a fixed-size canvas (720p/1080p) so quality changes don't corrupt the video
- Label streams as
<name> (RCE|Simulator)in menus and selectors; the Linked Device menu shows the current control and is disabled for streams - Regular Window option (title bar, native border, resizable) and new Display windows opening 820 pixels wide
- Wider Settings window and arrows on dropdown lists
- Fix the recording save toast showing the suggested file name instead of the chosen one, and fix stopping a stream during a recording throwing an error
- Code review fixes: ordered stream control keys with request timeouts, and cancelling superseded stream connections
- Fix npm audit issues and upgrade dependencies (Electron 44, Electron Forge 8) by @lvcabral in #110
- Migrate the settings UI build from Create React App to Vite by @lvcabral in #111
- Add
npm run devwith live reload by @TwitchBronBron in #108 - Unify video sources and control devices into Video and Control tabs by @TwitchBronBron and @lvcabral in #112 (continues #109)
- Video and Control tabs with Choose video / Choose devices checklist dialogs, replacing the General device grid and the Streams and Control tabs
- Multiple Roku Cloud Emulator accounts (refresh, rename, remove), BrightScript Simulator auto-detection, and WebRTC (WHEP) stream URLs with a built-in "Same host as stream" control
- Roku network scan with reachability check, Select all and permanent Remove; BrightScript Simulators are excluded from the scan
- adb / atvremote tool paths with setup guide links on the General tab; menus and MCP list only checked sources and devices
- Settings stay compatible with 2.x: new fields are optional and nothing is renamed
- Code review fixes: no tokens in the MCP settings snapshot, safe Cloud Emulator account refresh, one simulator per address, and taller Settings window
- Fix crash when pressing a modifier alone in the shortcut field by @lvcabral in #113
- Keep the Settings window above always-on-top Display windows by @lvcabral in #114
New Contributors
- @TwitchBronBron made their first contribution in #108 and #109
Full Changelog: v2.3.0...v3.0.0
Installation
Install using one of the artifacts below, or in MacOS via HomeBrew:
brew tap lvcabral/carabiner
brew install --cask carabinerTo upgrade to a newer version later:
brew update
brew upgrade --cask carabiner