mirror of
https://github.com/Shik3i/KoalaSync.git
synced 2026-07-26 20:18:14 +00:00
98b4fc5fb4
- Add per-peer monotonically increasing seq numbers (localSeq + lastSeqBySender) - Server relays seq for stale command detection (backward compatible) - Replace expectedEvents (1500ms timeout) with _suppressTimers (per-type, 300ms) - Fix FORCE_SYNC_ACK missing seq (stale-ACK guard) - Fix episode lobby readyPeers asymmetry (initiator now included) - Add extractEpisodeId() parsing S01E01, Season 1 Ep 1, Folge 5, Ep. 3, #42 - Add isDifferentEpisode() guard blocking cross-episode sync commands - Add sameEpisode() for format-tolerant lobby title matching - Guard controlled via autoSyncNextEpisode setting - Reduce reactive lock 1000ms → 300ms - Fix routeToContent unbounded retry (max 3 attempts) - Fix server bcrypt.hash failure crashing join flow - Fix sameEpisode(null, title) returning true - Fix forceSyncTimeout leak on rapid force sync clicks - Persist lastSeqBySender across service worker restarts - Bump version: 1.8.10 → 1.9.0
KoalaSync Browser Extension
A Manifest V3 Browser Extension (Chrome & Firefox) for synchronized video playback across any website.
Key Features
- Manifest V3: Optimized Service Worker architecture with session persistence.
- Pure Vanilla JS: No external dependencies or heavy libraries.
- Smart Peer IDs: Hexadecimal IDs combined with customizable Usernames for easy identification.
- Dual Heartbeat: Advanced session tracking (Background) and video synchronization (Content) to prevent ghost sessions.
- Live Diagnostics: Built-in "Dev" tab for real-time video state debugging (ReadyState, CurrentTime, etc.).
Tab Overview
- Room: Manage connections, view active peers, and share invitation links.
- Sync: Control video playback (Play/Pause/Force Sync) and view recent activity.
- Settings: Customize your Username and toggle domain-based Noise Filtering.
- Dev: Monitor connection status and view real-time video element metadata for debugging.
Privacy & Permissions
KoalaSync requires <all_urls> permission to detect and interact with video elements (<video>) on websites.
- No Browsing History: We do not track or store your browsing history.
- State Management: Sensitive data (Room Passwords) is stored locally using
chrome.storage. - Zero Telemetry: No analytics or external tracking scripts.
- Zero Runtime Dependencies: The extension is built with pure Vanilla JS and contains no external libraries or tracking scripts, ensuring performance and privacy.
Installation
- Prepare Extension: From the repository root, run:
node scripts/build-extension.js - Open Chrome and go to
chrome://extensions/. - Enable Developer mode (top right).
- Click Load unpacked and select the
dist/chromefolder.
Development
If you modify shared/constants.js, you must synchronize the changes by running the build script from the root:
node scripts/build-extension.js
This ensures that the extension/shared folder is updated with the latest protocol constants.