Skip to content

chore: Merge 0.0.x into 0.1.x - #126

Merged
ramonlsouza merged 171 commits into
bigbluebutton:v0.1.xfrom
GuiLeme:merge-0.0.x-into-0.1.x
Aug 3, 2026
Merged

chore: Merge 0.0.x into 0.1.x#126
ramonlsouza merged 171 commits into
bigbluebutton:v0.1.xfrom
GuiLeme:merge-0.0.x-into-0.1.x

Conversation

@GuiLeme

@GuiLeme GuiLeme commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Merge v0.0.x into v0.1.x

Periodic sync of the 3.x line into the 4.0 line, from upstream/v0.0.x @ 49718df (v0.0.10).

What comes in

Plugin settings (ping sound, notification, time window, prevent-close countdown, UI scale), the pickedUserSeenEntry data channel, the rebuilt presenter view, SDK-based locale loading, unit + Playwright tests, the new CI workflows, and the rename to BbbPluginPickRandomUser.

SDK 0.0.1000.1.22; requiredSdkVersion ~0.0.92~0.1.9.

Main adaptation

The presenter view moves out of the modal and into the sidekick panel. The 0.1.x SDK has no setActionButtonDropdownItems — BigBlueButton 4.0 removed the actions-button dropdown — so v0.0.x's entry point doesn't exist here. The presenter view now renders inside the GenericContentSidekickArea the 4.0 branch already used, reachable from the apps gallery, and the modal keeps only the picked-user view. Everything else from v0.0.x is taken verbatim so future merges stay clean.

v0.1.x behaviour preserved: bot auto-close and bot filtering, and the modal rendering into the core's #modals-container.

Behaviour changes worth a review

  • The panel is presenter-only. v0.1.x showed a read-only panel to any moderator; v0.0.x's presenter view assumes presenter, so the apps-gallery entry is registered only while you are the presenter.
  • "Back" closes the modal instead of returning to an in-modal presenter view — the panel is already behind it.

Bug fixed during the merge

v0.0.x's inline useGetInternationalization rebuilds intl on every render, and it was a dependency of the effect registering the sidekick area — which looped (Maximum update depth exceeded) and blanked the panel. intl is now memoized and the effect depends only on stable values. Covered by a new unit test.

Tests

The e2e suite drove everything through the actions dropdown; ported to the 4.0 flow (apps gallery → panel), with the dropdown-injection test removed. 16/16 pass against a 4.0 server.

Known: 2 unit tests in use-get-all-settings.test.ts fail — they don't expect modalUiScale. Inherited from upstream/v0.0.x, where it fails identically; best fixed there.

GuiLeme and others added 30 commits March 12, 2025 16:08
feat: Add ping sound and notification for whenever the user is randomly picked
feat: Add internationalization to pick-random-user
…mponents

fix: picked user list grows indefinitely and added styled-components
fix: Show avatar picture when the user is selected by the plugin
chore: update plugin-sdk to version v0.0.79
imdt-claudiop and others added 22 commits June 11, 2026 16:54
Add a GitHub Actions workflow that runs `npm run test:unit` on every pull_request. Unlike the E2E suite it needs no running BigBlueButton server, giving fast per-PR feedback. Mirrors the existing TS lint/compile workflows (node 20.x, merge-branches step).

Co-authored-by: Guilherme Leme <leme.guilherme.p@gmail.com>
test: add Vitest unit-test foundation and testability refactors
…or the release page as an asset and publish it to the digital ocean spaces, if set.
…tation

test: Implemented unit tests and added them in CI for the plugin
… loading state don't appear every time the presenter picks another user.
ref: Increased overall font-size and padding of plugin's modal
fix: "0 users available for selection" when there is a valid selection
Brings the v0.0.x (BigBlueButton 3.x) work — plugin settings, the
pickedUserSeenEntry data channel, the rebuilt presenter view, SDK-based
locale loading, unit and Playwright tests, and the CI workflows — onto
the v0.1.x (BigBlueButton 4.0) branch.

The 0.1.x SDK has no actions-button dropdown, so the presenter view
moves out of the modal and into the plugin's sidekick area, registered
via GenericContentSidekickArea. The modal keeps only the picked-user
view, together with the v0.1.x bot auto-close behaviour.

SDK: 0.0.100 -> 0.1.22; requiredSdkVersion ~0.0.92 -> ~0.1.9.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Periodic sync of the v0.0.x (BBB 3.x) line into v0.1.x (BBB 4.0), updating the plugin to the newer SDK and adapting the presenter experience to BBB 4.0’s apps-gallery → sidekick-panel flow while preserving existing picking behavior and modal rendering.

