Skip to content

Support the 0.1.x plugin SDK and move the option to the media area (BigBlueButton 4.0) - #21

Open
imdt-claudiop wants to merge 2 commits into
bigbluebutton:v0.1.xfrom
imdt-claudiop:sdk-compat-0.1.x
Open

Support the 0.1.x plugin SDK and move the option to the media area (BigBlueButton 4.0)#21
imdt-claudiop wants to merge 2 commits into
bigbluebutton:v0.1.xfrom
imdt-claudiop:sdk-compat-0.1.x

Conversation

@imdt-claudiop

Copy link
Copy Markdown

Why

BigBlueButton 4.0 ships version 0.1.26 of the plugin SDK. The server compares that
version against the requiredSdkVersion declared in the plugin manifest and refuses to
load anything that does not match, so on a 4.0 server this plugin is rejected before its
bundle is ever fetched:

Cannot load plugin [BbbPluginH5p]: system SDK version [0.1.26] does not satisfy plugin requirement [~0.0.84].

This is the v0.1.x line, which is the one that targets the 0.1.x SDK, so this makes the plugin load and work on BigBlueButton 4.0.

On top of the version gate, this plugin does not even compile against 0.1.26: the action button dropdown extensible area was removed from the SDK, so ActionButtonDropdownOption, ActionButtonDropdownSeparator and setActionButtonDropdownItems no longer exist.

What changed

  • manifest.json: requiredSdkVersion from ~0.0.84 to ^0.1.5
  • package.json and package-lock.json: bigbluebutton-html-plugin-sdk from 0.0.93 to 0.1.26
  • the option is now registered through setMediaAreaItems with MediaAreaOption, which is where this kind of content sharing option lives in 4.0
  • the icon is passed as an object ({ iconName: 'copy' }). In 0.1.x the icon accepts either a built in icon name or raw svg content, and a bare string is treated as svg, which renders an empty icon.
  • the separator was dropped rather than ported. The 4.0 client only renders media area items whose type is OPTION, so a separator would never be displayed. This is a deliberate choice and easy to revisit if you would rather keep it.

The plugin version itself was deliberately left alone. It is cut by the publish-tag workflow, which also updates package.json and package-lock.json, so it belongs to the release process rather than to this change.

How to test

  1. Build and host the bundle:
    npm ci
    npm run fetch-standalone && (cd lib/h5p-standalone && npm install && npm run build)
    npm run build-bundle
    
    Serve manifest.json and dist/BbbPluginH5p.js from a URL the BigBlueButton server can reach. They have to sit next to each other, since javascriptEntrypointUrl is relative.
  2. Attach the plugin to a single meeting, so no server side configuration is touched. In API-Mate, add this Create custom parameter:
    pluginManifests=[{"url":"https://<your-host>/<folder>/manifest.json"}]
    
  3. Join the meeting as moderator. Join as moderator and presenter. Share a slide that carries an H5P block in its text, then use Play H5P on the presentation toolbar. The Remove H5P from presentation area option is then listed in the MEDIA SHARING panel.
  4. Optionally confirm the server accepted the plugin, in the bbb_graphql database:
    SELECT name, "loadFailureReason" FROM plugin;
    loadFailureReason must be empty for this plugin.

Validation

Checked against a BigBlueButton 4.0 server built from source on v4.0.x-develop at commit 93bc4864ab, shipping plugin SDK 0.1.24, with the plugin attached per meeting:

  • npx tsc and npm run lint both run clean locally, matching what the pull request workflows run
  • the plugin loads with an empty loadFailureReason and the client reports no page error
  • plugin accepted by the server, bundle loaded and registered in the client, no client error

media area on the 4.0 client, shown with no H5P content active, so the plugin option is not listed

Re-verified after moving to SDK 0.1.26, on the pushed head: npm ci, npx tsc, npm run lint and npm run build-bundle all run clean, and the lock resolves the SDK to exactly 0.1.26.

Notes

  • requiredSdkVersion is set to ^0.1.5, so any 0.1.x SDK from 0.1.5 up is accepted. The build pins 0.1.26, the SDK that 4.0 currently ships, while the wider floor also lets the plugin load on 4.0 servers that are still on an earlier 0.1.x SDK. Caret rather than tilde because on a 0.x floor the two operators accept exactly the same versions, and caret is the one that still expresses the intended range once the SDK reaches 1.0.0; note that ^0.1.5 by itself does not admit a 1.0.0 SDK.
  • building this plugin requires the H5P standalone library to be fetched and built first, as described in the README. That is a pre existing prerequisite of the repo, not something introduced here, which is why the build step above has an extra line.
  • the media area option only appears once H5P content is active in the presentation area, which needs a slide carrying a valid H5P block. I was not able to get such a slide to become the current presentation on the test server, so what is confirmed here is that the plugin is accepted, loads and raises no error. The rendering of the media area option and of an actual H5P activity was not exercised.

Co-authored with Guilherme Leme, who created the v0.1.x branches for these plugins.

imdt-claudiop and others added 2 commits August 21, 2026 17:53
…ton 4.0)

Pin the build to the SDK that BigBlueButton 4.0 currently ships (0.1.26) and
widen requiredSdkVersion to ^0.1.5, so the plugin also loads on 4.0 servers
running an earlier 0.1.x SDK instead of being rejected at load time.

Co-Authored-By: Guilherme Leme <leme.guilherme.p@gmail.com>
The action button dropdown extensible area was removed in the 0.1.x plugin SDK,
so 'setActionButtonDropdownItems' and 'ActionButtonDropdownOption' no longer
exist and the plugin does not build against 0.1.24. Register the option through
'setMediaAreaItems' with 'MediaAreaOption' instead, which is where this kind of
content sharing option lives in BigBlueButton 4.0.

The icon is now passed as an object ('{ iconName: 'copy' }'): in 0.1.x the icon
accepts either a built in icon name or raw svg content, and a bare string is
treated as svg, which renders an empty icon.

The separator was dropped rather than ported: the 4.0 client only renders media
area items of type OPTION, so a separator would never be displayed.

Co-Authored-By: Guilherme Leme <leme.guilherme.p@gmail.com>
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.

1 participant