Skip to content

feat(desktop): embed linked buzz messages - #3867

Draft
tellaho wants to merge 6 commits into
mainfrom
tho/message-embed
Draft

feat(desktop): embed linked buzz messages#3867
tellaho wants to merge 6 commits into
mainfrom
tho/message-embed

Conversation

@tellaho

@tellaho tellaho commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Category: new-feature
User Impact: Desktop users can now recognize and open linked Buzz messages from a rich inline preview without losing their place.

Problem: Bare Buzz message permalinks only appeared as compact pills, hiding the quoted context until opened. They also needed a strict disclosure boundary for private, missing, or mismatched sources.

Solution: Bare permalinks now append a bounded, stable-height preview with the source author, avatar, channel, and excerpt only after channel readability and event-channel integrity checks pass. Unreadable or unresolved sources render a neutral non-leaking state, while labeled links remain unchanged and excerpts never recursively unfurl.

Originating Buzz channel: 840b8580-b6f5-4cc5-90ff-6dd78d299ae1

File changes

desktop/src/features/messages/lib/messageEmbed.ts
Extracts bare message permalinks, centralizes channel readability and event-integrity checks, and bounds preview excerpts.

desktop/src/features/messages/lib/messageEmbed.test.mjs
Covers extraction, labeled/code exclusions, open and joined-private readability, mismatched source rejection, and excerpt bounds.

desktop/src/shared/ui/markdown/MessageEmbed.tsx
Fetches and renders the privacy-gated message preview with stable loading and neutral unavailable states.

desktop/src/shared/ui/markdown/MessageEmbedList.tsx
Resolves message embeds outside the cached Markdown node tree and appends them with existing attachment layout conventions.

desktop/src/shared/ui/markdown/MessageLinkPill.tsx
Prevents inaccessible links from exposing channel names or offering unsafe navigation.

desktop/src/shared/ui/markdown.tsx
Integrates the message embed list alongside existing rich preview attachments.

desktop/tests/e2e/navigation.spec.ts
Verifies a resolved embed shows source context and opens the linked thread.

Reproduction steps

  1. Open a Desktop channel containing a readable source message.
  2. Send a new message containing its bare buzz://message?... permalink.
  3. Confirm the original link remains visible and a bordered preview shows the author, avatar, channel, and bounded source text.
  4. Click the preview and confirm Desktop opens the linked message/thread.
  5. Paste a link to an unreadable, missing, or channel-mismatched source and confirm only the neutral private/unavailable state appears.
  6. Paste an intentionally labeled Markdown link and confirm it remains a label without a rich embed.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@Chessing234

Copy link
Copy Markdown
Contributor

love the embeds. one thing — make sure private/missing messages stay as the plain pill and never fetch content the viewer isnt allowed to see

npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 2 commits August 1, 2026 09:18
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho force-pushed the tho/message-embed branch from 8695ae6 to fc7e64f Compare August 2, 2026 01:32
npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 3 commits August 1, 2026 19:01
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
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