Skip to content

Releases: MikePfunk28/theo_chat

TheoChat v1.4.2

Choose a tag to compare

@MikePfunk28 MikePfunk28 released this 21 Apr 18:48
dbad7fb

TheoChat v1.4.2 — Real-time moderation

Removes the mandatory 30-second chat delay that v1.3.0 introduced. YouTube messages
now render into Twitch chat in ~100-200ms instead of being held for half a minute.

Changed

  • Messages render immediately. The 30s pre-render hold is gone. Mod delete and
    ban events continue to remove messages in real time via gRPC tombstones.
  • Popup redesign. The disabled-slider "MOD SAFETY WINDOW" section is now a
    static "DELIVERY MODE: LIVE" readout. The BUFFERED telemetry cell is now MODE.

Removed

  • DEFAULT_DELAY_MS, MIN_SAFE_DELAY_MS, DELAY_MS constants in content.js
  • pendingQueue, queueOrInject(), flushPendingQueue()
  • theochat.setDelay message handler
  • Delay slider in popup.html

Rationale

The 30s buffer was a defensive workaround that duplicated what gRPC tombstones
already solve. The real-time tombstone path delivers mod deletions in ~50-200ms,
and the existing reconcile sweep catches anything missed. The forced 30s hold
just made Twitch viewers see YouTube chat half a minute late with no added
moderation safety.

Full Changelog: v1.4.1...v1.4.2

TheoChat v1.4.1

Choose a tag to compare

@MikePfunk28 MikePfunk28 released this 19 Apr 09:43
4979eaf

What's Changed

  • Fix/grpc lifecycle and observability by @MikePfunk28 in #2
  • chore(deps): bump protobufjs from 7.5.4 to 7.5.5 in /service in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1
  • merge main into branch by @MikePfunk28 in #3
  • Fix/grpc lifecycle and observability by @MikePfunk28 in #4
  • fix(stats): round recent message rate for improved readability in ins… by @MikePfunk28 in #5
  • fix(manifest): update version to 1.4.1 for release by @MikePfunk28 in #6

New Contributors

Full Changelog: v1.3.1...v1.4.1

TheoChat 1.4.0

Choose a tag to compare

@MikePfunk28 MikePfunk28 released this 19 Apr 04:33
4979eaf

What's Changed

  • Fix/grpc lifecycle and observability by @MikePfunk28 in #2
  • chore(deps): bump protobufjs from 7.5.4 to 7.5.5 in /service in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1

New Contributors

Full Changelog: v1.3.1...v1.4.0

TheoChat 1.3.1

Choose a tag to compare

@MikePfunk28 MikePfunk28 released this 16 Apr 21:51
3239154

v1.3.1 — Theo-only hardening and mod-safety lockdown

  • Extension hard-gated to twitch.tv/theo (and popout chat); inert on
    every other page
  • Streamer target channel is now fetched from the first-party config
    endpoint (t3yt.mikepfunk.com/api/config), not hardcoded
  • Mod safety window locked at 30 seconds: every injected YouTube
    message passes through one full server-side moderation
    reconciliation sweep before rendering. Mod deletions, timeouts,
    and bans are respected even if the real-time event is delayed
    or missed.
  • Navigation away from the streamer's channel cleanly tears down the
    WebSocket and resets reconnect backoff
  • Popup coordinates with the background script so health polling only
    runs when the user is actively viewing the target channel or has
    the popup open
  • Service side (deployed separately): SDK-only channel-scoped live
    detection, zero YouTube API quota while offline, strict
    snippet.channelId rejection at every layer

TheoChat 1.3.0

Choose a tag to compare

@MikePfunk28 MikePfunk28 released this 16 Apr 19:58
6d3926d

TheoChat 1.3.0

