Timo
f7096edd30
Refactor: Behebung Force-Sync ACK-Zaehler-Inflation, SHA-256 Hashing, Room-ID-Desinfizierung, Reduzierung MIN_SEEK_DELTA auf 2s und seekDebounce auf 300ms
2026-05-30 02:00:17 +02:00
Timo
93acd0b44c
fix: resolve F-01 to F-08 audit bugs and QoL improvements
2026-05-30 01:34:48 +02:00
Timo
92fb8e2d00
Roll back network latency compensation to maximize simplicity and clock skew safety
2026-05-30 00:06:52 +02:00
Timo
43cde9bbef
Optimize network latency compensation cap to protect against system clock skew
2026-05-30 00:03:56 +02:00
Timo
56955027f9
Fix critical sync lockouts, zombie disconnects, play-seek debounces, active lobbies, SW keep-alives, branding matches and ESLint warnings
2026-05-30 00:02:19 +02:00
Koala
762d6425be
fix: audit corrections for sameEpisode, CMD_ACK, lastSeqBySender, forceSyncTimeout
...
- sameEpisode: return false when one title is null (prevent false lobby completions)
- Episode guard: skip CMD_ACK for FORCE_SYNC_EXECUTE on mismatch (H1)
- Persist lastSeqBySender in chrome.storage.session (M3, survives SW restart)
- Clear forceSyncTimeout before overwriting (H3, pre-existing timer leak)
2026-05-28 04:45:52 +02:00
Koala
1fba2fb69c
perf: add command sequence numbers, episode-aware sync guard, fix echo suppression
...
- Add monotonically increasing seq per peer (localSeq + lastSeqBySender)
- Server relays seq field for stale command detection (backward compatible)
- Replace expectedEvents (1500ms timeout) with _suppressTimers (per-type, 300ms)
- Fix FORCE_SYNC_ACK missing seq (stale-ACK could trigger premature exec)
- Fix episode lobby readyPeers asymmetry (initiator never broadcasted readiness)
- Add extractEpisodeId() parsing S01E01/Season 1 Episode 1/Folge 5 patterns
- Add isDifferentEpisode() guard blocking sync commands across different episodes
- add sameEpisode() for format-tolerant lobby title matching
- Guard controlled by autoSyncNextEpisode setting with disable hint in warning
- Reduce reactive lock from 1000ms to 300ms (seq numbers handle ordering)
2026-05-28 04:30:32 +02:00
Koala
b7a44024ab
fix: suppress ghost seek events on tab re-focus (Firefox tab throttling)
2026-05-26 02:06:23 +02:00
Koala
ed24a4c263
fix: commandSenderMap race - embed senderId in SERVER_COMMAND/CMD_ACK instead of global Map
2026-05-25 11:52:05 +02:00
Koala
284b82a910
fix: v1.7.0 - critical bug fixes, race conditions, memory leaks, null guards, server hardening
2026-05-25 11:48:54 +02:00
Koala
4909a86a13
feat: implement sprint 1 quick wins - toast system, notifications, UX polish
...
- Add central toast notification system (popup.html, popup.js)
- Add browser notifications toggle (opt-in) with event toasts
- Fix interpolation memory leak (unload listener)
- Add /health endpoint with IP-based rate limiting (server)
- Improve tab sorting (current tab first, matches, alphabetical)
- Add copy-to-clipboard visual feedback with toast
- Show targetTime in last action card for seek/force sync
- Add explicit video cleanup when element removed (content.js)
- Update ROADMAP.md to remove implemented features
2026-05-25 09:53:25 +02:00
Timo
19ddfd1e21
Add ESLint setup, fix 6 lint errors, update AI_INIT.md with lint checks
2026-05-25 02:46:29 +02:00
Timo
4d85362020
Fix 5 frontend audit findings: FORCE_SYNC_ACK timeout, expectedTimeouts leak, undefined var, unreachable error handler, Smart Match perf
2026-05-25 02:35:02 +02:00
Timo
5067b8e541
fix(extension): exclude own tab from smart match and send immediate heartbeat after injection
2026-05-25 02:24:50 +02:00
Timo
385602c194
fix(extension,server): resolve 12 audit findings (lobby cleanup, dedup race, protocol version, rate limiting, observer scope, and more)
2026-05-25 02:14:59 +02:00
Timo
366d157d80
feat: implement Strategy C (zero-latency hybrid synchronization) and fix room switching duplicate matches
2026-05-18 19:40:46 +02:00
MacBook
c9ec6ce3e0
docs: final polish and refined protocol automation
2026-05-04 04:45:02 +02:00
MacBook
652f1cef4f
refactor: automate protocol sync and reorganize repo for store readiness
2026-05-04 04:43:30 +02:00
Timo
c2857dbdda
feat: Improve seek logging and increase log buffer to 200 entries
...
- Log [Seek] Filtered when delta < 3s threshold (warn level) showing exact delta
- Log [Seek] Relayed when a seek passes all filters (info level) showing target time + delta
- Programmatic seeks (force sync, peer commands) remain silent in logs
- Increase log ring buffer from 50 -> 200 entries in all three enforcement points
2026-04-25 17:45:06 +02:00
Timo
d07bf745a3
fix: Add seek delta threshold and debounce to prevent HLS/DASH buffering micro-seeks from being relayed as user seeks
...
Streaming players (Emby, Jellyfin, etc.) perform frequent internal seeks
for buffering that are < 1s in magnitude. These were being relayed to
peers, causing brief video freezes every few minutes.
Fix:
- MIN_SEEK_DELTA = 3.0s: ignore seeks smaller than 3 seconds
- 800ms debounce: settle rapid-fire seeks (e.g. scrubbing) before relaying
- Programmatic seek suppression still takes priority via expectedEvents
- lastReportedSeekTime baseline updated on programmatic seeks too
2026-04-25 17:42:55 +02:00
Timo
55c2d4ed0d
feat: Auto-Sync Next Episode v1.2.0
...
Adds a new toggleable feature that detects episode transitions via
mediaTitle mutation (loadeddata/MutationObserver), pauses the video,
and waits for all room peers to load the same episode before
executing a coordinated Force Sync play at 0:00.
Protocol:
- Add EPISODE_LOBBY and EPISODE_READY events to shared/constants.js
- Add EPISODE_LOBBY_TIMEOUT (60s) constant
- Relay both new events in server/index.js
Content Script (content.js):
- Layered detection: loadeddata + MutationObserver src-change + heartbeat
- Debounced onEpisodeTransition() sends signal ONLY; no eager pause
- PAUSE_FOR_LOBBY handler pauses only after background confirms feature enabled
- startLobbyPoll() polls title match without premature pause for non-initiators
- checkAndReportLobbyReady() pauses and sends EPISODE_READY_LOCAL on match
- CONTENT_BOOT recovery for re-injection after hard navigation
Background (background.js):
- Episode lobby state persisted in chrome.storage.session with recovery
- EPISODE_CHANGED: checks setting, creates lobby, sends PAUSE_FOR_LOBBY to tab
- EPISODE_LOBBY/READY server event handlers with dedup logic
- 60s timeout cancels lobby (Option B) with Chrome failure notification
- Peer departure handled: removes from readyPeers, re-checks completion
- executeEpisodeLobby() reuses existing Force Sync pipeline at targetTime 0.0
- Lobby cleared on LEAVE_ROOM; status exposed in GET_STATUS
Popup:
- Auto-Sync Next Episode toggle in Settings tab (default: off, opt-in)
- Episode Lobby status card in Sync tab with peer readiness display
- LOBBY_UPDATE message handler for real-time UI updates
Bumps APP_VERSION and manifest to 1.2.0
2026-04-25 16:43:10 +02:00
Timo
7417c21217
feat: enhance peer list with volume icons, play/pause status, and time interpolation (v1.1.3)
2026-04-25 03:47:57 +02:00
Timo
4785c9625c
chore(extension): bump version, fix targeted injection and race conditions
2026-04-23 21:58:19 +02:00
MacBook
67f872ffd2
feat(sync): implement end-to-end media title synchronization
2026-04-22 18:29:53 +02:00
MacBook
e40e2e5101
feat(dev): implement extended video metadata and data-attribute inspector
2026-04-22 18:22:59 +02:00
MacBook
6065e0a278
fix(extension): guard currentTime against non-finite values and fix seek payload mismatch
2026-04-22 18:05:33 +02:00
Timo
2aef9a1ffc
fix: v1.0.5 stability hotfixes (ACK security and event jitter)
2026-04-22 13:55:57 +02:00
Timo
bcb3acb78e
fix: resolve critical sync feedback loop and notification argument order
2026-04-22 13:41:05 +02:00
Timo
622db23f38
style: restore classic remote control UI and sync architectural fixes
2026-04-22 13:32:10 +02:00
Timo
901b97dcaf
fix: implement timestamp correlation for visual ACKs
2026-04-22 12:23:17 +02:00
Timo
221961820a
feat: implement visual confirmation system and redesigned Sync tab
2026-04-22 12:20:32 +02:00
Timo
1355022c35
feat: reorganize popup tabs and add video debug diagnostics
2026-04-22 11:27:16 +02:00
Timo
f1dae0ef4e
chore: final integration polish - harden join ux, refine connection state, and sanitize logs
2026-04-22 11:04:51 +02:00
Timo
4f2fe3045c
Fix SPA video element recycling resilience
2026-04-22 10:55:54 +02:00
Timo
0b28274766
Fix: Service Worker persistence, Ping-Pong failsafe, URL parsing, and server rate limit DoS
2026-04-22 10:31:46 +02:00
Timo
88cb313fc0
Security & Stability: Fixed SW race, ping-pong loops, and invite parsing
2026-04-22 10:20:45 +02:00
Timo
d750d96db5
Fix security vulnerabilities and logic flaws
2026-04-22 10:04:46 +02:00
Timo
3ec10a52e4
Refactor: Comprehensive Security and Architecture Audit (Self-Audit Fixes)
2026-04-22 09:53:26 +02:00
Timo
37ead94f76
Refactor: Comprehensive Security and Architecture Audit
2026-04-22 09:49:23 +02:00
Timo
f2781a45c2
Fix: Resolve SyntaxError and ReferenceError in content.js MutationObserver
2026-04-22 09:01:50 +02:00
Timo
0d7e5e7fc7
Applied Final Polish optimizations: SPA navigation fix, UI throttling, and Strict WSS
2026-04-22 08:57:22 +02:00
Timo
5cfc9d4047
Stable state before Final Polish optimizations
2026-04-22 08:56:52 +02:00
MacBook
14033244e5
Initial commit: Production-ready KoalaSync Monorepo with Manifest V3, Socket.IO Relay, and Two-Phase Sync
2026-04-21 07:49:37 +02:00