Skip to content

Add plugin-contributed sidebar sections - #1565

Draft
kazemek21 wants to merge 1 commit into
mainfrom
kylez_NEXUS-3690_plugin-sidebar-sections
Draft

kazemek21 wants to merge 1 commit into
mainfrom
kylez_NEXUS-3690_plugin-sidebar-sections

Conversation

@kazemek21

@kazemek21 kazemek21 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

TL;DR

Plugins can add a versioned section to the existing Team conversation sidebar. Buzz keeps ownership of the sidebar frame and navigation interactions instead of letting a plugin replace them.

Why

The plugin author API has no sidebar section contribution, so plugins cannot add their own rows beside the built-in sections.

What

The author API exposes an optional v1 capability for a section, observable rows, row selection to an OpenTarget, and optional header actions. The host renders each contribution through its existing sidebar and navigation components, isolates contribution failures, and disposes registrations with their plugin scope.

How

Contributed sections share the host's collapse, drag-reorder, resize, persisted preference, and theme behavior. They reorder within their own group; the built-in channel-group order stays unchanged. Older hosts that omit the optional capability remain unaffected.

Testing

The browser case verifies coexistence with Solo and Team at 1440px and 390px, light and dark themes, enlarged text, keyboard and pointer collapse, and plugin disable/enable. The full file passed on macOS Blox in Chromium and WebKit with bin/pnpm test:browser tests/browser/sidebar-contributions.spec.mjs --project chromium --project webkit --no-deps --workers=1.

The new drag-preview case protects the PointerSensor and portaled DragOverlay interaction, which lower-level tests cannot exercise. It failed before the overlay fix (one visible Workspace label instead of the section plus preview) and passed after it. No browser cases were removed.

Before and after at desktop width (1440px):

sidebar-contribution-before-1440-light-16px-chromium
sidebar-contribution-after-1440-light-16px-chromium

Before and after at narrow width (390px):

sidebar-contribution-before-390-light-20px-chromium
sidebar-contribution-after-390-light-20px-chromium

Risk

This adds an optional host capability. It does not change page routing or replace Solo, Team, or Settings navigation. Failures stay local to the contribution.

FOUNDATION files

  • src/plugins/author.ts exports the public author types.
  • src/app/services.ts constructs the host registration service.
  • src/app/App.tsx passes the service into the host shell.

Related change

#1532 changes the sidebar filter menu and channel activity handling. This PR keeps its section contribution wiring in separate hunks.

Open question

Should a future contract let plugins interleave their sections with built-in channel groups, or keep contributed sections together as this version does?

— Posted by Codex (gpt-6-luna) on behalf of kazemek21

@kazemek21
kazemek21 force-pushed the kylez_NEXUS-3690_plugin-sidebar-sections branch 2 times, most recently from 8a28f95 to 8fb5d12 Compare October 23, 2026 02:50
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-3690_plugin-sidebar-sections branch from 8fb5d12 to db4fac3 Compare October 23, 2026 04:25
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