update ConfigOverwrite to match latest Jitsi

This commit is contained in:
Elijah Duffy
2026-02-27 13:23:29 -08:00
parent c912ec8387
commit 7f60048a9d

View File

@@ -438,28 +438,521 @@ export interface JitsiMeetExternalAPIOptions {
}
interface ConfigOverwrite {
// Audio settings
startWithAudioMuted?: boolean;
startWithVideoMuted?: boolean;
disableDeepLinking?: boolean;
prejoinPageEnabled?: boolean;
startAudioMuted?: number;
startAudioOnly?: boolean;
startSilent?: boolean;
enableNoisyMicDetection?: boolean;
enableOpusRed?: boolean;
audioQuality?: {
stereo?: boolean;
opusMaxAverageBitrate?: number | null;
enableOpusDtx?: boolean;
};
noiseSuppression?: {
krisp?: {
enabled?: boolean;
logProcessStats?: boolean;
debugLogs?: boolean;
useBVC?: boolean;
bufferOverflowMS?: number;
};
};
disableAEC?: boolean;
disableAGC?: boolean;
disableAP?: boolean;
disableNS?: boolean;
// Video settings
startWithVideoMuted?: boolean;
startVideoMuted?: number;
maxFullResolutionParticipants?: number;
disableSimulcast?: boolean;
disableResponsiveTiles?: boolean;
constraints?: {
video?: {
height?: {
ideal?: number;
max?: number;
min?: number;
};
};
};
desktopSharingFrameRate?: {
min?: number;
max?: number;
};
screenShareSettings?: {
desktopPreferCurrentTab?: boolean;
desktopSystemAudio?: 'include' | 'exclude';
desktopSurfaceSwitching?: 'include' | 'exclude';
desktopDisplaySurface?: string;
desktopSelfBrowserSurface?: 'include' | 'exclude';
};
videoQuality?: {
codecPreferenceOrder?: ('AV1' | 'VP9' | 'VP8' | 'H264')[];
mobileCodecPreferenceOrder?: ('AV1' | 'VP9' | 'VP8' | 'H264')[];
screenshareCodec?: string;
mobileScreenshareCodec?: string;
enableAdaptiveMode?: boolean;
minHeightForQualityLvl?: Record<number, 'low' | 'standard' | 'high'>;
};
// Prejoin configuration (replaces prejoinPageEnabled)
prejoinConfig?: {
enabled?: boolean;
hideDisplayName?: boolean;
hideExtraJoinButtons?: ('no-audio' | 'by-phone')[];
preCallTestEnabled?: boolean;
preCallTestICEUrl?: string;
showHangUp?: boolean;
};
/** @deprecated Use prejoinConfig.enabled instead */
prejoinPageEnabled?: boolean;
// Lobby configuration
lobby?: {
autoKnock?: boolean;
enableChat?: boolean;
showHangUp?: boolean;
};
/** @deprecated Use lobby.autoKnock instead */
autoKnockLobby?: boolean;
/** @deprecated Use lobby.enableChat instead */
enableLobbyChat?: boolean;
// Security UI configuration
securityUi?: {
hideLobbyButton?: boolean;
disableLobbyPassword?: boolean;
};
/** @deprecated Use securityUi.hideLobbyButton instead */
hideLobbyButton?: boolean;
// Deep linking configuration
deeplinking?: {
disabled?: boolean;
hideLogo?: boolean;
desktop?: {
appName?: string;
appScheme?: string;
download?: {
linux?: string;
macos?: string;
windows?: string;
};
enabled?: boolean;
};
ios?: {
appName?: string;
appScheme?: string;
downloadLink?: string;
};
android?: {
appName?: string;
appScheme?: string;
downloadLink?: string;
appPackage?: string;
fDroidUrl?: string;
};
};
/** @deprecated Use deeplinking.disabled instead */
disableDeepLinking?: boolean;
// Welcome page configuration
welcomePage?: {
disabled?: boolean;
customUrl?: string;
};
// Recording configuration
recordings?: {
recordAudioAndVideo?: boolean;
suggestRecording?: boolean;
showPrejoinWarning?: boolean;
showRecordingLink?: boolean;
requireConsent?: boolean;
skipConsentInMeeting?: boolean;
consentLearnMoreLink?: string;
};
recordingService?: {
enabled?: boolean;
sharingEnabled?: boolean;
hideStorageWarning?: boolean;
};
localRecording?: {
disable?: boolean;
notifyAllParticipants?: boolean;
disableSelfRecording?: boolean;
};
// Live streaming configuration
liveStreaming?: {
enabled?: boolean;
termsLink?: string;
dataPrivacyLink?: string;
validatorRegExpString?: string;
helpLink?: string;
};
// Transcription configuration
transcription?: {
enabled?: boolean;
useAppLanguage?: boolean;
preferredLanguage?: string;
customLanguages?: Record<string, string>;
autoTranscribeOnRecord?: boolean;
autoCaptionOnTranscribe?: boolean;
disableClosedCaptions?: boolean;
};
// Toolbar configuration
toolbarButtons?: ToolbarButton[];
mainToolbarButtons?: ToolbarButton[][];
reducedUImainToolbarButtons?: ToolbarButton[];
reducedUIEnabled?: boolean;
buttonsWithNotifyClick?: (ToolbarButton | ButtonWithNotifyClick)[];
participantMenuButtonsWithNotifyClick?: (string | ButtonWithNotifyClick)[];
hiddenPremeetingButtons?: (
| 'microphone'
| 'camera'
| 'select-background'
| 'invite'
| 'settings'
)[];
customToolbarButtons?: Array<{
icon: string;
id: string;
text: string;
backgroundColor?: string;
}>;
customParticipantMenuButtons?: Array<{ icon: string; id: string; text: string }>;
toolbar?: {
initialTimeout?: number;
timeout?: number;
alwaysVisible?: boolean;
autoHideWhileChatIsOpen?: boolean;
};
// UI settings
enableClosePage?: boolean;
disableInviteFunctions?: boolean;
disableModeratorIndicator?: boolean;
enableLobbyChat?: boolean;
hideLobbyButton?: boolean;
enableInsecureRoomNameWarning?: boolean;
toolbarButtons?: ToolbarButton[];
buttonsWithNotifyClick?: (ToolbarButton | ButtonWithNotifyClick)[];
mouseMoveCallbackInterval?: number;
faceLandmarks?: {
faceCenteringThreshold?: number;
disableReactions?: boolean;
disableReactionsModeration?: boolean;
disableReactionsInChat?: boolean;
disablePolls?: boolean;
disableChat?: boolean;
disableSelfDemote?: boolean;
disableSelfView?: boolean;
disableSelfViewSettings?: boolean;
showChatPermissionsModeratorSetting?: boolean;
disableShortcuts?: boolean;
disableInitialGUM?: boolean;
disable1On1Mode?: boolean | null;
defaultLocalDisplayName?: string;
defaultRemoteDisplayName?: string;
hideDisplayName?: boolean;
hideDominantSpeakerBadge?: boolean;
defaultLanguage?: string;
disableProfile?: boolean;
hideEmailInSettings?: boolean;
requireDisplayName?: boolean;
readOnlyName?: boolean;
enableWebHIDFeature?: boolean;
doNotStoreRoom?: boolean;
disableLocalVideoFlip?: boolean;
doNotFlipLocalVideo?: boolean;
disableVirtualBackground?: boolean;
disableAddingBackgroundImages?: boolean;
backgroundAlpha?: number;
disableTileView?: boolean;
disableTileEnlargement?: boolean;
hideConferenceSubject?: boolean;
hideConferenceTimer?: boolean;
hideRecordingLabel?: boolean;
hideParticipantsStats?: boolean;
subject?: string;
localSubject?: string;
disableChatSmileys?: boolean;
disableFilmstripAutohiding?: boolean;
disableCameraTintForeground?: boolean;
// Filmstrip configuration
filmstrip?: {
disabled?: boolean;
disableResizable?: boolean;
disableStageFilmstrip?: boolean;
stageFilmstripParticipants?: number;
disableTopPanel?: boolean;
minParticipantCountForTopPanel?: number;
initialWidth?: number;
alwaysShowResizeBar?: boolean;
};
// Tile view configuration
tileView?: {
disabled?: boolean;
numberOfVisibleTiles?: number;
};
// Participants pane configuration
participantsPane?: {
enabled?: boolean;
hideModeratorSettingsTab?: boolean;
hideMoreActionsButton?: boolean;
hideMuteAllButton?: boolean;
};
// Breakout rooms configuration
breakoutRooms?: {
hideAddRoomButton?: boolean;
hideAutoAssignButton?: boolean;
hideJoinRoomButton?: boolean;
};
// Raised hands configuration
raisedHands?: {
disableLowerHandByModerator?: boolean;
disableLowerHandNotification?: boolean;
disableNextSpeakerNotification?: boolean;
disableRemoveRaisedHandOnFocus?: boolean;
};
disableRemoveRaisedHandOnFocus?: boolean;
// Speaker stats configuration
speakerStats?: {
disabled?: boolean;
disableSearch?: boolean;
order?: ('role' | 'name' | 'hasLeft')[];
};
// Connection indicators configuration
connectionIndicators?: {
autoHide?: boolean;
autoHideTimeout?: number;
disabled?: boolean;
disableDetails?: boolean;
inactiveDisabled?: boolean;
};
// Remote video menu configuration
remoteVideoMenu?: {
disabled?: boolean;
disableDemote?: boolean;
disableKick?: boolean;
disableGrantModerator?: boolean;
disablePrivateChat?: 'all' | 'allow-moderator-chat' | 'disable-visitor-chat';
};
disableRemoteMute?: boolean;
// Face landmarks configuration
faceLandmarks?: {
enableFaceCentering?: boolean;
enableFaceExpressionsDetection?: boolean;
enableDisplayFaceExpressions?: boolean;
enableRTCStats?: boolean;
faceCenteringThreshold?: number;
captureInterval?: number;
};
// Notification settings
notificationTimeouts?: {
short?: number;
medium?: number;
long?: number;
extraLong?: number;
sticky?: number;
};
notifications?: string[];
disabledNotifications?: string[];
// Conference info configuration
conferenceInfo?: {
alwaysVisible?: string[];
autoHide?: string[];
};
// Giphy configuration
giphy?: {
enabled?: boolean;
sdkKey?: string;
displayMode?: 'tile' | 'chat' | 'all';
tileTime?: number;
rating?: 'g' | 'pg' | 'pg-13' | 'r';
};
// Whiteboard configuration
whiteboard?: {
enabled?: boolean;
collabServerBaseUrl?: string;
userLimit?: number;
limitUrl?: string;
};
// E2EE configuration
e2ee?: {
labels?: {
description?: string;
label?: string;
tooltip?: string;
warning?: string;
};
externallyManagedKey?: boolean;
};
// Visitors configuration
visitors?: {
enableMediaOnPromote?: {
audio?: boolean;
video?: boolean;
};
hideVisitorCountForVisitors?: boolean;
showJoinMeetingDialog?: boolean;
};
// P2P configuration
p2p?: {
enabled?: boolean;
iceTransportPolicy?: 'all' | 'relay';
codecPreferenceOrder?: ('AV1' | 'VP9' | 'VP8' | 'H264')[];
mobileCodecPreferenceOrder?: ('AV1' | 'VP9' | 'VP8' | 'H264')[];
screenshareCodec?: string;
mobileScreenshareCodec?: string;
backToP2PDelay?: number;
stunServers?: Array<{ urls: string }>;
};
// Testing/experimental features
testing?: {
assumeBandwidth?: boolean;
enableAV1ForFF?: boolean;
enableCodecSelectionAPI?: boolean;
p2pTestMode?: boolean;
testMode?: boolean;
noAutoPlayVideo?: boolean;
skipInterimTranscriptions?: boolean;
dumpTranscript?: boolean;
debugAudioLevels?: boolean;
failICE?: boolean;
showSpotConsentDialog?: boolean;
};
// Analytics configuration
analytics?: {
disabled?: boolean;
rtcstatsEnabled?: boolean;
rtcstatsStoreLogs?: boolean;
rtcstatsEndpoint?: string;
rtcstatsPollInterval?: number;
rtcstatsSendSdp?: boolean;
watchRTCEnabled?: boolean;
};
// Gravatar configuration
gravatar?: {
baseUrl?: string;
disabled?: boolean;
};
// Legal URLs
legalUrls?: {
helpCentre?: string;
privacy?: string;
terms?: string;
};
// Other settings
apiLogLevels?: LogLevel[];
mouseMoveCallbackInterval?: number;
channelLastN?: number;
startLastN?: number;
useHostPageLocalStorage?: boolean;
disableRtx?: boolean;
enableTcc?: boolean;
enableRemb?: boolean;
enableForcedReload?: boolean;
useTurnUdp?: boolean;
enableEncodedTransformSupport?: boolean;
disableThirdPartyRequests?: boolean;
enableCalendarIntegration?: boolean;
notifyOnConferenceDestruction?: boolean;
feedbackPercentage?: number;
roomPasswordNumberOfDigits?: number | false;
noticeMessage?: string;
enableTalkWhileMuted?: boolean;
forceTurnRelay?: boolean;
hideLoginButton?: boolean;
disableWebrtcStats?: boolean;
disableShowMoreStats?: boolean;
etherpad_base?: string;
openSharedDocumentOnJoin?: boolean;
screenshotCapture?: {
enabled?: boolean;
mode?: 'recording' | 'always';
};
webrtcIceUdpDisable?: boolean;
webrtcIceTcpDisable?: boolean;
disableBeforeUnloadHandlers?: boolean;
// Logging configuration
logging?: {
defaultLogLevel?: 'trace' | 'debug' | 'info' | 'log' | 'warn' | 'error';
disableLogCollector?: boolean;
loggers?: Record<string, string>;
};
// File sharing configuration
fileSharing?: {
apiUrl?: string;
enabled?: boolean;
maxFileSize?: number;
};
// Dropbox integration
dropbox?: {
appKey?: string;
redirectURI?: string;
};
// Dynamic branding
dynamicBrandingUrl?: string;
// Shared video allowed domains
sharedVideoAllowedURLDomains?: string[];
// CORS avatar URLs
corsAvatarURLs?: string[];
// Recording limit
recordingLimit?: {
limit?: number;
appName?: string;
appURL?: string;
};
// Chrome extension banner
chromeExtensionBanner?: {
url?: string;
edgeUrl?: string;
chromeExtensionsInfo?: Array<{
id: string;
path: string;
}>;
};
// Allow any additional config options
[key: string]: unknown;
}
/**
* @deprecated Most interfaceConfig options are being migrated to config.js.
* Use configOverwrite instead where possible.
*/
interface InterfaceConfigOverwrite {
/** @deprecated Use config.disableModeratorIndicator instead */
DISABLE_DOMINANT_SPEAKER_INDICATOR?: boolean;
TILE_VIEW_MAX_COLUMNS?: number;
SHOW_JITSI_WATERMARK?: boolean;
@@ -467,6 +960,7 @@ interface InterfaceConfigOverwrite {
SHOW_BRAND_WATERMARK?: boolean;
SHOW_POWERED_BY?: boolean;
SHOW_PROMOTIONAL_CLOSE_PAGE?: boolean;
/** @deprecated Use config.toolbarButtons instead */
TOOLBAR_BUTTONS?: ToolbarButton[];
SETTINGS_SECTIONS?: SettingsSection[];
VIDEO_LAYOUT_FIT?: 'both' | 'width' | 'height';
@@ -474,8 +968,44 @@ interface InterfaceConfigOverwrite {
FILM_STRIP_MAX_HEIGHT?: number;
MOBILE_APP_PROMO?: boolean;
HIDE_INVITE_MORE_HEADER?: boolean;
/** @deprecated Use config.disabledSounds instead */
DISABLE_JOIN_LEAVE_NOTIFICATIONS?: boolean;
DISABLE_VIDEO_BACKGROUND?: boolean;
DEFAULT_BACKGROUND?: string;
DEFAULT_WELCOME_PAGE_LOGO_URL?: string;
DEFAULT_LOGO_URL?: string;
JITSI_WATERMARK_LINK?: string;
BRAND_WATERMARK_LINK?: string;
APP_NAME?: string;
NATIVE_APP_NAME?: string;
PROVIDER_NAME?: string;
LANG_DETECTION?: boolean;
ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT?: number;
MAXIMUM_ZOOMING_COEFFICIENT?: number;
SUPPORT_URL?: string;
CONNECTION_INDICATOR_AUTO_HIDE_ENABLED?: boolean;
CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT?: number;
CONNECTION_INDICATOR_DISABLED?: boolean;
AUTO_PIN_LATEST_SCREEN_SHARE?: string;
DISABLE_FOCUS_INDICATOR?: boolean;
DISABLE_PRESENCE_STATUS?: boolean;
DISABLE_TRANSCRIPTION_SUBTITLES?: boolean;
DISABLE_RINGING?: boolean;
AUDIO_LEVEL_PRIMARY_COLOR?: string;
AUDIO_LEVEL_SECONDARY_COLOR?: string;
FILMSTRIP_MAX_HEIGHT?: number;
GENERATE_ROOMNAMES_ON_WELCOME_PAGE?: boolean;
HIDE_DEEP_LINKING_LOGO?: boolean;
INITIAL_TOOLBAR_TIMEOUT?: number;
TOOLBAR_TIMEOUT?: number;
TOOLBAR_ALWAYS_VISIBLE?: boolean;
LOCAL_THUMBNAIL_RATIO?: number;
REMOTE_THUMBNAIL_RATIO?: number;
LIVE_STREAMING_HELP_LINK?: string;
POLICY_LOGO?: string;
RECENT_LIST_ENABLED?: boolean;
SHOW_CHROME_EXTENSION_BANNER?: boolean;
VIDEO_QUALITY_LABEL_DISABLED?: boolean;
[key: string]: unknown;
}
@@ -1278,21 +1808,26 @@ type ToolbarButton =
| 'dock-iframe'
| 'download'
| 'embedmeeting'
| 'end-meeting'
| 'etherpad'
| 'feedback'
| 'filmstrip'
| 'fullscreen'
| 'hangup'
| 'hangup-menu'
| 'help'
| 'highlight'
| 'invite'
| 'linktosalesforce'
| 'livestreaming'
| 'microphone'
| 'mute-everyone'
| 'mute-video-everyone'
| 'noisesuppression'
| 'participants-pane'
| 'profile'
| 'raisehand'
| 'reactions'
| 'recording'
| 'security'
| 'select-background'