← dualirl.com

What's new

The running list of user-facing changes across Dual IRL — the app, the free tools, and the site. Newest first.

Beta

2026-09-10

  • Changed Chat Stats Tracker Viewer count Weather Site tools: every builder's preview now sits above the fold and shows synthetic sample data instantly (before any channel/location is configured), switching to live data with a visible mode indicator once configured (0.1.454)
  • Fixed Stream Bro Chat read-aloud: the censor beep now sounds immediately (no pre-beep pause) and the rest of a censored message continues automatically right after it, instead of stalling until a later chat message arrived (0.1.454)
  • Changed Site Site: homepage 'Cloud streaming' card's action button now reads 'Coming soon' instead of linking out to the GitHub issues page (0.1.454)

2026-09-08

  • Fixed Stream Bro Chat a Kick channel-point redemption, gift, raid, or celebration event with a long attached message and long username/reward/gift names no longer produces an overlong chat overlay line. (0.1.452)
  • Fixed Stream Bro Chat a Kick celebration, gift, redemption, or raid message with an emote in it now shows the real emote image instead of literal :name: text, matching a normal chat message (0.1.452)
  • Fixed Stream Bro chat read-aloud's censor-sound setup no longer crashes app launch if the device's text-to-speech engine misbehaves (0.1.452)
  • Added Stream Bro chat read-aloud's censor action gained a duck-quack sound option alongside the existing beep/silent choices (0.1.452)
  • Changed Site Site: homepage 'Planned' card reworded from a single Relay concept to the Ingest / Anti-Drop / Multistream / Cloud Studio composable model (0.1.451)
  • Added Chat Chat overlay: align=left|right to align messages (and their bubbles) to either edge (0.1.451)
  • Changed Chat Chat overlay: the growth-direction URL param is now anchor (the old align spelling still works, same behavior) (0.1.451)

2026-09-07

  • Fixed Stream Bro a chat read-aloud crash on launch (0.1.449)
  • Added Stream Bro Chat chat now reacts to a deleted message or a timed-out/banned sender: the apps show it struck through with a reason tag (with a new toggle to hide it instead), and the browser-source chat widget removes it outright (0.1.444)
  • Added Stream Bro chat read-aloud gained an operator-editable banned-word list with a configurable censor action (beep or silence), plus an option to treat a platform's own asterisk-censored words the same way (0.1.444)
  • Added Stream Bro a Celsius/Fahrenheit option for the battery temperature readout, in both Stream and Bro (0.1.444)
  • Added Stream Stream now has a 'Show battery stats' toggle in Settings, matching the same control Bro already had (0.1.444)
  • Added Stream new Settings -> Stats/Info Panel category with a master toggle to show/hide the whole operator HUD readout, plus a toggle for the network/stream-stats group (0.1.444)

2026-08-30

  • Fixed Stream the Custom CSS field no longer appears for audio-only web sources, where it never had any effect (0.1.429)
  • Added Stream each visual web source now has its own independent audio mute toggle, covering on-page video/audio playback, Web Audio API-only playback, and cross-origin-iframe audio on WebView providers that support native audio muting (older providers fall back to on-page video/audio + same-origin-iframe coverage only) (0.1.429)

2026-08-28

  • Fixed Stream Visual web sources no longer have their audio silently muted; a source's own audio now plays locally like an audio-only source's already does. (0.1.424)
  • Fixed Stream Editing a visual web source's URL now reloads it immediately, without needing to toggle it off and back on. (0.1.424)
  • Added Stream Web source position and size controls (width, height, edge spacing) now accept an exact typed pixel value alongside the slider. (0.1.424)

Stable

2026-08-25

  • Fixed Stream Exit on the streaming notification now actually exits the app on the first tap; it no longer needed a second Exit after the notification silently came back. (0.1.419)

2026-08-24

  • Fixed Site the site header navigation no longer sits flush against the edge of the page on the Stream, Bro, and Tools pages. (0.1.419)
  • Added Site a Discord link in the site footer, alongside the other social links. (0.1.419)

2026-08-20

  • Changed Site dualirl.com now has real cross-page navigation: the Stream, Bro, and Tools pages share a navbar with the Dual IRL mark and links to every section, and every tool page carries the same footer breadcrumb. (0.1.413)
  • Added Stream a web source can now use a plain http:// address on your own network (for example a self-hosted MediaMTX box), instead of requiring https or a reverse proxy. (0.1.412)

2026-08-19

  • Fixed Stream a channel-point redemption's message is no longer cut off after one line in the chat overlay. (0.1.410)

2026-08-16

  • Added Stream Bro Beta now has its own distinct launcher icon, and Stream's launcher icon gained a small red "on-air" dot, moved there from the site favicon. (0.1.405)

2026-08-15

  • Added Stream Bro Dual IRL Stream and Dual IRL Bro now ship two separate, side-by-side installable channels: Beta (auto-published from every merge) and Stable (a deliberately promoted, already-tested release). The changelog now shows a Beta section above the Stable one, and both app download pages link the new Beta download alongside the existing Stable one. (0.1.404)

2026-08-14

  • Fixed Stream Fixed a crash that could cause Dual IRL Stream to close immediately on launch. (0.1.400)

2026-08-13

  • Fixed Stream Bro Stream and Bro's "skip bot messages" (read-aloud TTS and the visual hide-bots filter alike) now recognize Kick's own bot role badge (e.g. Kicklet) directly, in addition to a fixed name list, matching the same fix already shipped to the browser-source chat widget ([W-880]). (0.1.399)
  • Fixed Chat Stats Viewer count Rumble-based site widgets (chat, stats, viewer count) failed to load any data due to a browser CORS restriction on Rumble's API; they now go through a new server-side proxy. (0.1.399)

2026-08-12

  • Fixed Chat Weather Stats Viewer count literal Unicode emoji in the merged-chat overlay (messages and events), the weather overlay's condition/wind icons, the platform-stats widget's uptime/warning/Rumble-sentiment icons, and the viewer-count widget's warning icon now render as images instead of a missing-glyph box on a Linux OBS/CEF browser source with no installed emoji font. (0.1.399)
  • Fixed Chat the merged-chat browser overlay's "hide bot messages" toggle now recognizes Kick's own bot badge (e.g. Kicklet) directly, in addition to a fixed name list, which itself also gained several bot names already known to the Android apps but missing from the widget. (0.1.399)

2026-08-11

  • Fixed Site the tools page's back-link now reads "Dual IRL," matching the rest of the site. (0.1.399)

2026-08-10

  • Fixed Stream the Rumble status pill no longer truncates to "…" when every badge segment (viewers, uptime, sentiment, followers, subscribers) is enabled. (0.1.399)
  • Changed Stream a pinch gesture that lands directly over the on-screen PiP inset now zooms that inset camera instead of the main feed. (0.1.399)
  • Added Stream an optional Kick "Followers" badge segment in Chat settings, alongside the existing viewer-count/uptime toggles. (0.1.399)
  • Added Stream a web source that stops itself after repeated crashes now shows a clear in-app "stopped after repeated crashes" badge instead of silently sitting disabled. (0.1.399)
  • Added Bro Bro's audio sources now show the same "stopped after repeated crashes" badge Stream already had, when a source self-disables after repeated renderer crashes. (0.1.399)
  • Added Stream YouTube live chat can now be connected by entering your channel handle instead of pasting the live video's URL each time. (0.1.399)
  • Added Stream Bro Weather Stats Chat Viewer count Tracker Fan Finder Site every shared Dual IRL link now shows a branded preview image (Twitter/X, Discord, Slack, etc.) instead of a text-only preview. (0.1.399)
  • Changed Stream "Keep chat updating in the background" now works regardless of whether you're currently live, matching how the audio web-source keep-alive already worked. The streaming notification is now always present (Start | Exit when idle, matching [W-198]) and Stop | Exit while live, with exactly one shade entry at all times. (0.1.399)
  • Changed Chat the 7TV widget's chat overlay now reconnects faster after a normal disconnect and backs off more patiently after a rate limit, instead of always using the same generic retry ladder. (0.1.399)
  • Changed Weather Chat Tracker Stats Viewer count Site Fan Finder every site tool, builder, and the privacy policy page now has a consistent page title and social-share (OG) preview matching the rest of the site. (0.1.398)
  • Added Fan Finder a new Fan Finder tool to look up a Kick viewer's follow/subscription/role/ban status for a channel, keyless. (0.1.398)
  • Changed Weather the weather overlay's first-paint loading state is now a language-neutral spinner instead of English "Loading…" text. (0.1.398)
  • Changed Chat 7TV namepaints now default to off. (0.1.392)
  • Added Stream Bro Chat Stats Viewer count Twitch chat badges now render as real per-channel images (subscriber tiers, VIP, moderator, etc.) instead of plain text chips, in chat.html and both apps' chat overlays; stats.html/viewer-count.html's Twitch tile no longer depends on the third-party DecAPI proxy. (0.1.392)
  • Added Stream Bro YouTube Super Chat and Super Sticker messages now render as a visible event line in merged chat, instead of being silently dropped. (0.1.392)
  • Added Bro the Rumble monitoring tile now shows likes/dislikes and followers/subscribers when available, and the empty-state hint mentions Rumble. (0.1.392)

2026-08-09

  • Added Stream optional Rumble "Followers" and "Subscribers" badge segments in Chat settings. (0.1.391)
  • Added Stream a "Chat overlay height" slider in Chat settings lets the operator resize the chat overlay to taste. (0.1.391)
  • Added Stream a "Chat overlay width" slider in Chat settings lets the operator resize the chat overlay horizontally to taste. (0.1.391)
  • Added Stream the background-streaming notification now also shows the running session data total, matching the operator HUD. (0.1.391)
  • Added Tracker the IRL location tracker overlay and its builder now support an RTIRL pull key as an alternative position source, for off-device rigs (cloud OBS / BELABOX) that can't read the phone's own GPS directly. (0.1.391)
  • Added Tracker the IRL location tracker overlay now has an optional "coarsen" setting that rounds the shown position to a coarser grid (in metres) for extra privacy, on top of the existing home blackout. (0.1.390)
  • Fixed Bro Bro now shows ONE ongoing notification (not two) when background chat monitoring and an audio web source are both active, with its text reflecting whichever is actually running. (0.1.389)
  • Fixed Bro Bro's landscape header now splits at the video/chat divider: the Videos/Alerts/TTS toggles stay above the video tiles on the left (scrolling sideways if they overflow), and the chat tabs move up to share that same row on the right (scrolling independently), closing the dead gap that used to sit above the chat tabs. (0.1.387)
  • Fixed Bro a monitored YouTube video tile that returns an error page (deleted/private video, region-blocked embed) now shows "tap to retry" instead of getting stuck silently. (0.1.387)
  • Fixed Bro a single monitored video in Bro's portrait grid (when the layout has room for more columns than there are videos) now fills the available width instead of being squeezed to half (or less) width next to blank space. (0.1.387)

