chore: Merge 0.0.x into 0.1.x - #126
Merged
ramonlsouza merged 171 commits intoAug 3, 2026
Merged
Conversation
…n when meeting ended or user is ejected
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
…ed because the presenter re-opened theirs.
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
ci: added unit test coverage in CI
…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
ci: Added post-release workflows
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>
… pick-user screen - sidekick
There was a problem hiding this comment.
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
GenericContentSidekickAreasidekick 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.currentis typed asNodeJS.Timeout | null, but it’s passed directly tostopCountdown, which expects a non-null timeout. This is a TypeScript error and also leavescanClosepotentially 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
filterOptionsis 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.
ramonlsouza
approved these changes
Aug 3, 2026
Member
|
CLOSES #86 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge
v0.0.xintov0.1.xPeriodic 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
pickedUserSeenEntrydata channel, the rebuilt presenter view, SDK-based locale loading, unit + Playwright tests, the new CI workflows, and the rename toBbbPluginPickRandomUser.SDK
0.0.100→0.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 theGenericContentSidekickAreathe 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
Bug fixed during the merge
v0.0.x's inline
useGetInternationalizationrebuildsintlon every render, and it was a dependency of the effect registering the sidekick area — which looped (Maximum update depth exceeded) and blanked the panel.intlis 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.tsfail — they don't expectmodalUiScale. Inherited fromupstream/v0.0.x, where it fails identically; best fixed there.