feat: instance-level streaming limits with admin settings panel
Add a server-side instance_settings table (single-row, CHECK(id=1)) that stores admin-configurable streaming bounds: bitrate min/max/step, allowed resolutions, and allowed framerates. Backend: - New instance_settings schema + migrations (is_admin on users, default settings row, first-registered-user promoted to admin) - GET/PATCH /api/settings/streaming endpoints with admin-only writes and full input validation including cross-field checks Frontend: - settingsStore fetches limits on WebSocket ready, exposes isAdmin flag - ScreenShareSettingsPopover reads bounds from store instead of hardcoded constants, auto-clamps stale localStorage values - buildScreenShareOptions() clamps bitrate to server limits at build time as enforcement backstop - ServerSettings modal gains a "Streaming" tab (admin-only) with bitrate range sliders, resolution/framerate toggles, and save/reset
This commit is contained in:
@@ -7,6 +7,7 @@ export interface User {
|
||||
avatar: string | null;
|
||||
status: UserStatus;
|
||||
customStatus: string | null;
|
||||
isAdmin: boolean;
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
@@ -366,3 +367,15 @@ export interface SendFriendRequest {
|
||||
export interface UpdateFriendRequest {
|
||||
status: 'accepted' | 'declined';
|
||||
}
|
||||
|
||||
// ─── Instance Settings Types ────────────────────────────────────────────────
|
||||
|
||||
export interface InstanceStreamingLimits {
|
||||
maxBitrateKbps: number;
|
||||
minBitrateKbps: number;
|
||||
bitrateStepKbps: number;
|
||||
allowedResolutions: number[];
|
||||
allowedFramerates: number[];
|
||||
maxResolution: number;
|
||||
maxFramerate: number;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user