Changes:

  • Renames the plugin bundle/library and updates manifest.json (SDK requirement, locales base URL, new data channels).
  • Moves the presenter UI into a GenericContentSidekickArea sidekick panel (presenter-only) and keeps the modal for picked-user display only.
  • Adds/ports unit tests (Vitest), e2e tests (Playwright), plus scripts and CI workflows for testing and releases.

Reviewed changes

Copilot reviewed 95 out of 98 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
webpack.config.js Renames bundle/library; dev-server CORS headers + WS URL; copies locales into dist.
vitest.config.ts Adds Vitest config for unit tests + coverage.
tsconfig.json Adjusts TS compiler options and include set.
tests/unit/use-previous-value.test.ts Adds unit tests for usePreviousValue.
tests/unit/use-prevent-close-countdown.test.ts Adds unit tests for modal close-prevention countdown hook.
tests/unit/use-get-possible-users-to-be-picked.test.ts Adds unit tests for “possible users” hook behavior under loading/reconnect.
tests/unit/use-get-current-picked-user.test.ts Adds unit tests for current picked-user derivation.
tests/unit/use-get-all-settings.test.ts Adds unit tests for resolving plugin settings incl. modalUiScale.
tests/unit/sidekick-area-registration.test.tsx Adds unit tests for sidekick area registration + intl memoization regression.
tests/unit/setup.ts Adds Vitest setup/cleanup integration for RTL.
tests/unit/settings.test.ts Adds unit tests for settings helper functions.
tests/unit/presenter-subscription-lifecycle.test.tsx Adds unit tests for presenter-only subscription lifecycle stability.
tests/unit/format-picked-time.test.ts Adds unit tests for picked-time formatter.
tests/unit/filter-possible-users.test.ts Adds unit tests for user filtering logic.
tests/unit/filter-options.test.ts Adds unit tests for filter-options data-channel helpers.
tests/unit/commons-utils.test.ts Adds unit tests for shared utils (isNumber, seen-entry checks).
tests/structural/test.spec.ts Adds Playwright structural suite for BBB 4.0 apps gallery + sidekick panel UI.
tests/README.md Documents Playwright suite structure and BBB 4.0 entry flow.
tests/elements.ts Adds data-test selectors for apps gallery, panel, modal, and chips.
tests/core/sessionPage.ts Adds/ports session page helpers used by Playwright tests.
tests/core/plugin.ts Adds plugin test harness wrapper.
tests/core/parameters.ts Adds env-driven BBB parameters for test setup.
tests/core/helpers.ts Adds meeting create/join helpers and settings extraction for Playwright.
tests/core/fixtures/README.md Adds docs for shared fixture utilities.
tests/core/fixtures/pluginBeforeAll.ts Adds plugin-availability and manifest fetch logic for tests.
tests/core/coreElements.ts Updates core selectors for BBB 4.0 apps gallery navigation.
tests/core/constants.ts Adds dotenv loading and timeout scaling for CI/local runs.
tests/behavioral/single-user.spec.ts Adds Playwright behavioral tests for single-user picking and history.
tests/behavioral/helpers.ts Adds helpers for opening panel, closing modal, cleanup, toggle retries.
tests/behavioral/fixtures.ts Adds multi-user fixture to run two contexts in one meeting.
src/styles/pallete.ts Removes legacy color constants file.
src/styles/general.ts Removes legacy shared sizing constants file.
src/intlMessages.js Removes legacy message definition module.
src/index.tsx Updates entrypoint to pass pluginUuid/pluginName props and render directly.
src/hooks/injectIntl.tsx Removes legacy intl injection hook that used require.context.
src/components/pick-random-user/types.ts Refactors plugin prop/types; adds seen-entry channel type; updates PickedUser.
src/components/pick-random-user/hooks.ts Adds settings resolution, modal control, current picked-user derivation.
src/components/pick-random-user/component.tsx Initializes SDK, loads locales, manages modal + registers sidekick panel.
src/components/pick-random-user-panel/types.ts Refactors panel prop types for sidekick rendering.
src/components/pick-random-user-panel/styles.tsx Adds panel wrapper that applies modalUiScale via CSS var.
src/components/pick-random-user-panel/styles.ts Removes legacy panel styles implementation.
src/components/pick-random-user-panel/queries.ts Removes legacy GraphQL subscription query (replaced by SDK hook).
src/components/pick-random-user-panel/component.tsx Rebuilds panel content around shared presenter-view component/hook set.
src/components/modal/utils.ts Adds notification + ping utilities.
src/components/modal/user-avatar/styles.tsx Adds shared avatar styling (initials vs image).
src/components/modal/user-avatar/component.tsx Adds avatar component with fallback color hashing.
src/components/modal/types.ts Expands modal props/types, filter options type, window settings type.
src/components/modal/styles.tsx Rebuilds modal styles with scale helper + toast + progress bar styling.
src/components/modal/styles.ts Removes legacy modal style file.
src/components/modal/raw_styles.css Removes legacy raw overlay CSS.
src/components/modal/presenter-view/utils.ts Adds filter function + picked-time formatting helper.
src/components/modal/presenter-view/types.ts Adds presenter-view prop types for sidekick usage.
src/components/modal/presenter-view/styles.tsx Adds rebuilt presenter-view styling for BBB 4.0 panel.
src/components/modal/presenter-view/hooks.ts Adds presenter-view hooks (pick action, possible users) + debug logging.
src/components/modal/presenter-view/component.tsx Adds rebuilt presenter-view component (chips, lists, pick/clear).
src/components/modal/picked-user-view/types.ts Refactors picked-user view props (seen tracking, back behavior, countdown).
src/components/modal/picked-user-view/styles.tsx Adds new picked-user view styling.
src/components/modal/picked-user-view/styles.ts Removes legacy picked-user view styles.
src/components/modal/picked-user-view/component.tsx Updates picked-user view to push “seen” entries and use shared avatar.
src/components/modal/hooks.ts Adds notification, filter-option sync, and close-prevention countdown hooks.
src/components/modal/component.tsx Rebuilds modal behavior (toast countdown, bot auto-close, scaled UI).
src/components/extensible-areas/generic-content-sidekick-area/types.ts Adds sidekick-area manager prop types.
src/components/extensible-areas/generic-content-sidekick-area/component.tsx Registers presenter-only sidekick area; stabilizes root reuse and deps.
src/commons/utils.ts Adds shared utility functions (hasCurrentUserSeenPickedUser, isNumber).
src/commons/types.ts Adds shared PickRandomUserSettings type.
src/commons/hooks.ts Adds locale loading + memoized intl and shared usePreviousValue.
src/commons/constants.ts Adds shared constants for settings and timing.
scripts/README.md Documents deployment helper scripts.
scripts/deploy-remote.sh Adds SSH deployment script for remote BBB servers.
scripts/copy-plugin-to-container.sh Adds script to copy dist/ into a local BBB Docker container.
scripts/.env.template Adds template env for deploy script.
README.md Expands documentation (versioning, configuration, BBB 4.0 behavior).
public/locales/pt-BR.json Adds pt-BR locale (new message IDs).
public/locales/ja.json Adds ja locale (new message IDs).
public/locales/it.json Adds it locale (new message IDs).
public/locales/index.json Adds locale index list.
public/locales/fr-FR.json Adds fr-FR locale (new message IDs).
public/locales/en.json Adds en locale (new message IDs).
public/locales/de.json Adds de locale (new message IDs).
public/index.html Removes legacy standalone HTML entry.
playwright.config.ts Adds Playwright config (CI behavior, ignore unit tests, reporters).
package.json Renames package, bumps SDK dependency, adds unit/e2e test scripts and deps.
manifest.json Updates required SDK, plugin name/version, entrypoint, locales base, channels.
locales/pt-BR.json Removes legacy locales folder file.
locales/en.json Removes legacy locales folder file.
debian/control Updates homepage URL.
.nvmrc Pins Node version (22).
.gitignore Ignores Playwright outputs, env files, coverage, etc.
.github/workflows/unit-tests.yml Adds unit-test workflow with coverage artifact upload.
.github/workflows/ts-code-validation.yml Updates Node setup to use .nvmrc.
.github/workflows/ts-code-compilation.yml Updates Node setup to use .nvmrc.
.github/workflows/release-upload-assets.yml Adds workflow to build and upload dist.zip on tag pushes.
.github/workflows/release-publish-do-spaces.yml Adds workflow to publish built dist to DO Spaces (if secrets configured).
.github/workflows/publish-tag.yml Updates tagging flow to sync manifest version and use .nvmrc.
.github/workflows/build-plugin-deb-package.yml Retargets deb build workflow to v0.0.x branch.
.env.template Adds template env for running tests and local workflows.
Suppressed comments (2)

src/components/modal/hooks.ts:164

  • intervalInstanceRef.current is typed as NodeJS.Timeout | null, but it’s passed directly to stopCountdown, which expects a non-null timeout. This is a TypeScript error and also leaves canClose potentially stale when there is no active interval.
    src/components/modal/presenter-view/hooks.ts:105
  • This is also marked as temporary debug instrumentation but will log in production. Since filterOptions is an object, this can also get noisy; consider gating to development and keeping dependencies to the specific values you want to observe.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/components/modal/utils.ts
Comment thread src/components/modal/hooks.ts
Comment thread src/components/modal/component.tsx
Comment thread src/components/modal/presenter-view/hooks.ts
Comment thread public/locales/pt-BR.json
Comment thread README.md Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@ramonlsouza
ramonlsouza merged commit ade44df into bigbluebutton:v0.1.x Aug 3, 2026
4 checks passed
@prlanzarin

Copy link
Copy Markdown
Member

CLOSES #86

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.