Skip to content

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

Merged
GuiLeme merged 2 commits into
bigbluebutton:v0.1.xfrom
imdt-claudiop:sdk-compat-0.1.x
Sep 3, 2026
Merged

Support the 0.1.x plugin SDK and move the option to the media area (BigBlueButton 4.0)#33
GuiLeme merged 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 [GenericLinkShare]: 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 build-bundle
    
    Serve manifest.json and dist/GenericLinkShare.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, open the MEDIA SHARING panel in the actions bar. The Share Website Link as Content option is listed there.
  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
  • Share Website Link as Content option rendered in the MEDIA SHARING panel with its icon

Share Website Link as Content in the media area

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.

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>
@GuiLeme
GuiLeme merged commit 1a24bd0 into bigbluebutton:v0.1.x Sep 3, 2026
3 checks passed
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.

2 participants