* Prevent shell injection
Even if this endpoint can only be used by admins, it's safer this way
* Move to vite 8
* Fix lint
* Add devtools support for vite
* Setting plugin to default value
* Issue 6660 || Setting plugin to default value
* Fix lint
---------
Co-authored-by: Chocobozzz <me@florianbigard.com>
* add filter:api.user.signup.requires-approval.result
closes#6691
* update test
* signup: dont mark /registrations/request as deprecated
* fix broken tests
* changes after review
* Add offensive test for video filename check
* PR fixes
---------
Co-authored-by: Chocobozzz <me@florianbigard.com>
* Add configurable default for live replay save option
Allow admins to configure the default state of the 'automatically
publish a replay when your live ends' checkbox via a new
live.save_replay_by_default setting (defaults to false).
Fixes#6304
* refactor(config): move live replay default to defaults section
Relocate `live.save_replay_by_default` to `defaults.live.save_replay`
to better align with the configuration convention where default UI
states are grouped under the `defaults` key.
This change updates:
- Server configuration loading and exposure
- TypeScript models (ServerConfig, CustomConfig)
- Admin configuration interface
- Live creation form default value handling
Refs: #6304
* test(config): update tests for live replay default refactor
Update configuration tests to verify defaults.live.saveReplay instead of the old live.saveReplayByDefault key.
Also update config/test.yaml to match the new configuration structure.
* fix(config): update video imports test and config validator
* fixed tests
* Fix merge
* Fix default save replay in server
---------
Co-authored-by: Chocobozzz <me@florianbigard.com>
* Add pop-out player button
* Use native PiP and hide popout fallback
* Revert Live DVR changes
* Add Live DVR with 2h window
* Add Live DVR flag in video watch player options
* Fix Live DVR seekbar and HLS options
* Show PiP button on medium player sizes
* Force PiP button visible in embed
* Disable context menu in embeds
* Match PiP icon size to other controls
* Center popout icon mask
* Center PiP control
* Add context menu flag to embed customizations
* Revert "Center PiP control"
This reverts commit aede705f3f.
* Revert "Center popout icon mask"
This reverts commit 0770471caa.
* Revert "Match PiP icon size to other controls"
This reverts commit cef0b49a02.
* Revert "Force PiP button visible in embed"
This reverts commit 1379d7d0c9.
* Revert "Show PiP button on medium player sizes"
This reverts commit a183536ca7.
* Revert object storage path-style config
* Add configurable per-live DVR window
* Remove force_path_style config dependency
* Fix DVR window validator typing
* Include DVR seconds in live form patch
* Fix logout token revocation race
* Stabilize video import and transcription tests
* Increase video transcription replacement test timeouts
* Revert "Remove force_path_style config dependency"
This reverts commit cac22d193f.
* Revert "Add pop-out player button"
This reverts commit 28ba5f5bb1.
* test(live): add DVR validation coverage
* config: define object_storage.force_path_style default
* style(lint): fix max-len in live DVR files
* style(client): fix lint in live DVR types
* feat(live): switch DVR window to milliseconds and simplify player toggle
* Live DVR adaptations
---------
Co-authored-by: DJBlu <djblu2003.dk@gmail.com>
Co-authored-by: root <root@ubuntu.home.lan>
Co-authored-by: root <root@peertube.home.lan>
Co-authored-by: Chocobozzz <me@florianbigard.com>
When PeerTube runs with a supported Node.js (e.g. v22 via nvm) but an
older unsupported version exists in PATH (e.g. /usr/bin/node v18),
yt-dlp would find the wrong binary and fail JS challenge solving.
Pass `node:<full_path>` instead of just `node` so yt-dlp always uses
the same Node.js binary that PeerTube itself is running on.
Adds unit tests for wrapWithJSRuntimeOptions covering both yt-dlp and
youtube-dl configurations.