2026-08-08

  • Added Chat the merged-chat overlay (chat.html) now renders a sender's active 7TV namepaint (their site-configured gradient or image username color, not yet animation) instead of a flat color — static support on Twitch, Kick only when the namepaint is granted live during the stream — with a builder checkbox to disable it. (0.1.385)
  • Added Stream Bro Chat the Kick "Sidekick" community-helper role badge now shows its real icon in chat instead of a plain text pill. (0.1.382)
  • Added Chat the merged-chat widget can now show Rumble chat (messages, Rants, gifted subs), configured with your Rumble Live-Stream-API URL, matching what the apps already support. (0.1.382)
  • Added Chat a !refreshchat mod/broadcaster-only chat command that re-fetches the merged-chat overlay's 7TV emote set without a page reload. (0.1.382)
  • Added Chat 7TV "zero-width" emotes now overlay their preceding emote instead of rendering as a separate image, matching 7TV's own recommended display; 7TV emotes rated sexually suggestive are now excluded from the merged-chat overlay by default, with an opt-in "Allow NSFW-rated 7TV emotes" checkbox in the builder. (0.1.382)

2026-08-07

  • Added Chat an optional vertical gradient for chat message text color (instead of a single flat color), configurable from the chat overlay builder. (0.1.381)
  • Added Stream Bro Chat a real "hide emojis" option (Bro, Stream, and the chat.html widget) that strips literal emoji characters out of a message's text, not just messages that are emoji-only — the existing "hide emoji-only messages" behavior stays as-is for a fully-emoji line. (0.1.381)
  • Added Viewer count the viewer-count widget's platform/channel name can now be toggled on/off (on by default), including in the new Compact layout, which previously never showed it at all. (0.1.381)
  • Added Viewer count a new "Compact" layout for the viewer-count widget shows all configured platforms in a single bar (icon, count, and a small peak/average pair per platform), recreating the classic kicktools multi-platform look. (0.1.381)
  • Added Chat the merged-chat overlay's "hide emotes" toggle now also hides a message that would otherwise render blank (matching the apps' behavior); added a new "emote only" display mode (opposite of hide-emotes: shows only the emotes, hiding everything else) that the channel's broadcaster can toggle live from their own chat with !emoteonly on/!emoteonly off. (0.1.381)
  • Added Chat the merged-chat overlay's message text now has a stronger, configurable shadow (a solid dark halo directly behind the text, legible over any background) instead of the previous fixed subtle drop-shadow; messages now default to no background bubble (transparent), matching the common streamer-overlay convention, still configurable via the existing background-color field. (0.1.381)
  • Added Chat the merged-chat overlay's new-message entrance animation is now configurable (slide from the right, slide from the left, or fade in with no slide), independent of the widget's own horizontal position. (0.1.381)
  • Added Stats Viewer count the platform-stats and viewer-count overlays now support anchoring to a corner/edge of the browser-source view (pos), matching the weather and location-tracker overlays, configurable from each tool's own builder page. (0.1.381)
  • Added Viewer count a new viewer-count overlay tool at dualirl.com/tools/viewer-count showing current count, a trend arrow, and session peak/average per platform (Kick/Twitch/Rumble), with a builder for platform order/layout/font. (0.1.381)
  • Added Stats the platform-stats widget at dualirl.com/tools/stats now shows real live status/viewer-count/uptime for your own Kick, Twitch, and Rumble channels (previously a sample-data preview only), plus a config builder page. (0.1.381)
  • Fixed Stream Bro Kick chat subscriber badges now show the streamer's own custom subscriber-badge art (when the channel has one) instead of the generic bundled icon. (0.1.381)
  • Added Chat a new merged Kick + Twitch chat overlay tool at dualirl.com/tools/chat, with a builder exposing platform icons, timestamps, real per-channel badges/emotes (including 7TV), inline sub/gift/redemption/raid events, and message-display options (spacing, fade-out, an events-only mode). (0.1.381)

