Stream limits are now enforced on every client — including ones that ignore remote stop commands (Swiftfin, Streamyfin, AFinity, Infuse, external players).
✨ What's New (BETA):
- HTTP-level hard block — over-limit streams are rejected with a
403before any byte is served, so they can't play on any client - PlaybackInfo returns a proper "not allowed" error at the limit
- Single clean custom message on web clients, in every language (replaces the built-in dialog)
🆕 Also new:
- Default max streams for users without an explicit limit
- Automatic config migration from pre-1.1 installs (legacy & corrupted entries cleaned)
- Kills server-side transcode jobs of blocked streams; optional device logout
- Admin-only management API
- One manifest, two builds — Jellyfin 10.11 (
1.1.0.0) & Jellyfin 12 (1.1.1.0)
🐛 Fixed:
- One invalid config entry disabled every limit (#5, #8, #18)
- Device logout never actually worked (a session id was passed instead of an access token)
- Duplicated users in the settings dropdown (#16)
- Empty popup when no message was configured (#6)
- Replaced Newtonsoft.Json with System.Text.Json (no external dependency)
📦 Install:
Add the manifest, then install from the plugin catalog:
https://raw.githubusercontent.com/JellyboxAD/Jellyfin.Plugin.StreamLimit/main/manifest.json
Native clients are fully blocked but show their own error screen — custom wording is web-only.
Full Changelog: v1.0.0.2...v1.1.0.0