Make video a per-server toggle instead of an env-wide setting
VIDEO_ENABLED is now permission rather than behaviour: it decides whether the feature exists at all, while turning it on for a server is a toggle in the panel or !video in chat, off by default. Video costs real CPU for every playing channel, so that should be a deliberate choice rather than something a config flag switches on everywhere. With the env flag off the panel renders no toggle at all and !video says so, and the switch applies from the next track — swapping tracks mid-play would cut the current one. The loop button no longer reads "выкл" either: it sat next to the video button showing the same word, so the two states were indistinguishable. Both now name what they do and rely on highlighting for state. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e06c42f60c
commit
a9b680c418
@@ -186,6 +186,7 @@ export async function startApiServer({ manager, context }: ApiServerOptions) {
|
||||
features: {
|
||||
localLibrary: Boolean(config.LOCAL_MEDIA_DIR),
|
||||
requireListener: config.REQUIRE_LISTENER,
|
||||
video: config.VIDEO_ENABLED,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -265,6 +266,8 @@ export async function startApiServer({ manager, context }: ApiServerOptions) {
|
||||
leave: (serverId, userId) => manager.leave(serverId, userId),
|
||||
volume: (serverId, userId, body) =>
|
||||
manager.setVolume(serverId, userId, z.object({ volume: z.number().min(0).max(200) }).parse(body).volume),
|
||||
video: (serverId, userId, body) =>
|
||||
manager.setVideo(serverId, userId, z.object({ enabled: z.boolean() }).parse(body).enabled),
|
||||
loop: (serverId, userId, body) =>
|
||||
manager.setLoop(serverId, userId, z.object({ mode: z.enum(["off", "track", "queue"]) }).parse(body).mode),
|
||||
seek: (serverId, userId, body) =>
|
||||
|
||||
Reference in New Issue
Block a user