Koala 82c09a5328 fix(popup): use hostname-aware domain matching to prevent false positives
The noise filter used naive String.includes() on the full URL, causing
blacklist entry 'x.com' to match netflix.com (since 'netflix.com'
contains 'x.com' as substring). This made Netflix tabs disappear when
the filter was enabled.

Fixed by extracting the URL hostname and matching at domain boundaries:
- Domain entries (x.com): hostname === domain || endsWith('.' + domain)
- Prefix entries (amazon.): startsWith || includes('.' + domain)
- Keyword entries (jira): substring fallback on full URL

Release v1.7.5
2026-05-25 13:26:01 +02:00
2026-04-21 08:46:28 +02:00
2026-05-02 02:07:22 +02:00

KoalaSync

Release Status GitHub release License Firefox Add-on Chrome Extension

KoalaSync is a lightweight Browser Extension and Relay Server for synchronized video playback across any website—YouTube, Twitch, Netflix, and custom HTML5 players. Built with a focus on Data Sovereignty and Performance.

🌟 Why KoalaSync?

  • 🛡️ Security-First: Volatile RAM-based relay with built-in brute-force protection and zero-persistence architecture.
  • 📡 Direct Logic: Manual Socket.IO wire implementation for reliable synchronization.
  • 🛠️ Clean Build: Dependency-free extension runtime with no library overhead.
  • 🌐 Universal: Works on any website with a <video> tag.

Key Features

  • Global Synchronization: Synchronize Play, Pause, and Seeking on any website with a <video> tag.
  • Episode Auto-Sync: Perfectly sync series binges. All peers wait until everyone has loaded the next episode before starting together.
  • Smart Matching: Automatically highlights tabs containing matching video titles.
  • Dual Heartbeat Architecture: Robust session tracking that prevents ghost rooms and stale connections.
  • Efficient Relay: Minimal overhead WebSocket message forwarding.
  • Seamless Invitations: Smart links that automatically configure server and room credentials for your friends.

📂 Repository Structure

  • extension/: Browser Extension (Chrome & Firefox).
  • server/: Node.js + Socket.IO Relay Server (Containerized).
  • website/: Marketing landing page & Invitation Bridge.
  • shared/: Single Source of Truth for protocol constants.
  • scripts/: Automated build and synchronization utilities.
  • docs/: Technical deep-dives (Architecture, Sync Guide).

🚀 Quick Start

For Users (Installation)

The easiest way to install KoalaSync is to download the pre-compiled version from the Releases page.

  1. Download the latest koalasync-chrome.zip or koalasync-firefox.zip.
  2. Extract the file and load it as an "Unpacked Extension" in your browser's Developer Mode.

For Developers (Building)

To build the extension from source and synchronize protocol constants:

npm install
node scripts/build-extension.js

The compiled artifacts will be available in the dist/ directory.

For Self-Hosting (Docker)

Deploy your own private relay server using our official image:

# Pull the latest image
docker pull ghcr.io/shik3i/koalasync:latest

# Or use our example compose file
cp docker-compose.example.yml docker-compose.yml
docker-compose up -d

The server will be available at ws://localhost:3000. See docker-compose.example.yml for advanced configuration.

To connect your extension to a self-hosted server, open the popup → Room tab → select Custom Server → enter your server's WebSocket URL (e.g., ws://localhost:3000).

⚠️ Note: ws:// only works for localhost. If you deploy to a real domain, you must use wss:// (e.g., wss://sync.yourdomain.com). This requires a TLS-terminating reverse proxy (e.g., Caddy, Nginx, or Traefik) in front of the relay server. See Caddyfile.example for a production-ready template.



Built with ❤️ by Shik3i. KoalaSync is Open Source under the MIT License.
S
Description
Minimalist, privacy-first synchronized video playback for YouTube, Netflix, Emby, and general HTML5. Built with pure Vanilla JS and a Node.js relay.
Readme MIT 42 MiB
Languages
JavaScript 52.7%
HTML 27.4%
CSS 19.7%
Python 0.2%