From c3910687063fa9458c8f1ad368a0b2bda7710657 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 15 Jun 2026 11:14:23 +0000 Subject: [PATCH 1/2] chore(release): update versions to v2.3.1 [skip ci] --- README.md | 4 ++-- extension/manifest.base.json | 2 +- package.json | 2 +- website/template.html | 2 +- website/version.json | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9865c47..caf8de5 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@

KoalaSync is a lightweight Browser Extension and Relay Server for synchronized video playback on almost any website with a video element—YouTube, Twitch, Netflix, Emby, Jellyfin, and beyond. Built with a focus on Data Sovereignty and Performance.

-

New v2.3.0 Release! — See what's changed

+

New v2.3.1 Release! — See what's changed

### 🌟 Why KoalaSync? @@ -103,7 +103,7 @@ To connect your extension to a self-hosted server, open the popup → **Room** t To verify your relay is reachable from outside, visit `https://your-domain.com` in a browser — it should return `{"status":"online","service":"KoalaSync Relay"}`. -#### Supply Chain Security (v2.3.0+) +#### Supply Chain Security (v2.3.1+) All official release artifacts (Docker images and extension binaries) are published with signed [artifact attestations](https://docs.github.com/en/actions/how-tos/secure-your-work/use-artifact-attestations) to prove they were built from this repository's source code. diff --git a/extension/manifest.base.json b/extension/manifest.base.json index 98147ff..7264342 100644 --- a/extension/manifest.base.json +++ b/extension/manifest.base.json @@ -2,7 +2,7 @@ "manifest_version": 3, "default_locale": "en", "name": "KoalaSync", - "version": "2.3.0", + "version": "2.3.1", "description": "Synchronize video playback on YouTube, Netflix, Emby, Jellyfin, and any HTML5 site in real-time with friends.", "permissions": [ "storage", diff --git a/package.json b/package.json index 1bc0127..71159f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "koalasync", - "version": "2.3.0", + "version": "2.3.1", "description": "KoalaSync Build Scripts", "private": true, "scripts": { diff --git a/website/template.html b/website/template.html index 15f82ae..e701bc4 100644 --- a/website/template.html +++ b/website/template.html @@ -102,7 +102,7 @@ "priceCurrency": "EUR" }, "description": "Watch Netflix, YouTube, Twitch, Jellyfin, Emby and almost any HTML5 video in perfect sync with friends. Open source, privacy-first, free.", - "softwareVersion": "2.3.0", + "softwareVersion": "2.3.1", "license": "https://opensource.org/licenses/MIT", "sameAs": "https://github.com/Shik3i/KoalaSync", "image": "https://sync.koalastuff.net/assets/NewLogoIcon.webp", diff --git a/website/version.json b/website/version.json index a1092f3..448db1b 100644 --- a/website/version.json +++ b/website/version.json @@ -1,4 +1,4 @@ { - "version": "2.3.0", - "date": "2026-06-14T03:17:45Z" + "version": "2.3.1", + "date": "2026-06-15T11:14:22Z" } From 4ca1ef22d2384ef34ab28f084dda76ed428b42b7 Mon Sep 17 00:00:00 2001 From: KoalaDev <6156589+Shik3i@users.noreply.github.com> Date: Mon, 15 Jun 2026 13:17:10 +0200 Subject: [PATCH 2/2] Revise CHANGELOG for v2.3.1 updates Updated changelog for version 2.3.1 with fixes and changes. --- docs/CHANGELOG.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index e3fe719..e9d981f 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,12 +6,9 @@ All notable changes to the KoalaSync browser extension and relay server. ## [v2.3.1] — 2026-06-15 -### Fixed -- **Server: Race condition on concurrent peer joins**: Added a per-peerId serialization lock (`peerJoinLocks`) that prevents two connections with the same `peerId` from both passing the deduplication check and simultaneously registering in `peerToSocket`. Previously, rapid reconnects could leave stale mappings that caused cross-room ACK/PING misdelivery. -- **Server: Crash-safe error handling in teardown paths**: Wrapped `removePeerFromRoom` calls in the disconnect, leave, and reaper handlers with try/catch to prevent an unhandled exception in any teardown path from crashing the process. -- **Server: Smart unhandled rejection handling**: Replaced the immediate `process.exit(1)` on any `unhandledRejection` with a rate-limited approach — the server now exits only after 5 unhandled rejections within 60 seconds, surviving transient errors while still failing fast on cascading crashes. -- **Server: Reduced GC pressure in admin health metrics**: Replaced the three-pass `Array.from()` / `map()` / `reduce()` / `filter()` pattern in `buildHealthPayload()` with a single `for-of` loop, eliminating temporary array allocations proportional to the number of active rooms. -- **Server: Test isolation for rate-limit denial counters**: `stopServerForTests()` now resets the `rateLimitDenied` counters between test runs. +### Changed +- **Server: Smart unhandled rejection handling (exits after 5/min instead of 1)** +- **Server: Optimized admin health metrics allocation** ---