Skip to content

Scope presenter BroadcastChannel traffic to one workbench session #151

Description

@Brad-Edwards

Review finding

Every workbench uses the same default presenter BroadcastChannel name. That makes commands global to all Pulsar windows on the same origin instead of scoped to one presentation session.

Evidence

  • src/system/presenter/bridge.ts:20 defines DEFAULT_PRESENTER_CHANNEL = 'pulsar-presenter'.
  • src/system/presenter/bridge.ts:51 uses that default when callers do not supply a channel name.
  • src/system/presenter/bridge.ts:58 accepts any valid PresenterCommand received on that same-origin channel.
  • src/system/presenter/bridge.ts:83 broadcasts local commands to the same shared channel.

Impact

Two presentations running under the same origin can drive each other accidentally. Any same-origin page that knows the fixed channel name can also send valid presenter commands such as advance, back, or mute toggles. Same-origin is trusted in the current model, but this still creates surprising cross-talk for local workbench sessions.

Recommended fix

Add an explicit per-session scope to the presenter bridge, and ensure popout windows inherit that scope from the opener URL or bootstrap state.

Acceptance checks

  • A per-workbench nonce or session id is included in the channel name or message envelope.
  • The prompter popout receives the same session scope as the opener.
  • isPresenterCommand() validation remains in place for message shape.
  • Tests prove two bridge instances with different session scopes do not receive each other's commands, while windows in the same session do.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:presenterPresenter controls, advance/hold/skip, pause/resumebugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions