A complete web conferencing system for virtual classes and more!
This report summarizes scanner evidence for bigbluebutton/bigbluebutton, a TypeScript project with 9,262 GitHub stars. SynthScan examined 579,095 lines of code across 3292 source files, recording 439 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 1.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 380 finding(s).
Are imports declared and package/API names verified? 30 finding(s).
Are wrappers, guards, and repeated structures necessary? 145 finding(s).
Which changes need focused human review? 439 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 439 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ation/playback/presentation/0.9.0/lib/jquery-ui.min.js | 5 | (function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href | CODE |
| CRITICAL | …tion/playback/presentation/0.9.0/lib/foundation.min.js | 18 | n.attr("aria-expanded","false"),i.S(this).hasClass(i.settings.active_class)&&(i.S(this).css(Foundation.rtl?"right":"left | CODE |
| CRITICAL | …tion/playback/presentation/0.9.0/lib/foundation.min.js | 20 | },valid_radio:function(e){for(var i=e.getAttribute("name"),s=this.S(e).closest("[data-"+this.attr_name(!0)+"]").find("[n | CODE |
| CRITICAL | …tation/playback/presentation/0.81/lib/jquery-ui.min.js | 5 | (function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href | CODE |
| CRITICAL | …ents/chat/chat-graphql/chat-message-list/component.tsx | 252 | && window.meetingClientSettings.public.chat.toolbar.includes('pin') | CODE |
| CRITICAL | …e-list/page/chat-message/message-toolbar/component.tsx | 84 | const SHOW_PIN_MESSAGE_TOOL = window.meetingClientSettings.public.chat.toolbar.includes('pin'); | CODE |
| CRITICAL⚡ | …bluebutton-html5/imports/ui/services/features/index.js | 114 | && window.meetingClientSettings.public.chat.toolbar.includes('reply') | CODE |
| CRITICAL⚡ | …bluebutton-html5/imports/ui/services/features/index.js | 121 | && window.meetingClientSettings.public.chat.toolbar.includes('delete') | CODE |
| CRITICAL⚡ | …bluebutton-html5/imports/ui/services/features/index.js | 128 | && window.meetingClientSettings.public.chat.toolbar.includes('edit') | CODE |
| CRITICAL⚡ | …bluebutton-html5/imports/ui/services/features/index.js | 135 | && window.meetingClientSettings.public.chat.toolbar.includes('reactions') | CODE |
| CRITICAL | docs/docs/plugins.md | 1206 | pluginApi.uiCommands.sidekickArea.options.panel.open(); | CODE |
| CRITICAL | docs/docs/plugins.md | 1209 | pluginApi.uiCommands.sidekickArea.options.panel.close(); | CODE |
| CRITICAL | …in/java/org/bigbluebutton/api/ParamsProcessorUtil.java | 1225 | return org.bigbluebutton.api2.util.ClientSettingsValidator.validateOverride(loadClientSettingsCatalog(), overrideJso | CODE |
| CRITICAL | …igbluebutton/api2/meeting/OldMeetingMsgHdlrActor.scala | 166 | olgMsgGW.handle(new org.bigbluebutton.api.messaging.messages.KeepAliveReply(msg.body.system, msg.body.bbbWebTimestam | CODE |
| CRITICAL | …core/record/events/AddShapeWhiteboardRecordEvent.scala | 90 | org.bigbluebutton.common2.util.JsonUtil.toJson(result) | CODE |
| CRITICAL | …utton/core/apps/groupchats/PinChatMessageHelpers.scala | 27 | user <- org.bigbluebutton.core.models.Users2x.findWithIntId(liveMeeting.users2x, userId) | CODE |
| CRITICAL⚡ | …bluebutton/endpoint/redis/LearningDashboardActor.scala | 1053 | learningDashboardDisabled = msg.body.props.meetingProp.disabledFeatures.contains("learningDashboard"), | CODE |
| CRITICAL⚡ | …bluebutton/endpoint/redis/LearningDashboardActor.scala | 1054 | downloadSessionDataEnabled = !msg.body.props.meetingProp.disabledFeatures.contains("learningDashboardDownloadSessi | CODE |
| CRITICAL⚡ | …bluebutton/endpoint/redis/LearningDashboardActor.scala | 1057 | "learning-dashboard-learn-more-link" -> msg.body.props.metadataProp.metadata.get("learning-dashboard-learn-more | CODE |
| CRITICAL⚡ | …bluebutton/endpoint/redis/LearningDashboardActor.scala | 1058 | "learning-dashboard-feedback-link" -> msg.body.props.metadataProp.metadata.get("learning-dashboard-feedback-link | CODE |
| CRITICAL⚡ | …bluebutton/endpoint/redis/LearningDashboardActor.scala | 1065 | if (msg.body.props.meetingProp.disabledFeatures.contains("learningDashboard")) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .gitlab-ci.yml | 21 | # written to a file `packages_to_skip.txt` the root of the repo. This file is | COMMENT |
| LOW | bbb-export-annotations/workers/process.js | 441 | COMMENT | |
| LOW | record-and-playback/deploy.sh | 1 | #!/bin/bash | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 1 | # Configuration for the BigBlueButton "video" recording format. | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 21 | # Whether to allow the preset to be configured via the bbb-recording-video-preset meta parameter. | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 41 | areas: | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 61 | # session. | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 141 | extension: m4v | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 161 | # '-f', 'webm' ] | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 261 | # screen sharing. | COMMENT |
| LOW | record-and-playback/video/scripts/video.yml | 281 | # # '-f', 'webm' ] | COMMENT |
| LOW | record-and-playback/video/scripts/publish/video.rb | 1 | #!/usr/bin/env ruby | COMMENT |
| LOW | record-and-playback/video/scripts/process/video.rb | 1 | #!/usr/bin/env ruby | COMMENT |
| LOW | record-and-playback/core/features/support/env.rb | 1 | # | COMMENT |
| LOW | …k/core/features/step_definitions/process_video_step.rb | 1 | COMMENT | |
| LOW | …k/core/features/step_definitions/process_audio_step.rb | 1 | # | COMMENT |
| LOW | …k/core/features/step_definitions/audio_archive_step.rb | 1 | # | COMMENT |
| LOW | record-and-playback/core/spec/spec_helper.rb | 1 | # | COMMENT |
| LOW | …c/recordandplayback/deskshare_stubbed_archiver_spec.rb | 1 | # | COMMENT |
| LOW | …/spec/recordandplayback/video_stubbed_archiver_spec.rb | 1 | # | COMMENT |
| LOW | …ack/core/spec/recordandplayback/audio_archiver_spec.rb | 1 | # | COMMENT |
| LOW | …ck/core/spec/recordandplayback/events_archiver_spec.rb | 1 | # | COMMENT |
| LOW | …ecordandplayback/presentation_stubbed_archiver_spec.rb | 1 | # | COMMENT |
| LOW | …/spec/recordandplayback/presentation_processor_spec.rb | 1 | # | COMMENT |
| LOW | …nd-playback/core/spec/recordandplayback/events_spec.rb | 1 | # | COMMENT |
| LOW | record-and-playback/core/scripts/rap-enqueue.rb | 1 | #!/usr/bin/env ruby | COMMENT |
| LOW | record-and-playback/core/scripts/rap-process-worker.rb | 1 | #!/usr/bin/ruby | COMMENT |
| LOW | record-and-playback/core/scripts/cleanup.rb | 1 | #!/usr/bin/ruby | COMMENT |
| LOW | record-and-playback/core/scripts/rap-starter.rb | 1 | #!/usr/bin/ruby | COMMENT |
| LOW | record-and-playback/core/scripts/bigbluebutton.yml | 21 | # redis_workers_host: 127.0.0.1 | COMMENT |
| LOW | record-and-playback/core/scripts/bigbluebutton.yml | 41 | # so when webcamsOnlyForModerator=true, only moderators webcams are included in recordings. | COMMENT |
| LOW | record-and-playback/core/scripts/rap-caption-inbox.rb | 1 | #!/usr/bin/ruby | COMMENT |
| LOW | …/scripts/post_events/post_events_analytics_callback.rb | 1 | #!/usr/bin/ruby | COMMENT |
| LOW | record-and-playback/core/scripts/archive/archive.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …/post_publish/post_publish_recording_ready_callback.rb | 1 | #!/usr/bin/ruby | COMMENT |
| LOW | record-and-playback/core/scripts/utils/captions.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/core/scripts/sanity/sanity.rb | 1 | #!/usr/bin/ruby | COMMENT |
| LOW | record-and-playback/core/lib/recordandplayback.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/core/lib/custom_hash.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/core/lib/boot.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | record-and-playback/core/lib/boot.rb | 21 | $LOAD_PATH.unshift(__dir__) unless $LOAD_PATH.include?(__dir__) | COMMENT |
| LOW | …ord-and-playback/core/lib/recordandplayback/workers.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …playback/core/lib/recordandplayback/events_archiver.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | record-and-playback/core/lib/recordandplayback/edl.rb | 1 | # encoding: UTF-8 | COMMENT |
| LOW | …d-and-playback/core/lib/recordandplayback/edl/video.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …d-and-playback/core/lib/recordandplayback/edl/audio.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …playback/core/lib/recordandplayback/edl/media_utils.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …playback/core/lib/recordandplayback/edl/media_utils.rb | 41 | new_entry[:timestamp] = rec_time | COMMENT |
| LOW | …k/core/lib/recordandplayback/edl/video/video_source.rb | 61 | # | COMMENT |
| LOW | …ck/core/lib/recordandplayback/workers/sanity_worker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …k/core/lib/recordandplayback/workers/archive_worker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …k/core/lib/recordandplayback/workers/process_worker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …ck/core/lib/recordandplayback/workers/events_worker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …k/core/lib/recordandplayback/workers/publish_worker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …/core/lib/recordandplayback/workers/captions_worker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …back/core/lib/recordandplayback/workers/base_worker.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | …layback/core/lib/recordandplayback/generators/video.rb | 1 | COMMENT | |
| LOW | …layback/core/lib/recordandplayback/generators/video.rb | 61 | -c:a copy | COMMENT |
| LOW | …layback/core/lib/recordandplayback/generators/video.rb | 121 | { | COMMENT |
| LOW | …layback/core/lib/recordandplayback/generators/audio.rb | 1 | # Set encoding to utf-8 | COMMENT |
| 108 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bbb-export-annotations/lib/utils/slide-background.js | 42 | export function largestEmbeddedRasterWidth(file) { | CODE |
| LOW | bbb-export-annotations/lib/utils/slide-background.js | 145 | export function rasterizeSlideBackgroundFromPdf(pdfPath, page, pngPath, { | CODE |
| LOW | bbb-export-annotations/workers/collector.js | 34 | async function collectAnnotationsFromRedis() { | CODE |
| LOW | bbb-export-annotations/workers/process.js | 346 | async function processPresentationAnnotations() { | CODE |
| LOW | record-and-playback/core/scripts/rap-process-worker.rb | 26 | def process_archived_meetings(recording_dir) | CODE |
| LOW | record-and-playback/core/scripts/rap-starter.rb | 73 | def archive_recorded_meetings(recording_dir, done_file) | CODE |
| LOW | …playback/core/lib/recordandplayback/events_archiver.rb | 55 | def has_breakout_metadata_for(meeting_id) | CODE |
| LOW | …playback/core/lib/recordandplayback/events_archiver.rb | 109 | def delete_breakout_metadata_for(meeting_id) | CODE |
| LOW | …playback/core/lib/recordandplayback/events_archiver.rb | 113 | def delete_breakout_rooms_for(meeting_id) | CODE |
| LOW | …resentation/playback/presentation/0.9.0/lib/writing.js | 139 | function removeSlideChangeAttribute() { | CODE |
| LOW | …resentation/playback/presentation/0.9.0/lib/writing.js | 191 | function handlePresentationAreaContent(time) { | CODE |
| LOW | …resentation/playback/presentation/0.9.0/lib/writing.js | 773 | function setPresentationTextFromJSON(images, presentationText) { | CODE |
| LOW | …resentation/playback/presentation/0.9.0/lib/writing.js | 794 | function setPresentationTextFromTxt(images) { | CODE |
| LOW | …presentation/playback/presentation/0.81/lib/writing.js | 114 | function removeSlideChangeAttribute() { | CODE |
| LOW | …-playback/presentation/scripts/publish/presentation.rb | 247 | def svg_render_shape_triangle(g, slide, shape) | CODE |
| LOW | …-playback/presentation/scripts/publish/presentation.rb | 525 | def convert_cursor_coordinate(cursor_coord, panzoom_offset, panzoom_ratio) | CODE |
| LOW | …-playback/presentation/scripts/publish/presentation.rb | 567 | def clean_arrow_end_or_start_props(props) | CODE |
| LOW | …-playback/presentation/scripts/publish/presentation.rb | 578 | def events_parse_tldraw_shape(shapes, event, current_presentation, current_slide, timestamp) | CODE |
| LOW | …-playback/presentation/scripts/publish/presentation.rb | 1236 | def get_poll_show_correct_answer(event) | CODE |
| LOW | …-playback/presentation/scripts/publish/presentation.rb | 1293 | def process_external_video_events(_events, package_dir) | CODE |
| LOW | …-playback/presentation/scripts/publish/presentation.rb | 1325 | def generate_done_or_fail_file(success) | CODE |
| LOW | …button-tests/playwright/options/audioProcessingMode.ts | 28 | export async function captureGetUserMediaAudioConstraints(page: PlaywrightPage): Promise<void> { | CODE |
| LOW | …button-tests/playwright/options/audioProcessingMode.ts | 41 | export async function getCapturedAudioConstraints( | CODE |
| LOW | …button-tests/playwright/options/audioProcessingMode.ts | 76 | export function audioProcessingModeOverrides( | CODE |
| LOW | bigbluebutton-tests/playwright/options/util.ts | 27 | async function getValueFromSecondaryLocale(currentKey: string): Promise<string> { | CODE |
| LOW⚡ | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 23 | export async function expectedSharedNotesFilename(meetingId: string, extension: string): Promise<string> { | CODE |
| LOW⚡ | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 28 | export async function startSharedNotesBlockNote(testPage: Page) { | CODE |
| LOW⚡ | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 34 | export function getBlockNoteEditorLocator(testPage: Page) { | CODE |
| LOW⚡ | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 38 | export function getBlockNoteReadOnlyLocator(testPage: Page) { | CODE |
| LOW⚡ | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 42 | function checkUnreadNotesIndicator(testPage: Page) { | CODE |
| LOW⚡ | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 51 | export async function hasNoUnreadNotesIndicator(testPage: Page, description: string, timeout = ELEMENT_WAIT_TIME) { | CODE |
| LOW⚡ | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 59 | export async function unreadNotesIndicatorStaysHidden(testPage: Page, description: string, durationMs = 3000) { | CODE |
| LOW | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 78 | export async function startBlockNoteSharedNotes(testPage: Page) { | CODE |
| LOW | …ebutton-tests/playwright/sharednotes/blocknote/util.ts | 89 | export async function enableMarkdownNotesOptions(testPage: Page): Promise<void> { | CODE |
| LOW | bigbluebutton-tests/playwright/core/helpers.ts | 158 | export function startTrackingCreatedMeetings(): void { | CODE |
| LOW | bigbluebutton-tests/playwright/core/helpers.ts | 220 | export function buildClientSettingsOverrideModule(overrides: ClientSettingsOverrides): string { | CODE |
| LOW | bigbluebutton-tests/playwright/core/livekit.ts | 22 | export function getMediaBridgeCreateParam(): string | undefined { | CODE |
| LOW | bigbluebutton-tests/playwright/core/page.ts | 54 | export function collectOverrideMismatches(expected: ClientSettingsOverrides, actual: unknown, path = ''): string[] { | CODE |
| LOW | …bluebutton-tests/playwright/core/setup/global.setup.ts | 19 | async function validateEnvironmentAndAPI(): Promise<void> { | CODE |
| LOW | bigbluebutton-tests/playwright/chat/util.ts | 62 | function sendPublicMessagesInBrowser(messages: string[]): Promise<void> { | CODE |
| LOW | bigbluebutton-tests/playwright/polling/util.ts | 57 | export async function uploadSPresentationForTestingPolls(testPage: Page, fileName: string) { | CODE |
| LOW | bigbluebutton-tests/playwright/whiteboard/util.ts | 76 | export async function viewerDrawsTwoStrokesAndErasesOne(modPage: Page, userPage: Page) { | CODE |
| LOW | …button-tests/playwright/whiteboard/whiteboardResize.ts | 89 | async function waitForPresentationLayout(page: Page): Promise<void> { | CODE |
| LOW | …ebutton-tests/playwright/recording/recordedPlayback.ts | 163 | export async function waitForPublishedRecording( | CODE |
| LOW | bigbluebutton-tests/playwright/user/util.ts | 41 | export function emojiRainSettingsOverride(enabled: boolean): ClientSettingsOverrides { | CODE |
| LOW | bigbluebutton-tests/playwright/user/util.ts | 186 | export async function setPresentationPermission(testPage: Page, option: string) { | CODE |
| LOW | bigbluebutton-tests/playwright/audio/util.ts | 76 | export async function areRemoteAudioElementsPlaying(testPage: Page): Promise<boolean> { | CODE |
| LOW | bigbluebutton-tests/playwright/audio/audioCaptions.ts | 105 | export async function shimSpeechSynthesisVoices(page: PlaywrightPage, langs: string[]): Promise<void> { | CODE |
| LOW | bigbluebutton-tests/playwright/layouts/layouts.ts | 22 | async function getSidebarContentWidthRatio(page: Page): Promise<number> { | CODE |
| LOW | bigbluebutton-tests/playwright/layouts/layouts.ts | 49 | async function assertNavigationRailExpanded(page: Page, expanded: boolean, message: string) { | CODE |
| LOW | bigbluebutton-tests/playwright/layouts/layouts.ts | 57 | async function assertDesktopLayoutActive(page: Page) { | CODE |
| LOW | …playwright/multifunctional-mode/multifunctionalMode.ts | 12 | function checkMultiFunctionalModeEnabled(page: Page) { | CODE |
| LOW | bigbluebutton-tests/playwright/breakout/join.ts | 36 | async function confirmRedirectClosesBreakout(breakoutUserPage: Page) { | CODE |
| LOW | …on-tests/playwright/breakout/clientSettingsOverride.ts | 12 | function getShowScreenshareQuickSwapButton(page: PlaywrightPage): Promise<boolean | undefined> { | CODE |
| LOW | bigbluebutton-tests/playwright/parameters/util.ts | 40 | export function preUploadedPresentationModule(fileName: string): string { | CODE |
| LOW | …tton-tests/playwright/accessibility/nonTextContrast.ts | 28 | export function formatNonTextContrastViolations(violations: NonTextContrastViolation[]): string { | CODE |
| LOW | …tton-tests/playwright/accessibility/nonTextContrast.ts | 51 | export async function findNonTextContrastViolations( | CODE |
| LOW | bigbluebutton-tests/playwright/webcam/cameraCaps.ts | 16 | MediaDevices.prototype.enumerateDevices = async function enumerateWithSecondCamera() { | CODE |
| LOW | bigbluebutton-tests/playwright/webcam/cameraCaps.ts | 22 | MediaDevices.prototype.getUserMedia = function getUserMediaWithSecondCamera(constraints) { | CODE |
| LOW | bigbluebutton-tests/playwright/webcam/util.ts | 70 | export async function checkBackgroundThumbnailColumns(testPage: Page, minColumns: number) { | CODE |
| 56 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | record-and-playback/video/scripts/publish/video.rb | 4 | # This file is part of BigBlueButton. | COMMENT |
| MEDIUM | record-and-playback/video/scripts/publish/video.rb | 142 | # Create the done file | COMMENT |
| MEDIUM | record-and-playback/video/scripts/process/video.rb | 4 | # This file is part of BigBlueButton. | COMMENT |
| MEDIUM | record-and-playback/core/scripts/rap-enqueue.rb | 6 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | record-and-playback/core/scripts/rap-process-worker.rb | 6 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | record-and-playback/core/scripts/rap-starter.rb | 6 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | record-and-playback/core/scripts/rap-caption-inbox.rb | 6 | # This file is part of the BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | record-and-playback/core/lib/boot.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …ord-and-playback/core/lib/recordandplayback/workers.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …d-and-playback/core/lib/recordandplayback/edl/video.rb | 277 | # Create a new file video source from the filename | COMMENT |
| MEDIUM | …d-and-playback/core/lib/recordandplayback/edl/video.rb | 417 | # This function is used to select a layout for a specific cut, based on the media present in the cut and the | COMMENT |
| MEDIUM | …d-and-playback/core/lib/recordandplayback/edl/video.rb | 621 | # Create the xstack filter to composite the video elements | COMMENT |
| MEDIUM | …ck/core/lib/recordandplayback/workers/sanity_worker.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …k/core/lib/recordandplayback/workers/archive_worker.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …k/core/lib/recordandplayback/workers/process_worker.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …ck/core/lib/recordandplayback/workers/events_worker.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …k/core/lib/recordandplayback/workers/publish_worker.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …/core/lib/recordandplayback/workers/captions_worker.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …back/core/lib/recordandplayback/workers/base_worker.rb | 5 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …back/core/lib/recordandplayback/generators/captions.rb | 3 | # This file is part of BigBlueButton open source conferencing system. | COMMENT |
| MEDIUM | …ayback/core/lib/recordandplayback/generators/events.rb | 462 | # Create a video EDL for the deskshare area | COMMENT |
| MEDIUM | …ayback/core/lib/recordandplayback/generators/events.rb | 503 | # Create a new EDL entry with the new deskshare video added | COMMENT |
| MEDIUM | …ayback/core/lib/recordandplayback/generators/events.rb | 514 | # Create a new EDL entry with the deskshare video removed | COMMENT |
| MEDIUM | …ayback/core/lib/recordandplayback/generators/events.rb | 542 | # Create a video EDL for the presentation area | COMMENT |
| MEDIUM | …ayback/core/lib/recordandplayback/generators/events.rb | 627 | # Create a video EDL for layout events | COMMENT |
| MEDIUM | …nd-playback/screenshare/scripts/publish/screenshare.rb | 95 | # Create the done file | COMMENT |
| MEDIUM | …-playback/presentation/scripts/publish/presentation.rb | 873 | # Create the shapes.svg, cursors.xml, and panzooms.xml files used for | COMMENT |
| MEDIUM | bigbluebutton-tests/gns3/gns3-bbb.py | 993 | # Create a GNS3 "cloud" for Internet access. | STRING |
| MEDIUM | bigbluebutton-tests/gns3/gns3-bbb.py | 1043 | # Create the master gateway | STRING |
| MEDIUM | bigbluebutton-tests/gns3/gns3-bbb.py | 1135 | # Create a server | STRING |
| MEDIUM | bigbluebutton-config/bin/apply-lib.sh | 174 | # This function is not called. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 125 | // ── 1. Wait for the whiteboard and slide image to be ready ────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 142 | // ── 2. Record pre-resize state on both pages ─────────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 175 | // ── 3. Shrink the moderator viewport (≈ 40 % height) — trigger only ───────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 187 | // ── 4. Expand back to original size ─────────────────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 194 | // ── 5. Verify moderator camera re-synced after expanding back ───────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 229 | // ── 6. Verify viewer page was NOT affected throughout ───────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 260 | // ── 1. Wait for the whiteboard and slide image to be ready ────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 307 | // ── 3. Screenshot A — write this run's zoomed state as the baseline ────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 325 | // ── 4. Shrink moderator viewport (≈ 40 % height) ────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 336 | // ── 5. Expand back to original size ─────────────────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 341 | // ── 7. Screenshot C — must match Screenshot A (same run) ───────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 353 | // ── 1. Wait for the whiteboard and slide image to be ready ─────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 367 | // ── 2. Record fit-zoom baseline ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 371 | // ── 3. Zoom in via toolbar (2 clicks of +25% each = 150%) ──────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 392 | // ── 4. Record pre-minimize state ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 405 | // ── 5. Minimize then restore presentation ──────────────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 419 | // ── 6. Verify camera zoom is preserved after restore ───────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 433 | // ── 7. Verify toolbar zoom % is preserved after restore ─────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 447 | // ── 1. Wait for the whiteboard and slide image to be ready ────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 463 | // ── 2. Screenshot A — write this run's initial state as the baseline ──────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 498 | // ── 3. Shrink moderator viewport (≈ 40 % height) ────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 509 | // ── 4. Expand back to original size ─────────────────────────────────────── | COMMENT |
| MEDIUM | …button-tests/playwright/whiteboard/whiteboardResize.ts | 514 | // ── 5. Screenshot C — must match the initial baseline (Screenshot A) ─────── | COMMENT |
| MEDIUM | docs/docs/administration/customize.md | 914 | #---------------------------------------------------- | COMMENT |
| MEDIUM | docs/docs/administration/customize.md | 1149 | #---------------------------------------------------- | COMMENT |
| MEDIUM | docs/docs/administration/customize.md | 1222 | #---------------------------------------------------- | COMMENT |
| MEDIUM | docs/docs/administration/customize.md | 1254 | #---------------------------------------------------- | COMMENT |
| MEDIUM | docs/docs/administration/customize.md | 1311 | #---------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | record-and-playback/core/scripts/rap-process-worker.rb | 53 | # Iterate over the list of recording processing scripts to find available | COMMENT |
| LOW | record-and-playback/core/scripts/utils/captions.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/core/lib/recordandplayback.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/core/lib/custom_hash.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | …cordandplayback/edl/video/presentation_video_source.rb | 23 | # Check if the video source is corrupt | COMMENT |
| LOW | …k/core/lib/recordandplayback/edl/video/video_source.rb | 67 | # Check if the video source is corrupt | COMMENT |
| LOW | …k/core/lib/recordandplayback/edl/video/video_source.rb | 196 | # Check if the video source is seekable | COMMENT |
| LOW | …k/core/lib/recordandplayback/edl/video/video_source.rb | 252 | # Check if the video file has the early 1.1 deskshare timestamp bug | COMMENT |
| LOW | …layback/core/lib/recordandplayback/generators/video.rb | 2 | # Set encoding to utf-8 | COMMENT |
| LOW | …layback/core/lib/recordandplayback/generators/audio.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | …/core/lib/recordandplayback/generators/presentation.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | …re/lib/recordandplayback/generators/audio_processor.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | …ayback/core/lib/recordandplayback/generators/events.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | …ayback/core/lib/recordandplayback/generators/events.rb | 920 | # Check if there is any of that emoji to be deleted | COMMENT |
| LOW | …ayback/core/lib/recordandplayback/generators/events.rb | 1335 | # Check if any screenshare files has audio | COMMENT |
| LOW | record-and-playback/notes/scripts/publish/notes.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/notes/scripts/process/notes.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/podcast/scripts/publish/podcast.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | record-and-playback/podcast/scripts/process/podcast.rb | 1 | # Set encoding to utf-8 | COMMENT |
| LOW | …-playback/presentation/scripts/process/presentation.rb | 2 | # Set encoding to utf-8 | COMMENT |
| LOW | bigbluebutton-tests/gns3/gns3-bbb.py | 167 | # Check if our SSL root Certificate Authority key and certificate are available, create them if not | COMMENT |
| LOW | bigbluebutton-config/bin/apply-lib.sh | 102 | # Check if haproxy is running on this server and, if so, open port 3478 on ufw | COMMENT |
| LOW | bigbluebutton-config/bin/apply-lib.sh | 146 | # Check if haproxy is running and open port 3478 | COMMENT |
| LOW | bbb-libreoffice/assets/convert-cool.sh | 17 | # Set this to "-k" to allow it to work in a test environment, ie with a self signed | COMMENT |
| LOW | bbb-graphql-server/deploy.sh | 58 | #Check if Hasura is ready before applying metadata | COMMENT |
| LOW⚡ | scripts/code-review/checkout-to-pr.sh | 5 | # Check if `jq` is available | COMMENT |
| LOW⚡ | scripts/code-review/checkout-to-pr.sh | 12 | # Check if both the PR number is provided | COMMENT |
| LOW⚡ | scripts/code-review/checkout-to-pr.sh | 18 | # Check if the PR number was provided as a number | COMMENT |
| LOW⚡ | scripts/code-review/checkout-to-pr.sh | 26 | # Check if the current directory is a Git repository | COMMENT |
| LOW⚡ | scripts/code-review/checkout-to-pr.sh | 32 | # Check if there are any uncommitted changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | bigbluebutton-tests/playwright/user/lockViewers.ts | 769 | // Step 2: apply hideUserList lock BEFORE the viewer joins so that the | COMMENT |
| LOW⚡ | bigbluebutton-tests/playwright/user/lockViewers.ts | 773 | // Step 3: Viewer1 joins after lock is active → locked=true. | COMMENT |
| LOW⚡ | bigbluebutton-tests/playwright/user/lockViewers.ts | 776 | // Step 4: both pages enable join push alerts. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 793 | // Step 5: Viewer2 joins. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 837 | // Step 2: enable hideUserList before viewers join. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 850 | // Step 5: enable leave push alerts on mod and Viewer1. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 863 | // Step 6: Viewer2 leaves the meeting. | COMMENT |
| LOW | …bigbluebutton/presentation/imp/SvgImageCreatorImp.java | 305 | // Step 1: Rasterize the PDF page to PNG using poppler's splash backend (pdftoppm). | COMMENT |
| LOW | …bigbluebutton/presentation/imp/SvgImageCreatorImp.java | 383 | // Step 3: Add SVG namespace to the destination file | COMMENT |
| LOW | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1202 | // Step 1 : Compute (x1, y1) | COMMENT |
| LOW⚡ | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1223 | // Step 2 : Compute (cx1, cy1) | COMMENT |
| LOW⚡ | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1233 | // Step 3 : Compute (cx, cy) from (cx1, cy1) | COMMENT |
| LOW⚡ | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1241 | // Step 4 : Compute the angleStart (angle1) and the angleExtent (dangle) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | bigbluebutton-tests/playwright/user/lockViewers.ts | 769 | // Step 2: apply hideUserList lock BEFORE the viewer joins so that the | COMMENT |
| LOW⚡ | bigbluebutton-tests/playwright/user/lockViewers.ts | 773 | // Step 3: Viewer1 joins after lock is active → locked=true. | COMMENT |
| LOW⚡ | bigbluebutton-tests/playwright/user/lockViewers.ts | 776 | // Step 4: both pages enable join push alerts. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 793 | // Step 5: Viewer2 joins. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 837 | // Step 2: enable hideUserList before viewers join. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 850 | // Step 5: enable leave push alerts on mod and Viewer1. | COMMENT |
| LOW | bigbluebutton-tests/playwright/user/lockViewers.ts | 863 | // Step 6: Viewer2 leaves the meeting. | COMMENT |
| LOW | …bigbluebutton/presentation/imp/SvgImageCreatorImp.java | 305 | // Step 1: Rasterize the PDF page to PNG using poppler's splash backend (pdftoppm). | COMMENT |
| LOW | …bigbluebutton/presentation/imp/SvgImageCreatorImp.java | 383 | // Step 3: Add SVG namespace to the destination file | COMMENT |
| LOW | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1202 | // Step 1 : Compute (x1, y1) | COMMENT |
| LOW⚡ | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1223 | // Step 2 : Compute (cx1, cy1) | COMMENT |
| LOW⚡ | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1233 | // Step 3 : Compute (cx, cy) from (cx1, cy1) | COMMENT |
| LOW⚡ | …a/org/bigbluebutton/core/util/jhotdraw/BezierPath.java | 1241 | // Step 4 : Compute the angleStart (angle1) and the angleExtent (dangle) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …yback/slides/playback/slides/lib/popcorn-custom.min.js | 1 | /*! This code was generated automatically using the Popcorn Dynamic Build Tool | COMMENT |
| HIGH | bigbluebutton-html5/imports/utils/regex-weburl.js | 42 | // - protocols have been restricted to ftp, http and https only as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/docs/greenlight/v3/external-authentication.md | 104 | - `<YOUR_SECRET>` is a placeholder for your OpenID client secret that you stored during the first few steps. | CODE |
| HIGH | docs/docs/greenlight/v3/external-authentication.md | 114 | OPENID_CONNECT_CLIENT_SECRET=<YOUR_SECRET> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bbb-export-annotations/workers/collector.js | 72 | // If there's a PDF file, we leverage the existing converted SVG slides | COMMENT |
| MEDIUM | bigbluebutton-html5/server/main.js | 5 | // Setting the global._ to utilize the npm lodash package is an interim fix | COMMENT |
| MEDIUM | docs/package-lock.json | 16683 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ebutton-tests/playwright/chat/privateChatInput.spec.ts | 77 | await expect(input).toHaveAttribute('placeholder', `Message Private Chat with ${LONG_PARTICIPANT_NAME}`); | CODE |
| LOW | …tton-tests/playwright/accessibility/nonTextContrast.ts | 229 | element.getAttribute('placeholder') || | CODE |
| LOW | docs/docs/development/api.md | 698 | "name": "John Doe", | CODE |
| LOW | docs/docs/greenlight/v3/install.md | 67 | user = User.find_by!(email: 'user@example.com') | CODE |
| LOW | …rg/bigbluebutton/api/model/validator/UrlValidator.java | 22 | newUrl = newUrl.replace("%%USERNAME%%", "John Doe"); | CODE |
| LOW | …a/org/bigbluebutton/api/service/ValidationService.java | 102 | newUrl = newUrl.replace("%%USERNAME%%", "John Doe"); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bigbluebutton-tests/gns3/gns3-bbb.py | 637 | except subprocess.CalledProcessError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bbb-libreoffice/assets/convert-cool.sh | 12 | # Or you can use an existing setup you have. | COMMENT |
| LOW | bigbluebutton-html5/private/config/settings.yml | 1204 | # If the following mime-types list is changed, please, make sure to also change: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bigbluebutton-html5/public/wasm/BBBA-nosimd-mapi.js | 9 | var Module=typeof mapi_bbba!="undefined"?mapi_bbba:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Pro | CODE |
| LOW | bigbluebutton-html5/public/wasm/BBBA-mapi.js | 9 | var Module=typeof mapi_bbba!="undefined"?mapi_bbba:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Pro | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bigbluebutton-tests/gns3/gns3-bbb.py | 73 | CODE |