Adds a per-user "Can Stream" permission mirroring the existing "Can Download"
pattern. Server admins can now disable streaming for specific users, encouraging
local downloads instead. Addresses #2572.
Changes:
- User model: stream permission in mapping, defaults, and getter
- ApiKey model: stream permission in defaults
- Controller: 403 enforcement on playback session creation endpoints
- Frontend: permission toggle in admin UI, play button gated by canStream,
download button shown when streaming disabled, message when neither allowed
- Tests: 11 Mocha tests (model + controller), 1 Cypress test (card UI)
- Localization: English strings for toggle label and fallback message
The getter uses !== false (rather than !!) so existing users without the
stream key in their permissions JSON default to allowed on upgrade.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add strings for PublishedDecade and PublishedDecades
* Add publishedDecades filter options to LibraryFilterSelect
* Add publishedDecades to libraries store
* Add publishedDecades to getFilterData
* Add database method to add published decades to filter data
* Add published decade in BookScanner
* Add 'publishedDecades' to invalidFilters in user.js
* Add publishedDecades filter group to MediaGroupQuery
* Update client/strings/en-us.json
* Auto formatting
---------
Co-authored-by: advplyr <dev@advplyr.com>
Co-authored-by: advplyr <advplyr@protonmail.com>
* Add playback settings string to en-us
* Add playback settings UI for jump forwards and jump backwards
* Remove jump forwards and jump backwards settings
* Remove jump forwards and jump backwards en-us strings
* Update player UI to include player settings button
* Add label view player settings string
* Add PlayerSettingsModal component
Includes a toggle switch for enabling/disabling the chapter track feature.
* Add player settings modal component to MediaPlayerContainer
* Handle useChapterTrack changes in PlayerUI
* Add jump forwards and jump backwards settings to user store
* Add jump forwards and jump backwards label strings
* Add jump forwards and jump backwards settings to PlayerSettingsModal
* Update jump forwards and jump backwards to handle user state values in PlayerHandler
* Update jump backwards icon in PlayerPlaybackControls
* Add playback settings string to en-us
* Add playback settings UI for jump forwards and jump backwards
* Remove jump forwards and jump backwards settings
* Remove jump forwards and jump backwards en-us strings
* Update player UI to include player settings button
* Add label view player settings string
* Add PlayerSettingsModal component
Includes a toggle switch for enabling/disabling the chapter track feature.
* Add player settings modal component to MediaPlayerContainer
* Handle useChapterTrack changes in PlayerUI
* Add jump forwards and jump backwards settings to user store
* Add jump forwards and jump backwards label strings
* Add jump forwards and jump backwards settings to PlayerSettingsModal
* Update jump forwards and jump backwards to handle user state values in PlayerHandler
* Update jump backwards icon in PlayerPlaybackControls
* Add jump amounts to playback controls tooltips
* Fix merge issues and add new Material Symbols to player ui
* Alphabetize strings in en-us.json
* Update dropdown component with SelectInput to support menu overflowing modal
* Update localization for player settings
* Update en-us strings order
---------
Co-authored-by: advplyr <advplyr@protonmail.com>