🚦 v1.1.0.2 — Live control, notifications & no more lockouts
Recommended update for everyone. Install it from Dashboard → Plugins (your server picks the right build), then restart Jellyfin.
| Jellyfin server | Version | File |
|---|---|---|
| 10.11.0 → 10.11.x | 1.1.0.2
| StreamLimit-v1.1.0.2.zip
|
| 12.0 → 12.x | 1.1.1.2
| StreamLimit-v1.1.0.2-jellyfin12.zip
|
Important
Administrators are now exempt from stream limits by default. Turn off Exempt administrators in the plugin settings to limit them again.
✨ New
- Live view of active streams — the settings page lists every counted stream (user, device, client, title, IP, direct play or transcode), refreshed every 5 seconds. Stop and Stop + log out take effect immediately: the download is cut and the slot is freed, so the blocked device can start right away.
- Webhook notifications (#7) — get notified when a stream is blocked, and optionally when an admin stops one. Discord webhooks get a formatted embed; any other URL receives JSON that works with Apprise (Telegram, ntfy, e-mail…) and generic webhooks. A Send test button checks your setup.
- Smarter blocked message — use
{{user}},{{active}},{{limit}}and{{devices}}in the title and text, e.g. "Already playing on: Living-room TV". Works in the web popup and in the server message. - Activity log (#7) — every block is recorded in Dashboard → Activity with user, device, client and IP (at most one entry per device every 5 minutes).
- Sidebar entry — Stream Limiter now has its own entry in the dashboard menu.
🐛 Fixes
- No more lockouts after a stop. Some clients keep their session alive after being stopped (AFinity, Swiftfin after a playback error, the Android app's native player). Those devices no longer count against the limit.
- Clients that can't receive commands are now stopped on the server side, so their stream stops counting too.
- Legacy tokens are recognised. On Jellyfin 12, clients sending
X-Emby-Token(or theEmbyauth scheme) to stream URLs could slip past the hard block. - The web popup is always on top, above the buffering spinner of newer jellyfin-web versions, and blocks on
fetch()requests are detected too. - A deleted user's limit is now removed from the configuration.
🔧 Under the hood
- The web message no longer edits
index.htmlon disk — it is added as the page is served. It works with read-only web folders (Docker), needs no restart when toggled, never runs a stale cached script after an update (Android webviews included), and the tag left by older versions is cleaned up automatically (also on uninstall). - Verified end to end on Jellyfin 10.11.11 and Jellyfin 12.3.
- Stricter build checks so every release loads on all 10.11.x and 12.x servers, and CI on every push and pull request.
📦 Install
Add the repository in Dashboard → Plugins → Repositories, then install StreamLimiter from the catalog:
https://raw.githubusercontent.com/JellyboxAD/Jellyfin.Plugin.StreamLimit/main/manifest.json
Tip
If the plugin shows NotSupported after updating: uninstall it, restart, reinstall it from the catalog and restart again. Your limits and settings are kept.
Full changelog: v1.1.0.1...v1.1.0.2