2026-08-06

  • Added Site the combined "What's new" page (dualirl.com/changelog.html) now shows a product label next to each entry, so the "All" view identifies which product a line belongs to without switching filters. (0.1.380)
  • Added Stream pinch-to-zoom on the camera preview (single and dual/PiP mode), capped at each camera's own native max, with an always-visible on-screen zoom indicator and a tap-to-open slider for fine control. (0.1.380)
  • Fixed Stream The live timer and platform status pills in the operator HUD no longer overlap or get clipped when Rumble is connected. (0.1.380)
  • Fixed Stream In gradient accent-color mode, button icons and text now animate with the same gradient as their border, instead of staying a flat color. (0.1.380)
  • Added Stream Bro both apps' chat settings now have independent "skip reading emojis" (TTS) and "hide emoji-only messages" (display) toggles, distinct from the existing emote toggles, for literal Unicode emoji characters in chat. (0.1.380)
  • Changed Stream Bro the audio web source host now waits for the network to settle for 3s before reloading hosted sources on a network change, instead of reloading on every transition during a flap. (0.1.380)
  • Changed Stream Stream's mic-meter idle glyph now renders in a readable light color instead of black-on-black, and the bonded/total uplink HUD lines hide the rate segment below 50 kbps instead of showing a misleading "0.0 Mbps". (0.1.380)
  • Changed Stream Stream's chat overlay event lines (subs/gifts/Kicks/redemptions) now lead with the platform origin logo, matching normal chat rows and Bro. (0.1.380)
  • Changed Bro Bro's chat tab row hides the redundant "All" tab when only one channel is monitored. (0.1.380)
  • Changed Stream Bro the read-aloud settings' sub-options are now ordered announce-sender, then the skip toggles, then voice selection, in both apps. (0.1.379)
  • Changed Stream Bro several settings that used to default off now default on in both apps (auto-update-check, chat badges, skip-reading-commands aloud, 7TV/BTTV third-party emotes) or in Stream specifically (the chat entrance-cascade animation, Kick/Rumble/YouTube uptime badges, Rumble sentiment, Rumble/YouTube chat inclusion, Twitch viewer-count/uptime badges) or in Bro specifically (battery stats, chat timestamps) — you can still turn any of them off in Settings. (0.1.379)
  • Added Stream Bro the battery-stats readout in both apps now shows a battery emoji next to the percentage (replacing Stream's old "BAT" text label). (0.1.379)

2026-08-05

  • Added Stream Bro a settings toggle for the chat entrance-cascade animation (new messages slide in from the side + fade in) in both apps; Bro's toggle is on by default (matching the animation it already ships in this same release, see the entry below), Stream gets the same animation and toggle for the first time, off by default. (0.1.376)
  • Fixed Stream Bro a large streamer's 7TV custom emotes could silently fail to load and render as plain text instead of images, because the app's own response-size safety cap was too small for a big channel's full emote catalog; raised. (0.1.376)
  • Fixed Stream the "Set a server URL in Settings" hint no longer clips against the chat overlay on some layouts. (0.1.376)
  • Fixed Stream Bro a Kick, Twitch, Rumble, or YouTube chat message could occasionally get stuck at the bottom of the chat panel forever, with newer messages appearing above it but the view never catching up; now it lands wherever it actually arrived. (0.1.376)
  • Added Bro Bro can now show battery/thermal stats (charge %, plug icon, watt draw, temperature) in the top bar next to the settings cog — turn on "Show battery stats" in Settings (off by default). (0.1.376)
  • Added Stream Bro the "keep alive" notification for background chat monitoring and the audio web-source player now includes an Exit action to close the app directly from the notification shade. (0.1.376)
  • Added Bro Bro's video tile username labels now show the platform's brand logo (Kick/Twitch/YouTube/Rumble), matching the chat tabs. (0.1.376)
  • Changed Bro Bro's chat tabs are now ordered Events, All, then individual channels (previously All, Events, channels). (0.1.376)
  • Added Bro Bro's Events tab now has a filter button to show/hide specific event types (subs, gifts, raids, etc.). (0.1.376)
  • Changed Bro Bro's chat now plays a cascading animation for new messages: existing rows shift up smoothly and a new arrival slides in from the side and fades in, instead of instantly snapping. (0.1.376)
  • Added Stream Dual IRL Stream can now keep chat updating and read-aloud speaking while backgrounded during an active stream — turn on "Keep chat updating in the background while LIVE" in Chat settings. (0.1.376)
  • Added Stream the front-facing fill light's color and size are now customizable from the Light button's long-press panel, down to a size that adds no extra padding beyond the letterbox bars. (0.1.376)
  • Fixed Stream the color picker's preset swatches no longer get clipped off narrower panels (e.g. the Light picker); they wrap to a second row instead. (0.1.376)
  • Added Stream the operator control buttons' outline color can now be customized (solid or an animated 2-3 color gradient) from the "UI" long-press panel. (0.1.376)

2026-08-04

  • Added Stream a new magic-wand button quickly toggles your color grade/filter on and off (long-press for a picker), and the camera picker now lives behind its own button so the bottom row has room for it. (0.1.375)
  • Added Stream a new "Wobble" camera filter (a continuous UV-warp effect) alongside the existing Rave filter. (0.1.375)
  • Added Stream you can now import your own custom .cube LUT file from device storage for color grading, alongside the built-in presets. (0.1.375)
  • Added Stream the app now remembers which camera you were last using and starts there instead of always defaulting to a rear lens. (0.1.375)
  • Added Stream a new "Sepia" color-grade preset alongside the existing built-in looks. (0.1.375)
  • Added Stream a new real-time camera filter (rave mode: a continuous color hue-cycle) you can apply live to your camera from Settings → Camera filters. (0.1.374)
  • Fixed Stream Bro Kick's default subscriber chat badge now renders with its real Kick artwork instead of a generic colored letter. (0.1.373)
  • Fixed Stream Bro Kick chat badges (moderator, VIP, OG, Founder, verified, sub-gifter, bot) now render with their real Kick artwork instead of a generic colored letter. (0.1.373)
  • Fixed Stream Bro Twitch chat badges (subscriber, moderator, VIP, and other role/event badges) now show up before a chatter's name, matching Kick. (0.1.373)

2026-08-03

  • Fixed Stream the torch icon now reflects whether the flash is actually on, instead of getting stuck lit if a toggle silently failed or the camera session reset. (0.1.371)
  • Fixed Stream Bro Rumble chat (both apps) now shows a clear message when it can't connect (e.g. a wrong or expired API URL), instead of showing "Connecting…"/"Reconnecting" forever. (0.1.371)
  • Fixed Stream Settings text fields (Kick/Twitch/Rumble/YouTube channel settings, adaptive-bitrate floor/cap) no longer occasionally lose an edit typed right as the screen opens. (0.1.369)
  • Fixed Stream the bottom control buttons no longer overlap the camera picker when no server URL is set. (0.1.369)
  • Fixed Bro Bro now pauses per-channel Kick/Twitch/Rumble live-status polling while Videos is off, saving battery and data (chat, including YouTube, keeps working normally). (0.1.369)
  • Fixed Weather the weather overlay no longer risks getting stuck if a data request hangs or a slow response arrives after a newer refresh already completed. (0.1.369)

2026-08-02

  • Added Bro Bro's chat panel can now show each chatter's badges (level, subscriber, VIP, moderator, etc.) before their name, matching Stream; the "Show chat badges" setting also moved to the main chat display section in both apps (previously Kick-only in Stream) so it's easy to find and ready to cover more platforms later. (0.1.368)
  • Added Bro a "Get more voices/accents" link in the read-aloud voice picker opens your device's text-to-speech voice-data installer, so accent packs your engine offers are easier to find. (0.1.366)
  • Changed Stream "Show message timestamps" now appears near the top of chat settings, above the emote options. (0.1.366)
  • Security Weather the weather overlay no longer accepts a legacy ?lat=/?lon=/etc. query-string configuration (fragment-only now), closing a path where a hand-typed URL could leak coordinates to server access logs. (0.1.366)
  • Fixed Stream The camera and pair picker now wraps its chips instead of running off the edge of the screen on devices with many cameras. (0.1.366)
  • Fixed Stream long chat overlay messages that don't fit now end with "…" instead of being silently cut off mid-word. (0.1.366)
  • Added Bro Bro now keeps your channels' chat/events connected (and read-aloud speaking) while you switch apps, so you don't miss what happened while you were away; a "Keep chat updating in the background" toggle in Settings controls it (default on) and shows an ongoing notification while active. (0.1.365)
  • Added Stream Settings → About now includes a link to the privacy policy and an "Open source licenses" screen listing the app's bundled open-source dependencies. (0.1.365)
  • Added Stream Dual mode's picture-in-picture inset now has a 4:3 crop option, alongside the existing Fill/1:1/circle shapes — tap the PIP shape button to cycle to it. (0.1.365)
  • Added Stream Kick chat can now show each chatter's badges (level, subscriber, VIP, moderator, etc.) before their name — turn on "Show chat badges" in Chat settings. (0.1.365)
  • Fixed Stream Rumble chat emote tokens (e.g. :r+rumbleheart:) now render as clean readable names instead of the raw colon-wrapped code. (0.1.365)
  • Added Bro In landscape, Bro now groups your monitored-stream tiles into a compact block on the left (sized to how many you're watching) instead of stretching them across the full screen width, leaving more room for chat. (0.1.365)
  • Added Bro Bro's YouTube tiles now show live viewer count and uptime (when a YouTube API key is configured), matching Kick and Twitch tiles. (0.1.364)
  • Changed Stream a Twitch channel that's configured but not yet connected now shows a placeholder status pill (matching Kick), instead of showing no pill at all. (0.1.364)
  • Added Bro Bro's Twitch tiles now show live viewer count and uptime, matching Kick tiles. (0.1.364)

2026-07-31

  • Added Bro Bro's Rumble chat now shows Rants (paid messages) and gifted subs as event lines, matching how Kick cheers/gifts already render. (0.1.357)
  • Added Stream Dual IRL Stream's operator chat overlay now shows Rumble Rants (paid messages) and gifted subs as event lines, the same way Kick cheers/gifts already render. (0.1.357)
  • Fixed Bro Rumble chat tab and tile now show the real channel name once the status poll resolves it, instead of the generic "Rumble" label. (0.1.356)

2026-07-30

  • Added Bro Bro can now import your monitored channels, Rumble/YouTube keys, and chat/read-aloud settings from a Stream app backup file (Settings → Import from Stream). (0.1.354)
  • Fixed Stream Kick events (gifts, subs, redemptions, raids) in chat now show a timestamp, matching Twitch events. (0.1.354)
  • Fixed Bro Kick events (gifts, subs, redemptions, raids) in chat now show a timestamp, matching Twitch events, in both the merged chat and the Events tab. (0.1.354)
  • Fixed Site the Bro website's platform-support table now correctly lists YouTube's likes/dislikes as planned (matching the Stream site's own table), instead of incorrectly claiming YouTube has no such feature. (0.1.353)
  • Changed Site the website's changelog pages (main, per-app, and per-tool) now carry the same privacy-friendly page-load counter as the rest of the site, closing the one remaining gap. (0.1.353)
  • Fixed Stream Kick chat's per-channel 7TV/BetterTTV custom emotes (e.g. a streamer's own custom emote set) now actually resolve and render in both apps; they silently never worked before, always falling back to global emotes only, since the wrong numeric Kick id was being sent to 7TV. (0.1.353)

2026-07-29

  • Changed Site the website's privacy-friendly page-load counter now covers every tool/builder page (previously only the tools hub) and counts APK download-button clicks, so usage of individual tools and downloads is now visible; the weather and location-tracker overlays report a fixed page path, never your actual coordinates; public APK downloads (website- and in-app-updater-driven alike) are now served by a dedicated backend service that counts each one into the same dashboard, so download counts finally live in one place. (0.1.353)
  • Changed Site both apps' websites now show inline-emote support as two rows (native vs. optional 3rd-party) instead of one ambiguous row, so it's clear at a glance which platforms need the 7TV/BetterTTV layer turned on; corrected Rumble's and YouTube's native-emote rows to reflect that both platforms have their own native emotes (Bro/Stream just don't parse them from the current APIs yet), and clarified Rumble's 3rd-party emotes are global-only. (0.1.353)
  • Fixed Stream Bro chat read-aloud: a burst of messages from different senders (with "Random voice per sender" on) now each play in their own voice, instead of the whole burst playing in whichever voice was applied last. (0.1.353)
  • Changed Site Bro's website now mentions the per-tile audio-level meter that shows whether a muted monitored stream still has sound. (0.1.353)
  • Changed Site Bro's website now lists Custom/HLS support in the video summary, and the platform comparison table states live-video support per platform. (0.1.353)
  • Added Stream Dual IRL Stream's 7TV/BetterTTV third-party emotes now also work on YouTube chat (global and per-channel) and Rumble chat (global). (0.1.353)
  • Added Bro Bro's 7TV/BetterTTV third-party emotes now also work on YouTube chat (global and per-channel) and Rumble chat (global). (0.1.353)
  • Added Stream Dual IRL Stream's chat read-aloud can now pick different TTS voices per chatter (or one fixed voice), matching the companion app — turn on "Random voice per sender" in Chat settings. (0.1.353)
  • Added Stream Dual IRL Stream's chat overlay can now hide message timestamps — turn off "Show message timestamps" in Chat settings (on by default, matching the previous unconditional behavior). (0.1.353)
  • Changed Stream Chat settings: display toggles (emotes, bots, commands) are now grouped together above the read-aloud options, instead of split across both sides of them. (0.1.353)
  • Changed Bro Chat settings: display toggles (emotes, bots, commands, timestamps) are now grouped together above the read-aloud options, and the read-aloud sub-option order now matches Stream. (0.1.353)
  • Added Bro Bro can now show chat emotes as plain text names instead of pictures — turn off "Show emotes as images" in Settings. (0.1.353)
  • Changed Site Bro's website headline no longer undercounts which platforms it merges chat from or which platforms' alerts show inline. (0.1.352)
  • Changed Site Stream's website now links back to its companion app Bro, matching Bro's own link back to Stream. (0.1.352)
  • Changed Site Corrected several outdated rows in Stream's website "What each platform brings" table (Twitch and YouTube subscriptions/gifts, YouTube live chat and viewer count were already live but still listed as "planned"); removed mentions of a third-party update-checking tool from the site and docs. (0.1.352)

2026-07-28

  • Added Site A new "What each platform brings" table on the Bro website shows exactly what each connected platform (Kick, Twitch, Rumble, YouTube) supports today vs. what's still planned. (0.1.352)
  • Changed Site Trimmed the "Easy to update" description and removed the third-party-updater mention; corrected the platform-support chips and chat-merge description to include Rumble and YouTube chat, which were already supported but not listed. (0.1.352)
  • Added Stream Kick and Twitch chat can now show third-party 7TV and BetterTTV emotes, off by default — turn on "Enable 7TV/BTTV emotes" in Chat settings. Once on, they render as images (or hide, or skip when read aloud) exactly like Kick/Twitch's own emotes, using the same toggles. (0.1.350)
  • Added Bro Kick and Twitch chat can now show third-party 7TV and BetterTTV emotes, off by default — turn on "Enable 7TV/BTTV emotes" in Channel settings. Once on, they render as images (or hide, or skip when read aloud) exactly like Kick/Twitch's own emotes, using the same toggles. (0.1.350)

2026-07-27

  • Fixed Bro On Bro's monitor screen, the Videos/Alerts/TTS buttons' "on" and "off" states were hard to tell apart in the dark theme; the "on" fill color now has clear contrast against "off". (0.1.349)
  • Fixed Stream The "App updates" screen's launch check and update-available prompt are more reliable: a background restart can no longer silently skip that launch's check or bring back a dialog you already dismissed, the prompt won't repeat itself after you've already seen the update on the Updates screen, and a check no longer clobbers a pending "you're live, update anyway?" confirmation. It also now checks for updates every time you open the screen, not just from a manual tap. A manually-installed build can now check for updates too — the Check button, status line, and toggle all now work regardless of build signing — and the screen always shows an "Open download page" link, matching Bro. (0.1.349)
  • Changed Bro Bro's "App updates" screen now looks and behaves like Stream's: a "Check for updates" button, a status line, and a new "Check automatically on launch" toggle that can prompt you with an update-available dialog on startup. Bro still never downloads or installs anything itself — "Open download page" hands off to your browser, same as before. (0.1.349)
  • Added Bro Dual IRL Bro can now read YouTube live chat for your monitored channels (needs your own free YouTube Data API key, entered once in Channel settings — one key covers every YouTube channel you monitor). (0.1.348)
  • Added Bro The Videos and Alerts buttons on Bro's monitor screen now imply their on/off state through fill color instead of spelling "on"/"off" in the label, freeing up room for a new TTS button that quickly toggles chat read-aloud on/off. Long-pressing Alerts opens a quick menu to toggle your audio sources individually; long-pressing TTS opens the same read-aloud options as Settings. (0.1.348)
  • Added Bro You can now pick which text-to-speech voice reads your chat aloud, from a list of your device's voices with a preview of each. A "random voice per sender" option makes different chatters read in different (but consistent) voices, so a busy chat sounds like a room of people instead of one narrator — the same chatter always gets the same voice. (0.1.348)
  • Added Stream Bro New chat options: hide messages that start with ! (like !watchtime or !drop), and separately, skip reading them aloud. Both default off. (0.1.348)
  • Added Bro Bro's chat panel now has an Events tab that collects subs, gifts, raids/hosts, and redemptions from all your monitored channels in one place, so they're not easy to miss scrolling past in the main chat. (0.1.348)
  • Changed Stream In dual-camera mode the preview now shows the same framing as your stream, with black side bars, instead of cropping to fill the screen. The picture-in-picture inset sits in the corner of that framed image rather than the corner of the display, and its edge spacing now matches where it lands on the stream even before you go live. Tapping the capture button now saves a photo cropped to the camera image, so it doesn't include the bars — except while the preview is resizing or when memory is tight, where it saves the full screen and says so (the long-press marketing screenshot still captures the whole screen). The face light now brightens those bars in dual mode as it already did in single, so it lights your face the same in both. In dual mode, web-source widgets now sit against the framed image in the preview rather than the screen edge; in both modes they are clipped at its edge, matching the stream. What you broadcast is unchanged. (0.1.344)

2026-07-26

  • Added Bro Kick, Twitch and custom-URL streams now show a small audio level bar whenever they're making sound, so you can see at a glance that a tile's audio is still flowing without unmuting it. Tiles stay muted as always. YouTube tiles play through YouTube's own embed and Rumble tiles are status-only, so neither shows a bar. (0.1.343)

2026-07-25

  • Fixed Stream clearing a Kick or Twitch channel now actually removes its chat from the overlay instead of leaving the old messages behind, and when a channel keeps closing the connection on us almost immediately — in under two seconds, over and over — the app now waits progressively longer between retries instead of retrying every two seconds forever. A channel that keeps working — including a quiet one with no chat coming in — still reconnects promptly. (0.1.342)
  • Fixed Bro when a chat channel keeps closing the connection on us almost immediately — in under two seconds, over and over — the app now waits progressively longer between retries instead of retrying every two seconds forever, while a channel that keeps working — including a quiet one with no chat coming in — still reconnects promptly. (0.1.342)
  • Added Bro Dual IRL Bro now tells you when a newer build is published. Settings → App updates checks the version posted on the download page and says whether you're current, then opens the page in your browser so you can grab it. Bro still never downloads or installs anything itself — that's the part Play Protect objected to, and it's staying out. (0.1.341)
  • Fixed Bro three YouTube monitoring problems, found while YouTube was being brought back: channels with non-English names can be added again; an offline channel is no longer sometimes shown as live (it could pick up a live video recommended on that channel's page and play that instead); and watching a live channel now uses far less mobile data. (0.1.340)
  • Removed Bro Dual IRL Bro no longer updates itself, and that is the fix for the Google Play Protect warning on the Bro download. Testing nine builds one feature at a time showed the warning followed exactly one thing: an app that can download and install an app is the shape Play Protect treats as dangerous on a new package it has never seen. So Bro no longer asks for permission to install anything. Getting new builds is unchanged — they're posted on the download page and each installs straight over your current copy, keeping your channels and settings. (0.1.340)
  • Fixed Bro YouTube channels you were already monitoring are repaired automatically. While YouTube was switched off in 0.1.335 your saved YouTube channels were stored in a form the app could no longer play; this update repairs them in place. One case can't be repaired: a channel you added while it was OFFLINE was dropped from your list entirely, so add that one again if it's missing. (0.1.340)
  • Added Bro YouTube monitoring is back. It was switched off in 0.1.335 as a deliberate step in tracking down why Google Play Protect had started flagging the Bro download: with no way to ask Google what tripped it, we built nine test versions and removed one feature at a time until the warning cleared. That identified the culprit — the in-app updater — and cleared YouTube completely. You can add and monitor YouTube channels again. (0.1.339)
  • Removed Bro Dual IRL Bro no longer supports monitoring YouTube channels. This is temporary, while we investigate a Google Play Protect warning on the Bro download; Kick, Twitch, Rumble and custom stream URLs are unaffected. (0.1.335)
  • Fixed Stream Dual IRL Stream no longer crashes on launch; the camera-light change from 0.1.330 was reverted because it caused the crash. (0.1.333)

2026-07-24

  • Fixed Stream the front-light / rear-torch button no longer flashes available for a split second before a newly-switched camera's feed has actually come up. (0.1.330)
  • Fixed Stream a Kick chat channel that doesn't exist now shows a clear "channel not found" instead of retrying forever, and an unusual character in a channel name no longer quietly disables the id cache. (0.1.328)
  • Fixed Stream a bonded (SRTLA) stream's status HUD no longer briefly shows the encoder bitrate under a Wi‑Fi/Net label in its first second; it reads 0.0 under the Bonded label until real per-link stats arrive. (0.1.327)
  • Changed Stream the mic level meter now updates with even granularity across its range (its refresh is keyed to the on-screen dBFS bar position, not the raw amplitude). (0.1.327)
  • Changed Stream the Rumble status badge polls ~12× less often when Rumble chat is off, cutting battery/data use (chat still refreshes fast when it's on). (0.1.326)
  • Changed Site the dualirl.com browser-tab icon now carries a small red "on-air" dot so it's distinct from the app launcher icons. (0.1.326)
  • Fixed Stream a slow- or failed-to-load chat emote's fallback name now ends with an ellipsis instead of being cut off mid-letter. (0.1.325)
  • Changed Stream Settings rows and the About links now announce as buttons to TalkBack (accessibility). (0.1.325)
  • Changed Stream the operator UI and CHAT pills now show a press ripple and announce as buttons to TalkBack, matching the mic pill. (0.1.325)
  • Added Stream Twitch sub/resub alerts now include the subscriber's own typed message (like Kick), not just Twitch's stock sentence. (0.1.324)
  • Fixed Stream a Twitch community (mass) gift now shows a single announcement instead of one alert line per recipient. (0.1.324)
  • Fixed Weather the weather browser-source no longer hangs on a blank "Loading…" when geolocation or the weather API misbehaves; it shows setup guidance (and paints the clock if only the time is shown). (0.1.324)
  • Fixed Stream pasting a legacy all-in-one srt://host:port?streamid=…&passphrase=… URL into the SRT settings now fills the Stream ID / passphrase fields (and the pre-Go-Live summary) immediately, instead of only after saving and reopening. (0.1.323)
  • Added Stream Twitch subscriptions, resubs, gift subs and raids now show as inline chat alerts (matching Kick), so channel events are visible without leaving the app. (0.1.322)
  • Changed Bro Dual IRL Bro's settings are reorganized into a landing with grouped sub-screens (Channel settings, Audio sources, App updates, About), matching the Stream app's layout. (0.1.316)
  • Added Bro Dual IRL Bro chat now has the same global options as Stream: hide emotes, hide bot messages, and read chat aloud (with skip-bots, skip-emotes, and announce-sender). (0.1.316)
  • Added Stream Bonded (SRTLA) streaming now also bonds a USB modem or USB-C Ethernet adapter when one is attached — including one plugged in mid-stream, and it heals automatically if the USB link drops and reconnects. (0.1.315)
  • Added Bro Dual IRL Bro now shows your Rumble channel's live chat: with your Rumble Live Stream API URL set, Rumble chat appears in its own tab and the merged "All" view alongside Kick, Twitch, and YouTube. (0.1.311)

2026-07-23

  • Added Bro Dual IRL Bro can now monitor your Rumble channel: paste your Rumble Live Stream API URL (from rumble.com/account/livestream-api) and Bro shows its live status — live/offline, viewers, and uptime. (Rumble chat and video come in follow-ups.) (0.1.310)
  • Fixed Stream Restoring a settings backup is now all-or-nothing: if the restore fails partway, your stream profiles and app settings are left fully on the old configuration (rolled back) instead of a half-applied mix. (0.1.306)
  • Added Bro Dual IRL Bro now shows a "What's New" dialog after an update and has a changelog link in Settings, matching the main app. (0.1.298)
  • Added Bro Dual IRL Bro is now publicly downloadable from its own page at dualirl.com/bro. (0.1.297)
  • Changed Bro Dual IRL Bro has a new app icon — a monitor showing your streams (one live) with a chat strip — and debug builds now use a distinct amber icon labelled "Bro Debug", so a test build and the real app are easy to tell apart. (0.1.295)
  • Changed Stream The operator chat overlay now leads each message with the platform origin logo (logo → time → name), matching the companion app. (0.1.294)
  • Added Bro Dual IRL Bro can now update itself: check for a new version in Settings and install it in place, or turn on automatic checks on launch — the same one-tap, cert-verified update flow the main app uses. (0.1.293)
  • Fixed Bro Dual IRL Bro chat now shows platform alerts (subscriptions, gifts, raids, redemptions, Kicks) as a single accent line matching the main app — previously the sender's name was shown twice (e.g. "🎁 bob bob redeemed …"). (0.1.292)
  • Added Bro Dual IRL Bro now keeps the screen on while it's open, so the display doesn't sleep on the usual idle timeout while you're watching your monitored streams. (0.1.292)
  • Changed Bro Dual IRL Bro chat now shows each platform's brand logo (Kick / Twitch / YouTube) on the channel tabs and at the start of every message, instead of a letter — matching the main app. (0.1.290)
  • Fixed Bro In Dual IRL Bro, the device back button now returns to the previous screen (e.g. Settings → the monitor grid) instead of closing the app. (0.1.289)
  • Changed Bro Dual IRL Bro chat lines now lead with the platform glyph (which platform the message came from), then the optional timestamp, then the username — so a line's source reads first. (0.1.289)
  • Fixed Bro In Dual IRL Bro, the live indicator dot on a monitored channel's info chip is now red (was the same color as the chip text). (0.1.289)
  • Added Stream Stream now has color grading: pick a built-in look (Warm / Cool / Teal & Orange / B&W / Vivid) and set its intensity in Settings → Color grading. It applies to your camera across the whole broadcast (preview and stream match); overlays aren't affected. (0.1.288)
  • Added Bro Dual IRL Bro chat now shows a platform glyph (Kick/Twitch) on each line and can show message timestamps (toggle in settings), animated emotes now animate, and the top of the screen is tightened up. The Videos/Alerts buttons now read consistently (filled = on). (0.1.287)

2026-07-22

  • Added Bro Dual IRL Bro now loads recent chat history the moment you open it (Kick), so the chat panel isn't blank while you wait for new messages — just like the main app. You can pick a chat text size (Small / Medium / Large / Extra large), and a new About screen shows the app version. (0.1.286)
  • Added Bro Dual IRL Bro can now monitor a YouTube channel: type the channel's handle and its live stream plays in the grid through the official YouTube player. Like Kick, you can add a channel before it's live and it starts on its own when the channel goes live. (0.1.285)
  • Fixed Bro Dual IRL Bro now lets you add a Twitch channel that isn't live yet (so you can set up your channels before going live — it monitors chat right away and starts playing when the channel goes live), the same as Kick; only a channel name that doesn't exist is rejected. The video tiles no longer show a close (X) button — remove a channel from the settings screen instead. (0.1.284)
  • Changed Bro Dual IRL Bro now shows a clear "Offline" for a monitored channel that isn't live (instead of a stuck "can't play" spinner) and starts playing again on its own when the channel returns. You can also add a Kick channel that isn't live yet — it monitors the chat right away and begins playing automatically when the channel goes live. (0.1.283)
  • Added Bro Dual IRL Bro chat now shows inline emote images from Kick and Twitch channels, and a per-channel tab bar lets you switch between all monitored channels' chat and a single channel. The chat panel also grows to fill the space the videos don't use (small side-by-side tiles no longer reserve half the screen), and the title/controls no longer sit under the status bar. (0.1.282)
  • Added Bro Dual IRL Bro now shows merged live chat from your monitored Kick and Twitch channels beneath the video grid, and can monitor a Twitch channel by name (video + chat), not just Kick. A new settings screen (behind the cog) manages your channels and audio sources, and a top toggle bar switches to chat-only (videos off) or mutes your local alert audio. (0.1.281)
  • Added Bro Monitor a Kick channel by name in Dual IRL Bro: type the channel and it plays the live stream with a live viewer count and uptime that refresh automatically (and shows when the channel goes offline). You can still paste a custom stream URL. (0.1.280)
  • Added Bro Dual IRL Bro can now play audio-only web sources (alert / TTS pages) locally while you monitor — a separate live audio lane alongside the always-muted video tiles, kept playing in the background by a foreground service. (0.1.280)
  • Added Bro Dual IRL Bro is now a downloadable, installable app — every build is versioned and signed, and updates in place across builds. (0.1.279)
  • Changed Stream The face/torch light button now sits at the top of the right-hand button stack, so when it appears or disappears (it only shows while a light-capable camera is active) it no longer nudges the photo and Settings buttons up or down. (0.1.278)
  • Added Bro Monitor several of your live streams side by side in a grid — add each stream's URL and Bro plays them together. Tiles are always muted (monitoring your own stream with audio would cause a feedback loop) and pause automatically when the app is in the background. (0.1.277)
  • Added Bro Introducing Dual IRL Bro, a free companion app for monitoring your live stream — this first build is the app shell; the monitoring features land next. (0.1.276)

2026-07-21

  • Fixed Stream The status readout (battery / temperature / network) in the top-right no longer grows sideways far enough to overlap the platform badges in the top-left on a busy row. (0.1.271)
  • Fixed Stream A very long destination/profile name no longer wraps or sprawls the controls at the bottom of the preview screen; it's now truncated with an ellipsis. (0.1.271)
  • Fixed Stream With emotes hidden, a message whose only text is an invisible zero-width character no longer shows as an empty chat row. (0.1.270)
  • Fixed Stream The app no longer briefly flashes the system (light) theme on launch before switching to your saved dark theme, for operators who set the theme on an earlier build. (0.1.270)
  • Added Stream A hardware torch (rear-camera LED flashlight) for low-light streaming, plus a front/rear light picker. The light button now lights the real torch when you're on a rear camera, the screen fill light on the front, and — with both cameras live — a picker to choose; a long-press always opens the picker. (0.1.268)
  • Added Stream Face fill light for low-light streaming: when you're on a front camera, tap the light button to flood the screen white (an edge band + side pillar bars + max brightness) and light up your face. It's preview-only — it brightens your face for your viewers without the white ever appearing in your stream. (0.1.267)

2026-07-20

  • Changed Stream Merged chat and the channel-status badges now show each platform's real brand logo (Kick/Twitch/Rumble/YouTube) in place of the letter marker. (0.1.263)

2026-07-18

  • Added Stream YouTube's HUD badge now has its own Viewer count / Uptime toggles in Chat Settings (like Kick/Twitch/Rumble), so you can turn it off independently of chat and optionally show how long the stream's been live. (0.1.242)
  • Added Stream The operator HUD now shows a YouTube viewer-count badge (with the YouTube logo) next to the Kick/Twitch/Rumble ones, so every configured platform's live audience is glanceable in one place. (0.1.241)
  • Fixed Stream A visual web-source overlay whose page keeps crashing no longer instantly respawns in a tight loop (which burned battery and could stutter a live stream); it now waits a little longer between attempts and, if it keeps failing, disables itself until you edit or re-enable it. (0.1.240)
  • Fixed Stream An audio web-source overlay whose page keeps crashing no longer instantly respawns in a tight loop (which burned battery and could stutter a live stream); it now waits a little longer between attempts and, if it keeps failing, disables itself until you edit or re-enable it. (0.1.238)
  • Changed Stream With "hide emotes" on, a message that's only emotes (or emotes and spaces) now disappears entirely instead of leaving an empty row with just the sender's name — matching how hidden bot messages are removed. (0.1.237)
  • Added Stream You can now edit a saved web overlay's URL in place (Web sources → Edit settings → Address), keeping its name, placement, size, and CSS — no more removing and re-adding it just to change the address. (0.1.233)
  • Added Tracker A troubleshooting mode (add #debug=1, or tick it in the builder) for the location tracker that shows a small label explaining WHY the map is hidden — waiting for a GPS fix, inside your home blackout, location permission denied, or a stale fix — so a blank overlay is diagnosable instead of a mystery. (0.1.232)
  • Added Tracker A builder to configure your location-tracker overlay: set the required private home blackout, choose the map shape, size, screen corner, and zoom, then copy a ready-to-use browser-source URL. (0.1.230)
  • Added Tracker A live-location minimap browser-source overlay for IRL streams — a label-free, GTA-style mini-map that follows your device GPS, designed OPSEC-first so it requires a private home blackout and shows nothing until a fix is safe to broadcast. (0.1.229)

2026-07-17

  • Security Stream Harden Kick/Twitch/Rumble/YouTube chat & status polling against oversized or hostile responses so a bad server reply can't exhaust memory and crash the app mid-stream. (0.1.227)
  • Fixed Stream Hiding bot chat now keeps real viewers visible even in a single bot-dominated channel (a bot flood no longer pushes humans out of that platform's chat window). (0.1.217)
  • Changed Stats The platform-stats tool preview now shows the real Kick/Twitch/Rumble brand logos in place of the letter markers. (0.1.210)
  • Added Stream Hide bot messages in the chat overlay (a new toggle, alongside hide-emotes and skip-reading-bots). (0.1.207)

2026-07-16

  • Fixed Stream Quickly stopping and restarting a bonded (SRTLA) stream no longer risks the new stream being dropped by a late failure from the previous one. (0.1.193)
  • Added Stats A preview of the platform-stats widget (dualirl.com/tools/stats.html) — the Kick/Twitch/Rumble tile layout + tested parsing; the live view (reading your real channels) ships next. (0.1.191)
  • Added Site Filter the combined changelog at dualirl.com/changelog.html by product (Stream, Weather, Site) with one click. (0.1.189)
  • Changed Site App changelog entries now show the app version they shipped in (e.g. 0.1.188) instead of a plain PR number. (0.1.189)
  • Added Stream YouTube live chat in the merged chat overlay (using your own YouTube Data API key + live video), joining Kick, Twitch, and Rumble. Operator-only — never shown in your stream. (0.1.187)
  • Added Stream A long-press quick menu on the chat button for the global chat options (text size, read-aloud, emotes), plus an option to announce the sender's name when reading chat aloud. (0.1.185)
  • Added Stream Read chat aloud (text-to-speech), with options to skip emotes and bot accounts when reading, plus a hide-emotes option for easier-to-scan chat. (0.1.183)

2026-07-15

  • Added Stream Open a .dirlbak backup file to import it straight into the app (with a confirm + your backup password). (0.1.182)
  • Changed Stream The camera preview now shows the same field of view as the streamed output, at true aspect ratio, instead of a zoomed-in crop. (0.1.181)
  • Changed Stream The About screen now shows the app name and tagline with links to the website and issue tracker. (0.1.180)
  • Fixed Weather The weather/local-time overlay now retrieves your location reliably on first load instead of sometimes starting blank. (0.1.180)
  • Added Site Download Dual IRL Stream directly from the site; it installs and keeps itself up to date automatically. (0.1.179)
  • Added Stream A "See full changelog" link in Settings → App updates opens the complete version history online. (0.1.178)
  • Added Stream Check for app updates from Settings and install them in place, with an optional automatic check on launch. (0.1.177)
  • Added Stream See what's new after the app updates, with a "Don't show again" option and on-demand access from Settings. (0.1.177)
  • Fixed Stream Web overlays now render at their intended size instead of appearing oversized on the stream. (0.1.177)
  • Fixed Site Site pages expose a main landmark for screen-reader navigation. (0.1.177)

2026-07-14

  • Added Stream Pin a web overlay to a corner with pixel edge-spacing (like the picture-in-picture inset) — e.g. top-right, 20px from the top and right — so it stays put as you resize it. Free X/Y positioning still works. (0.1.172)
  • Changed Stream The settings entry for web sources is now called "Web overlays" (it covers both visual overlays and audio-only web sources). (0.1.171)
  • Added Weather The free weather overlay can show a local day/date line (e.g. "Monday, July 14"), toggleable on its own and with a format choice (weekday-only, full date, numeric, …), in the stream's local timezone. (0.1.167)
  • Changed Stream The web-source overlay editor is steadier: size/position sliders no longer jump while you drag, a typed Custom CSS edit is kept when you close the editor or go back, and changing a widget's size reloads it once instead of twice. (0.1.166)
  • Fixed Stream Kick reward, gift, and subscription-celebration events no longer show a stray "null" when their optional message is empty. (0.1.166)
  • Added Stream Kick raids and hosts now appear in your chat overlay (e.g. "LURK24 has raided with 228 viewers"). (0.1.165)
  • Added Stream Positionable web-source overlay widgets: paste any widget URL (weather, clock, alerts, countdowns…), size and place it on a 1080p canvas, and route it per widget — operator-only, viewers-only, both, or audio-only — composited into the RTMP/SRT broadcast. (0.1.164)
  • Added Site Facebook and YouTube links in the dualirl.com footer. (0.1.157)

2026-07-13

  • Added Site A combined Dual IRL changelog plus per-tool changelog pages (starting with the weather overlay), each scoped to what it covers. (0.1.155)
  • Changed Site dualirl.com is now the Dual IRL org landing, with the streaming app's page at dualirl.com/stream. (0.1.154)
  • Added Weather The weather overlay gained dual °F/°C display, city/ZIP + country location entry, optional detail metrics (feels-like, humidity, wind, and a barometer with a trend arrow), multi-language support, and position/alignment controls. (0.1.153)
  • Added Site A /tools landing page and a branded 404 page on dualirl.com. (0.1.152)
  • Added Site A Rumble link in the dualirl.com footer. (0.1.151)
  • Changed Stream Raised the audio web source limit from 5 to 12, so a fuller alert rig fits. (0.1.150)
  • Added Stream Play a web page's audio locally on your device, so you can fold a separate alert app into this one; it keeps playing in the background and reloads when your network switches. (0.1.147)
  • Fixed Weather The weather overlay now shows a neutral "Loading…" while it fetches, instead of text that looked like a setup error. (0.1.146)
  • Added Weather A free, keyless weather & local-time overlay for OBS and IRL streams — transparent, no account, with anti-dox place-name coarsening so it never reveals your exact location. (0.1.143)

2026-07-12

  • Fixed Stream Opening the camera preview and then leaving the app without streaming no longer keeps the GL renderer running in the background, reducing idle battery/GPU use. (0.1.142)
  • Fixed Stream The "restart to apply" hint when editing your streaming profile now appears only when a change actually differs from what's broadcasting (no more false prompts on a no-op save), and the "still streaming" reminders no longer stack up. (0.1.141)
  • Added Stream A restart-to-apply prompt when you edit the active profile mid-stream, plus "still streaming" reassurance when you open Settings or background the app. (0.1.140)
  • Added Stream See the app's build version in Settings → About, so you can tell which build is on your phone at a glance. (0.1.138)

2026-07-11

  • Added Stream Back up and restore your settings. Settings → Backup & restore exports all your stream profiles and app settings to a password-encrypted file, which you can import on another phone (or after a reinstall) to copy everything over. Choose a password on export; you'll need it to import. (0.1.133)
  • Added Stream A 📷 capture button (stacked above the settings cog, always reachable). Tap saves an overlay-free camera frame; long-press runs a 3-second countdown then saves a "marketing" screenshot — the camera with the operator overlays composited on top — to Pictures/DualIRLStream. (0.1.132)
  • Added Stream A "UI" button that hides the operator overlays (status HUD, chat, badges, camera/PIP cluster, mic/chat icons) for a clean look over the live preview, and a long-press opacity slider (persisted, floor 30%) that dims them live. The bottom row was icon-ified (🎙 mic / 💬 chat) and the ⚙ settings cog moved beside the centered Go Live control — both the cog and 📷 stay visible when the UI is hidden. (0.1.132)
  • Added Stream A "🔒 Lock screen" button (in the opacity popup) that blocks every accidental tap/drag while riding — including End stream — until a deliberate "🔒 Hold to unlock" long-press. Prevents pocket/jostle touches from muting, toggling privacy, or ending the stream. (0.1.132)

2026-07-10

  • Added Stream SRT streams that use seamless network handoff (or a forced Wi-Fi/cellular radio) now show a real round-trip time (RTT) in the operator HUD, the same as a direct SRT connection. Previously RTT only appeared with handoff turned off; now you get it without giving up handoff. (0.1.131)
  • Added Stream The operator status HUD now shows a running total of data used on direct SRT, relay, and RTMP streams (e.g. Net · RTT 42ms ↑ 3.5 Mbps · 1.20 GB), not only on bonded streams — so you can watch your data against a cellular cap on any connection. The total keeps climbing across reconnects instead of resetting. (0.1.130)
  • Fixed Stream Chat text no longer runs under the mic level meter: the bar (widened to fit the dB number inside it) is now a touch narrower and the chat list reserves a left gutter that fully clears the meter column. (0.1.129)
  • Changed Stream The mic level bar now moves with hardware-meter ballistics — it rises quickly but at a bounded rate and eases back down — so a brief transient (a blow, a hard consonant) no longer snaps the whole bar up the way it did before; a sustained loud level still climbs to the top (real clipping shows). The thin peak-hold line and the dB number now sit just above the bar and follow its level (not the raw sample peak), so they no longer float high above the bar or read 0 on a single spike. This tracks a DJI Mic 3 reading far more closely. (0.1.129)
  • Changed Stream The app now captures the microphone with the device's raw (unprocessed) audio path instead of the default processed one, so an external mic (e.g. a DJI Mic 3) is metered and streamed at its true level with real headroom — no platform auto-gain silently boosting a hot mic toward clipping. The operator meter now tracks a hardware receiver's reading, and the streamed audio is captured at the same true level. (0.1.129)
  • Added Stream The README now shows an at-a-glance backlog: the live Android CI badge and a queue-total badge on the top line, and a per-priority badge row (P0/P1/P2/P3) beneath — so the open work-queue shape is visible at a glance. (0.1.129)
  • Changed Stream The operator status HUD's thermal (HOT / OVERHEAT / HEAT↓) and network-congestion (NET↓) tags now sit at the far right of the top battery line, next to the temperature, instead of on the upload line — so they no longer widen and misalign the upload / bonded-radio stat rows when they appear. (0.1.129)
  • Changed Stream The mic meter now reads like a hardware receiver (DJI Mic 3): a peak level bar on a dBFS scale swings green→yellow→red with your input, a thin peak-hold line parks at your recent loudest moment — coloured by the zone it reached — and holds a few seconds before falling, and a small held dBFS number sits inside the bar at the bottom (on the green fill) showing that same held-peak value + hold, so you can read how close your peaks are to clipping (0 dB). (0.1.129)
  • Changed Stream The mic meter gained a peak-hold marker — a thin line that parks at your recent loudest peak and falls after a moment — so brief transient peaks stay visible. (0.1.129)
  • Added Stream The status HUD's destination line now shows the true stream rate you're sending (e.g. SRTLA/HEVC @dest ↑ 6.0 Mbps) — RootEncoder's actual encoded-stream send rate — separate from the combined "Bonded" line beneath it, whose per-radio sum runs higher because it includes each link's SRTLA/retransmit overhead. (0.1.129)
  • Changed Stream The "lost N" packet-loss readout on the status HUD now shows loss over the last moment (recent window) instead of the total since the stream started — so it reflects CURRENT trouble and drops back to nothing once loss stops, rather than climbing forever. (0.1.129)
  • Changed Stream Every line of the bonded uplink readout now shows the ↑ upload arrow (not just the combined line), in a consistent Label · RTT ↑ Mbps · Total layout; and a sub-millisecond RTT now reads <1ms instead of a bare 0ms. (0.1.128)
  • Changed Stream The combined "Bonded" line in the operator HUD now takes its speed and RTT from the same live per-radio data as the WiFi/Cell lines beneath it, so it can never disagree with them — previously a timing difference could make the Bonded RTT read lower than every radio's, or its speed differ from the radios' sum. (0.1.127)
  • Changed Stream In the operator status HUD, the uplink RTT now shows *before* the speed (e.g. Bonded RTT 29ms · ↑ 12.3 Mbps · 728.1 MB) and each bonded radio shows its own RTT, so the speed and data-total columns line up cleanly across the combined line and the per-radio lines. (0.1.126)
  • Added Stream Tapping Go Live now asks you to confirm (naming the destination) before the broadcast starts, matching the existing End-stream confirmation — so a stray tap can't put you live by accident. (0.1.124)
  • Changed Stream The Settings gear moved from the top-right corner down into the bottom button row (mic · MUTE · CHAT · ⚙), and the status readouts now sit in the top-right corner, mirroring the camera controls in the bottom-right. (0.1.124)
  • Fixed Stream A bonded (SRTLA) stream's status line now reads "SRTLA" instead of "SRT", so the bonded path is distinguishable at a glance from a plain single-link SRT stream. (0.1.124)
  • Fixed Stream The uplink line in the status HUD no longer briefly renders without a network label when going live coincides with a momentary "no network" reading — it falls back to a neutral "Net" label. (0.1.124)
  • Fixed Stream On bonded and network-handoff streams, the uplink rate shown in the status HUD now reflects what's actually being sent to the network (summed per-link on bonded), instead of the local loopback write rate — so the number matches reality. (0.1.124)
  • Added Stream The operator status HUD now shows live uplink stats — send rate, round-trip time (RTT), and packet loss — updated about once a second. On bonded (SRTLA) streams the RTT is measured per-link to your ingest; direct SRT streams show the SRT client's RTT and cumulative loss; RTMP shows the send rate. (0.1.124)

2026-07-09

  • Added Stream SRT streams now have separate connection fields (server URL, stream ID, an optional passphrase + AES key length) and a pre-Go-Live summary line, instead of one crammed URL — so encryption can never be turned on by accident (a leftover passphrase= in a pasted URL used to silently fail the connection with SRT_REJ_UNSECURE). Existing single-URL SRT profiles are migrated automatically. (0.1.123)
  • Added Stream You can now set a custom SRT latency (buffer) in stream settings to ride out packet loss on a lossy mobile uplink (double-cell / bonded cellular); and a server that rejects an SRT connection now shows a clear reason and code instead of failing with a cryptic "unknown handshake type" error. (0.1.123)
  • Fixed Stream A stream that fails to auto-reconnect (for example the microphone permission was revoked while the app was backgrounded, or the profile became incomplete) no longer keeps a cellular radio held or starts your next stream on the wrong network — the deferred network/egress change is reconciled on that failure like every other stop path. (0.1.122)
  • Fixed Stream Muting your mic no longer carries over into your next stream: mute now resets when a stream ends (Stop or a failure), so a fresh Go Live always starts unmuted. (0.1.122)
  • Fixed Stream Starting a dual-camera (bonded Wi-Fi + cellular / SRTLA) stream no longer briefly flashes a red "Reconnecting" / "Poll timed out" error before it connects. Go Live now waits for the bond to finish registering before it starts handshaking, so the first attempt lands on a live link and the stream goes straight from connecting to live. (0.1.119)

2026-07-08

  • Fixed Stream A bonded (Wi-Fi + cellular / SRTLA) stream now recovers after a long or repeated network outage instead of getting stuck reconnecting forever ("Poll timed out"). On auto-reconnect it now picks a server address the whole bond can actually reach — preferring a portable IPv4 over a carrier NAT64 (IPv6) address that only cellular could use — and, if a radio returns that can't reach the first choice, re-selects one both radios can, so auto-reconnect re-establishes as reliably as a fresh Go Live. (0.1.118)
  • Fixed Stream A bonded (Wi-Fi + cellular / SRTLA) stream no longer gives up reconnecting too early after a network drop: it now keeps retrying long enough (~60s) for the bond to finish re-registering, and refreshes that retry budget on each successful reconnect so repeated outages in one session each get a full window. (0.1.116)
  • Fixed Stream A stream started or auto-reconnected while the app is in the background (e.g. an SRT stream recovering from a network dropout with the phone pocketed) no longer comes out rotated 90° sideways on the server — it now streams upright, matching the preview, regardless of what orientation Android reports while backgrounded. (0.1.114)

2026-07-07

  • Added Stream Kick channel-point redemptions, subscriptions and resubs, gifted subscriptions, and gifted Kicks now appear inline in the chat overlay as compact, colour-accented one-line events (with the redeemer's message, gift value, or gifter's lifetime total where applicable), instead of the tall multi-line cards kick.com uses. (0.1.113)
  • Fixed Stream Animated chat emotes now animate in the operator chat overlay (they previously showed only their first frame), and inline emotes are sized tightly to the emote image — including non-square emotes, which render at their natural aspect ratio — instead of reserving a wide box based on the emote's text code. (0.1.113)
  • Changed Stream While a stream is waiting to auto-reconnect during a network dropout in the background, the app now releases the camera sensors (keeping the compositor ready) to save battery, and reopens them automatically the moment the network returns — so a long dead-zone wait no longer drains the battery holding cameras open for nothing. (0.1.113)
  • Fixed Stream When streaming with network bonding (SRTLA), a radio that drops and comes back mid-stream (e.g. a Wi-Fi dropout on the move, or one radio returning a moment after the other on reconnect) now rejoins the bond automatically within a few seconds, instead of leaving you stranded on a single radio until you restarted the stream. (0.1.112)
  • Fixed Stream When a live stream drops because the network went away (airplane mode, dead zone, tunnel — any duration), the app now waits quietly and automatically reconnects on its own the moment connectivity returns, instead of giving up with a red error. Hitting Stop cancels the wait. (0.1.111)
  • Fixed Stream After stopping a stream from the notification while the app is in the background, returning to the app now shows the live camera preview again immediately, instead of a black preview until you navigated into Settings and back. (0.1.108)

2026-07-06

  • Fixed Stream When streaming with network bonding (SRTLA), if the connection to your server dies while both radios stay up the app now detects it and reconnects, instead of showing a healthy "LIVE" while nothing reaches the server (which could also slowly build up memory until the app was killed). (0.1.103)
  • Fixed Stream Kick chat now loads recent message history for every channel, including channels whose chatroom id and channel id differ (previously those silently showed no backfill — chat sat empty until a new live message arrived). (0.1.98)

2026-07-04

  • Fixed Stream In Adaptive bitrate settings, the Save button is no longer blocked by the minimum/maximum fields while adaptive is turned off (they're greyed out and don't apply then), and the screen now notes that the floor and cap take effect only while adaptive bitrate is on. (0.1.96)
  • Fixed Stream The operator chat overlay keeps auto-scrolling to new messages after Kick history loads, and the "loaded from history" separator now sits between the old and new messages instead of being stuck at the bottom of the list. (0.1.93)
  • Fixed Stream The status HUD's cumulative data readout switches to "1.00 GB" at the one-gigabyte mark instead of briefly showing a confusing "1000.0 MB". (0.1.93)

2026-07-02

  • Fixed Stream The experimental Network handoff now switches between Wi-Fi and cellular seamlessly in both directions, with no interruption to your broadcast: the app keeps your connection pinned to an address that stays reachable across the switch, so the handover completes in place instead of dropping and reconnecting. (Only a switch to a network that genuinely can't reach your server at all still reconnects — now within about a second, instead of a frozen "LIVE" for up to ~30 seconds.) (0.1.90)
  • Fixed Stream The experimental Network handoff now recovers on its own when the connection to your streaming server goes dead: instead of showing LIVE while nothing actually reaches the server (which previously could persist until you manually stopped and restarted the stream), the app now detects a sustained stall and automatically reconnects — while a brief Wi-Fi↔cellular handover still switches over in place with no interruption. (0.1.88)
  • Fixed Stream Long streams using the experimental Network handoff no longer crash with an out-of-memory error when the connection can't reach the server for a stretch: an internal retransmit buffer that could otherwise grow without bound while the link was stalled is now capped, so the app keeps running instead of running out of memory (0.1.87)
  • Security Stream SRT streams no longer write your connection credentials to the device log. The streaming library logged the full connection handshake on every connect — including the stream key/publish token and the stream's encryption key material — where anyone with log access (a bug report, adb, a shared debugging session) could read a working credential. That handshake log is now redacted to non-sensitive fields only. (0.1.86)
  • Added Stream Experimental network handoff for SRT streams: with the new per-profile "Network handoff (experimental)" toggle (SRT + Auto network), switching between Wi-Fi and cellular mid-stream hands the connection over in place — on servers that support it viewers see no reconnect at all — instead of always dropping and reconnecting (0.1.84)

2026-07-01

  • Added Stream Rumble settings now have a "Get your API URL" link that opens Rumble's Live Stream API page, so you don't have to hunt for the URL (0.1.78)
  • Changed Stream The streaming notification now shows a clear broadcast icon in the status bar and distinct Stop and Exit button icons, instead of reusing the app icon (0.1.77)
  • Fixed Stream After a Go Live that fails to start (e.g. an unsupported resolution/codec or an unreachable server), retrying now starts cleanly instead of risking a stuck stream that needed a force-close (0.1.76)
  • Changed Stream The app icon is now the dual-camera picture-in-picture mark in the brand teal→purple gradient, matching the website (0.1.71)
  • Fixed Stream The app no longer crashes when you close it (via the notification's Exit action or Back) while a chat or live-status connection is active (0.1.70)
  • Added Stream The streaming notification now has an Exit action alongside Stop: Stop ends the broadcast and leaves the app open; Exit ends it AND closes the app, so you can tear everything down from the notification shade without reopening the app (0.1.70)
  • Added Stream Privacy mode: stay live and connected while your camera and mic stop broadcasting — viewers see a black screen with your editable message ("be right back"), and you resume instantly with no reconnect (0.1.69)

2026-06-30

  • Fixed Stream Hardened the video encoder's GPU setup so the streamed and recorded picture stays correct across a wider range of devices: the encoder now requests a "recordable" graphics surface that some GPUs require (the test device tolerated its absence, so it was previously missing) — without it those devices could produce corrupt or dropped frames in the broadcast. (0.1.63)
  • Fixed Stream The operator chat overlay's status indicator now reflects the real health of the Rumble connection: if your Rumble API key is wrong or expired, it shows "reconnecting" instead of a misleading "connected" over an empty chat; a healthy or simply-offline channel still reads connected. (0.1.61)
  • Security Stream Hostile or invisible Unicode in chat (right-to-left overrides, bidi direction marks, and zero-width / word-joiner characters) is now stripped from the operator chat overlay across Kick, Twitch, and Rumble, so a viewer can't visually reverse or corrupt a chat line; multi-person emoji still render correctly. (0.1.60)
  • Added Stream Your Rumble channel's live chat can now appear in the operator's merged chat overlay alongside Kick and Twitch (turn on "Show Rumble chat" in Settings → Chat → Rumble; it uses the same Live Stream API URL as the Rumble badge, no extra setup). It polls every ~5 s so it lags a few seconds behind live, and it's operator-only — never added to your stream. (0.1.56)
  • Added Stream You can now show your live Rumble channel's status — viewer count, uptime, and likes/dislikes — in the operator badge alongside Kick and Twitch (paste your Rumble Live Stream API URL in Settings → Chat → Rumble, then toggle the segments you want). Operator-only, never added to the stream. (0.1.53)
  • Security Stream Your stream keys, SRT passphrases, and saved platform logins are now kept out of Android's cloud backup and device-to-device transfer, so your credentials never leave your device. (0.1.50)

2026-06-29

  • Added Stream Stream over Wi-Fi and cellular at the same time (SRTLA bonding) so your broadcast keeps going if one connection weakens or drops. Turn it on per connection profile, and the status overlay shows each radio's live bitrate and data used so you can watch your cellular usage. (0.1.47)

2026-06-28

  • Changed Stream The app now holds your full streaming bitrate when the phone is just warm; it only steps the bitrate down once Android reports the device is genuinely hot (not at the earlier "moderate" level, which the system itself flags as not affecting performance). The status overlay no longer shows a heat warning unless it's actually reducing your bitrate — a merely-warm phone (e.g. 42°C) shows just the temperature, not an alarming label you can't act on. (0.1.43)
  • Changed Stream The operator status HUD now shows battery temperature to one decimal place (e.g. 42.4°C) so you can see how close it's creeping to the next degree at a glance. (0.1.42)
  • Added Stream The operator status HUD now shows your phone's net battery power draw on the battery line (e.g. -9.7 W while draining, +5.1 W while charging) — so you can tell at a glance whether your charger is keeping up with the stream. It turns yellow if you're plugged in but still losing charge. Operator-only, never in the stream. (0.1.41)
  • Changed Stream The app no longer lowers your streaming bitrate for heat until the phone is genuinely hot. The old thresholds kicked in around 38°C — normal for a streaming phone — so streams were being throttled (e.g. down to ~2 Mbps) for no real reason; it now leans on the system's own overheating signal and only treats the battery as hot in the mid-40s+°C. (0.1.41)
  • Changed Stream The Settings → Display row now lists what's inside it (video stabilization, camera transitions, keep-awake) so those settings are easier to find. (0.1.40)
  • Changed Stream The mic level meter now holds briefly at each peak and eases back down smoothly instead of snapping, and shows yellow/red threshold lines so you can see how close your level is to the loud (red) zone at a glance. (0.1.40)
  • Added Stream Your stream now automatically uses a USB or wired microphone whenever one is plugged in (e.g. a USB DJI receiver), and falls back to the phone's built-in mic when it isn't. If the external mic disconnects and reconnects — like a USB mic that jiggles loose — it's grabbed again automatically instead of leaving you on the built-in mic. (0.1.40)
  • Added Stream A new Settings → Display "Video stabilization" toggle uses your camera's hardware stabilization to smooth out shake (walking, riding) on your preview and stream, on cameras that support it. (0.1.40)
  • Added Stream Your live stream now keeps running when you open the app's Settings (e.g. to tweak adaptive bitrate) — previously leaving the preview ended the broadcast. Returning to the preview resumes it. (0.1.40)
  • Added Stream You can now connect your Twitch account (a one-time approval at twitch.tv/activate, no password entered in the app) to show a Twitch viewer count + stream uptime badge in the operator overlay, alongside the Kick one — toggle either or both in Settings → Chat → Twitch. Your login is stored only on your device, never shown or added to the stream. (0.1.39)
  • Added Stream The operator chat overlay now shows live Twitch chat alongside Kick: enter a Twitch channel in Settings → Chat and its chat (with native Twitch emotes) appears merged into the same window, each line tagged with its platform. No Twitch login required. (Twitch viewer count + uptime are coming in a later update.) Shown only to you — never in the stream. (0.1.38)
  • Fixed Stream Switching your stream's video codec (e.g. an HEVC destination and an H.264 destination) and going live again — or just stopping and restarting — now reconnects reliably every time, instead of an HEVC stream failing to restart until the app was force-closed. (0.1.37)
  • Added Stream The picture-in-picture inset now has a customizable border: pick a single color, a 2- or 3-color gradient swept around the inset (optionally repeated twice), or an animated rainbow, with adjustable thickness and opacity — and the circular inset's edge is now smoothly antialiased. The border shows in your stream too. (0.1.36)
  • Added Stream SRT streams that fail with an encryption mismatch now show a clear, actionable message telling you whether to add or remove a passphrase from your SRT URL (your passphrase value is never shown or logged). (0.1.36)
  • Changed Stream The picture-in-picture edge-spacing sliders now go up to 320px (from 200) so the inset can be pushed clear of overlays added by a downstream cloud encoder. (0.1.36)

2026-06-27

  • Added Stream A new Settings → Picture-in-picture screen lets you adjust how far the picture-in-picture inset sits from the screen edges, with separate horizontal and vertical sliders; the setting is remembered. (0.1.35)
  • Changed Stream Your dual-camera picture-in-picture layout — which corner the inset is in, which feed is full-screen, and the inset shape — is now remembered across app restarts. (0.1.35)
  • Added Stream Switching camera, swapping the two dual-camera feeds, or toggling single/dual now plays a smooth transition instead of a hard cut — pick Crossfade, Dip to black, Wipe, Zoom, or Random (or turn it off) in Settings → Display. The effect shows in your stream too. (0.1.33)
  • Changed Stream While you're live, the streaming destination now appears in the top-right status panel (as SRT/HEVC @yourchannel, on its own line above the bitrate) instead of above the Stop button, leaving the Stop control uncluttered. (0.1.32)
  • Added Stream The Kick channel badge can now show your stream's UPTIME alongside (or instead of) the viewer count — two toggles in Kick chat settings let you pick either, both (K 1,234 · 2:14:07), or neither (badge hidden); the viewer count now has a thousand separator. (0.1.31)
  • Added Stream Your stream now keeps running when you leave the app or turn the screen off — once you go live it stays connected until you stop it. A notification shows the live uptime and bandwidth with a Stop button, so you can broadcast with the app in the background or the screen off (e.g. in a pocket). (0.1.30)
  • Changed Stream The mic level meter is now a tall bar up the left edge of the preview (reaching toward the LIVE timer), so your audio level is readable at a glance instead of a short stub. (0.1.28)
  • Added Stream A new Settings → Display "keep screen awake" toggle (on by default) stops the screen from timing out while you're on the live preview; a live stream always keeps the screen on regardless. (0.1.28)
  • Added Stream In dual picture-in-picture, a new PIP "shape" button cycles the inset camera between Fill (the original), a 1:1 square, and a circular "face-cam bubble" (with a border) — applied to both your preview and the stream; the Corner button is renamed from "Inset corner". (0.1.25)
  • Added Stream Kick chat emotes now show as inline images in the operator overlay (toggle in Kick settings, on by default); if an emote can't load it falls back to its name, so chat always stays readable. (0.1.15)
  • Added Stream The top-left status is now always visible (OFFLINE/LIVE with the elapsed timer), and a Kick viewer-count badge shows your channel's online status and current viewers at a glance — K{n} when live, K- when offline, K? when it can't be reached — even before you go live. (0.1.14)

2026-06-26

  • Added Stream Adaptive bitrate (on by default): the stream automatically lowers its video bitrate when the network can't keep up and raises it back when the connection recovers — staying between a floor you set and your profile's bitrate — to ride out shaky uplinks instead of stalling or disconnecting. The operator HUD shows when the stream is being scaled, and why (heat vs. network). (0.1.11)
  • Fixed Stream The operator chat overlay no longer grows with the text-size setting and ride up behind the top-left LIVE indicator; it now stays a fixed on-screen region (a larger text size shows fewer lines instead of a taller box). (0.1.11)
  • Added Stream Operator-only Kick chat overlay: enter your Kick channel slug and your live chat appears over the preview — with recent-message history, timestamps, platform badge, emote names, an adjustable text size, and graceful auto-reconnect — shown only to you, never in the outgoing stream. (0.1.9)
  • Added Stream A one-tap mic MUTE toggle and a live audio level meter (active both before and during a stream): confirm your audio at a glance and mute on demand — the outgoing stream goes silent when muted, and the meter greys out. (0.1.9)
  • Added Stream Active thermal protection automatically lowers the streaming video bitrate as the device heats up (and restores it as it cools), with a HUD indicator, to help long sessions keep streaming instead of overheating. (0.1.9)
  • Added Stream An operator status HUD over the preview shows battery % (with charging), battery temperature color-coded green/yellow/red, and live upload bandwidth with its network type — visible only to you, never in the stream. A standard top-left "🔴 LIVE" indicator shows the elapsed stream time. (0.1.9)
  • Added Stream A single Settings button now opens an organized Settings screen: pick your stream profile under "Stream profiles" and choose a System / Light / Dark app theme under "Appearance" that applies everywhere, including the navigation and status bars. (0.1.8)
  • Added Stream Save multiple named stream destinations and switch the active one in a couple taps, so you can keep e.g. an SRT/HEVC server and an RTMP server configured and flip between them without re-typing the URL, stream key, and codec each time. (0.1.7)
  • Added Stream The app now follows your system dark-mode setting: the Settings and Debug screens and the navigation bar render dark in dark mode instead of bright white. (0.1.7)
  • Fixed Stream The back camera no longer stays frozen if it stalls mid-session: the app now detects a stalled camera feed and automatically restarts it within a few seconds, so dual-camera preview/streaming keeps running without needing to background and reopen the app. (0.1.6)
  • Added Stream Stream the live camera view (single or dual PiP) to any RTMP, RTMPS, or SRT server in H.265/HEVC. A settings screen configures the protocol, server URL + stream key, resolution, frame rate, and bitrate; a Go Live / Stop control shows the connection state, and dropped connections auto-reconnect. (0.1.5)

2026-06-25

  • Added Stream Dual-source mode: stream two cameras at once in a picture-in-picture layout, with one tap to swap which feed is full-screen and another to move the inset between corners. Only the camera pairs your device supports running concurrently are offered. (0.1.4)
  • Added Stream Live camera preview: a full-screen, upright preview from any of the device's cameras, with a picker that groups front/back cameras and labels each by its field of view. (0.1.3)