block / block/buzz

Sidebar channel sections are per-user only — no way to share a section layout across a team

Open
#5,469 1 comment 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Problem

Sidebar channel sections are a per-user construct. `channelSectionsSync.ts` filters
`kinds: [KIND_CHANNEL_SECTIONS], authors: [this.pubkey]`, so a section layout never
leaves the person who made it.

For a team using Buzz for real project work this is the blocker. We run a self-hosted
relay for a small company (design/AV projects). Each project gets a set of channels —
`-design`, `-quotes`, `-logistics`, `-email` and so on. One person scaffolds
the project, and every other member then has to recreate the same grouping by hand, one
project at a time. New channels created by a colleague appear ungrouped for everyone
else. In practice people stop grouping at all and the sidebar becomes a flat list of
hundreds of channels.

## Proposal

A shared, read-only base layer, with the personal layer kept as an overlay:

- A designated org/steward identity publishes a sections document in the existing shape.
- Clients additionally subscribe with `authors: [ORG_PUBKEY]` and merge: shared sections
first, personal sections after; a personal assignment or same-id section wins.
- Writes are unchanged — a user only ever publishes their own document.
- If no org pubkey is configured, or the document is missing/invalid, behaviour is
exactly as today.
- UI hides rename/delete/reorder on shared sections (a per-user "hide" would be fine).

## One constraint worth flagging

Personal documents are `nip44EncryptToSelf`-encrypted, so another author's document
can't be decrypted by anyone else. A shared document therefore needs plaintext content
(still signed by the org identity), or a group-encryption scheme if that's preferred.
That choice seems like a maintainer call, which is why I'm raising an issue rather than
opening a PR.

## Willing to contribute

We're building this for our own deployment now and are happy to submit it as a PR if the
approach above is one you'd accept — or to rework it to whatever shape you prefer.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.