π» v1.1.0.3 β No more ghost streams, clearer settings & messages on native apps
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.3
| StreamLimit-v1.1.0.3.zip
|
| 12.0 β 12.x | 1.1.1.3
| StreamLimit-v1.1.0.3-jellyfin12.zip
|
Important
This release fixes "ghost" streams. Some users were shown with β and blocked by β streams they no longer had, sometimes while not even connected. If a user was wrongly blocked on 1.1.0.2, updating fixes it; no reset needed.
π Fixes
- Ghost streams are gone. A stream now counts only while it is really active: Jellyfin reports it as playing, or media data is actually being sent. A connection left open without sending anything (phone asleep or offline, app killed, a transcode segment the client gave up on) stops counting after 90 seconds, and is closed after 30 minutes. Finished or aborted requests never count.
- A stop report or session end now always frees the slot, even when old connections of that device are still open.
- Playback negotiation is no longer stricter than the stream itself β a stream that would have been allowed is no longer refused up front (e.g. after closing a browser tab).
- Automatic cleanup every minute of slots, stopped devices and internal registries, also for users who never come back.
β¨ New
- Your blocked message on native apps, by default β Android TV, Swiftfin, Streamyfin, AFinity, Findroidβ¦ now receive your message as a 10-second notice instead of a silent spinner. When the Android app's native player is blocked, the message is shown by the app's own interface. Web clients keep the single popup β no duplicates.
- Redesigned settings page β six clear tabs (Live, Limits, Blocking, Message, Notifications, Advanced), a searchable user table showing the limit that really applies to each user, a live message preview and an always-visible save bar.
- Clearer live view β only what is counted, with the reason (Playing, Streaming, Recently active, Stopped by the limiter), idle time and open downloads.
- Reset button per user β frees everything a user holds in one click, as a last resort.
π§ Under the hood
- Verified end to end on Jellyfin 10.11.11 and Jellyfin 12.3, including a real browser, simulated Android TV / Android / web clients (exactly one message each, none on web), range requests and a connection that stops reading mid-stream.
- Admin stops now report live connections cut separately from stale entries cleaned up.
π¦ 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.2...v1.1.0.3