Changes in this version:

  • Locked the add-on to Theo’s Twitch page only (twitch.tv/theo and Theo popout chat)
  • Locked YouTube verification to Theo’s configured YouTube channel ID
  • Live-only detection: ignores non-live videos
  • Improved moderator sync:
    • real-time delete/retract/ban handling
    • delayed messages deleted during the mod buffer never render
    • 30-second fallback reconciliation sweep while live
  • Added safer reconnect/watchdog behavior for stale stream and websocket recovery
  • Reduced unnecessary background activity:
    • YouTube API work only starts when a client is actively using the bridge
    • background polling is limited to relevant Theo tabs / popup-open cases
  • Moved runtime endpoint/channel config to hosted config instead of hardcoded worker values
  • Updated advanced page copy to make clear the add-on is Theo-only and endpoint override is for testing/debugging only
  • Updated docs and operator-facing text to match actual behavior

Full Changelog: v1.2.0...v1.3.0

TheoChat 1.2.0

Choose a tag to compare

@MikePfunk28 MikePfunk28 released this 16 Apr 02:23
e47c2d0

v1.2.0

Moderation sync:

  • All YouTube mod actions reflected in Twitch: Remove, Timeout, Hide User, Blocked Words
  • Reconciliation poll every 90s compares live state with YouTube API — catches any missed events
  • MESSAGE_RETRACTED_EVENT (type 11) now handled alongside standard delete/tombstone types

Live detection:

  • Background script shows red LIVE badge on toolbar icon when streaming
  • Browser notifications on stream start/end
  • Connects during YouTube waiting room (upcoming), not just live broadcast
  • AutoHeal fallback with exponential backoff (5min → 60min max) — zero quota when idle
  • PubSub subscription retries every 5 min if initial attempt fails
  • gRPC auto-reconnects on transient errors (5s retry)

Display:

  • Custom YouTube channel emojis rendered as images (scraped from live_chat page, zero quota)
  • Verified badge now rendered (gray checkmark)
  • Username colors, avatars, Owner/Mod/Member/SuperChat badges

Reliability:

  • Heartbeat watchdog — force reconnect after 90s silence
  • Exponential backoff on WebSocket reconnect (3s → 30s max)
  • Defensive error isolation — event handler failures cannot affect native Twitch chat
  • Popup alert strip with manual RECONNECT button

Observability:

  • /health returns quota usage, uptime, message counts
  • /metrics returns full operational metrics (gated behind METRICS_TOKEN)
  • Quota budget enforcement — reconcile auto-skips near daily ceiling
  • Per-IP WebSocket connection cap (default 5)

Full Changelog: v1.0.0...v1.2.0

Theo Chat 1.0.0

Choose a tag to compare

@MikePfunk28 MikePfunk28 released this 15 Apr 16:06
5a561e6

Merges YouTube live chat into your Twitch chat view. YouTube messages appear inline in the native Twitch chat panel with a red YT badge. When YouTube mods delete a message or ban a user, those actions sync to the Twitch view instantly. Built for theo.gg — but works for any streamer who simulcasts to YouTube + Twitch.

Live site: t3yt.mikepfunk.com


How It Works

YouTube goes live
       │
       ▼
YouTube PubSub push ───► [Railway service] ──(videos.list, 1 quota)──► gRPC stream
                               │
                               ▼ (WebSocket)
                        [Browser extension]
                               │
                               ▼ (DOM injection)
                         Twitch chat panel ─── YT messages + mod sync

Architecture

Three deployable surfaces:

Surface Stack Hosted on Purpose
Service Node.js + gRPC + ws Railway Connects to YouTube, relays chat via WebSocket, serves /overlay
Landing + API Cloudflare Worker Cloudflare t3yt.mikepfunk.com landing, /api/config, /privacy
Extension WebExtension MV3 Firefox/Zen/Chrome Injects YouTube messages into Twitch DOM, popup control rig

Key features

  • Zero-delay by default — messages appear instant
  • Opt-in mod buffer — slider in popup lets Theo hold messages 0–30s so mods can delete on YouTube before viewers ever see them; deleted-while-buffered messages never render
  • Instant mod sync — deletions and bans from YouTube mods reflect in the Twitch view immediately
  • Super chats, member badges, owner badges pass through with proper styling
  • Auto-reconnect on both the gRPC and WebSocket layers
  • PubSub auto-renewal every 4 days (subscription lease is 5 days)
  • Zero-config extension — fetches WS URL from t3yt.mikepfunk.com/api/config at startup; Theo never types a URL

Full Changelog: https://github.com/MikePfunk28/theo_chat/commits/v1.0.0