Skip to content

Dashboard: inter-widget pub/sub — a tab-scoped message bus #101147

Description

@100yenadmin

Let widgets on a tab talk to each other.

Part of the Modular Dashboard roadmap — see the tracker #101136. Builds on Wave 1 (#101093; PRs #101094 / #101097 / #101098).

Problem

Widgets are fully isolated from one another today — each only talks to the parent via the postMessage bridge. That means widgets can't compose: a filter widget can't drive a chart widget, a selector can't narrow a table, even though both live on the same tab.

What this adds

  • A tab-scoped pub/sub message bus brokered by the parent.
  • dashboard:publish and dashboard:subscribe bridge messages for widgets to opt in.

How it'd be built

Extend WidgetInboundType / WidgetOutboundType and the handleMessage switch inside createWidgetBridge in ui/src/lib/dashboard/bridge.ts with publish/subscribe message types. The parent acts as the broker, routing published messages only to subscribed widgets within the same tab — never across tabs — keeping the isolation model intact for everything widgets don't explicitly opt into.

References

Tier 2 — the apps layer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low-priority cleanup, docs, polish, ergonomics, or speculative work.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.staleMarked as stale due to inactivity

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions