Skip to content

feat(desktop-messages): render compact Buzz permalink chips - #5638

Open
tellaho wants to merge 5 commits into
mainfrom
tho/buzz-permalink-chips
Open

feat(desktop-messages): render compact Buzz permalink chips#5638
tellaho wants to merge 5 commits into
mainfrom
tho/buzz-permalink-chips

Conversation

@tellaho

@tellaho tellaho commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Category: improvement
User Impact: Buzz channel, message, repository, pull request, and issue links now open reliably and display recognizable context in the desktop app.
Problem: Buzz links could appear as raw or ambiguous URLs, and navigation links received during startup or community transitions could be dropped before the UI was ready. Repository and issue shares in particular required hover context to understand at a glance.
Solution: Queue desktop channel/message navigation until the UI is ready, then render bare Buzz permalinks as icon-prefixed chips with concise entity context while preserving user-authored Markdown labels as ordinary links.

File changes

desktop/src-tauri/src/deep_link.rs
Adds validated channel-link parsing and a deduplicated, acknowledged queue so navigation survives frontend startup.

desktop/src-tauri/src/lib.rs
Registers the pending-navigation state and commands with the desktop application.

desktop/src/features/communities/useCommunityInit.ts
Resets queued navigation safely across community boundaries without leaking stale destinations.

desktop/src/features/messages/lib/channelLink.test.mjs
Covers valid, malformed, and canonical channel permalink forms.

desktop/src/features/messages/lib/channelLink.ts
Defines strict parsing and detection for buzz://channel/<uuid> links.

desktop/src/features/messages/lib/composerMessageLinkNode.test.mjs
Extends composer-node coverage for normalized Buzz link content.

desktop/src/features/messages/lib/composerMessageLinkNode.ts
Keeps composer link-node handling aligned with the expanded Buzz link surface.

desktop/src/features/messages/lib/remarkChannelDeepLinks.test.mjs
Verifies bare channel URLs become renderable deep-link nodes without touching code.

desktop/src/features/messages/lib/remarkChannelDeepLinks.ts
Transforms eligible bare channel links into dedicated Markdown nodes.

desktop/src/features/messages/lib/remarkEntityLinks.test.mjs
Covers bare repository, pull-request, and issue detection and code-span exclusions.

desktop/src/features/messages/lib/remarkEntityLinks.ts
Adds dedicated Markdown nodes for bare Buzz project entities.

desktop/src/shared/deep-link.test.mjs
Exercises queued navigation, acknowledgement, serialization, and community-switch behavior.

desktop/src/shared/deep-link.ts
Serializes pending deep-link drains and acknowledges destinations only after successful navigation.

desktop/src/shared/styles/globals/markdown.css
Aligns permalink icon geometry and spacing with agent mention chips.

desktop/src/shared/ui/markdown.test.mjs
Adds integration coverage for every permalink chip, authored labels, fallbacks, icons, and static rendering.

desktop/src/shared/ui/markdown.tsx
Routes channel and entity nodes through the shared presentation path while preserving authored link text.

desktop/src/shared/ui/markdown/BuzzLinkChip.tsx
Introduces the shared interactive/static permalink chip and authored-label inline-link components.

desktop/src/shared/ui/markdown/ChannelDeepLink.tsx
Renders channel shares and references with Hash icons, names, and shortened-ID fallbacks.

desktop/src/shared/ui/markdown/MessageLinkPill.tsx
Renders ordinary message shares with message icons and channel/message context while retaining sent-from-thread behavior.

desktop/src/shared/ui/markdown/entityLinks.tsx
Maps repositories, pull requests, and issues to Projects-aligned icons and contextual labels.

desktop/src/shared/ui/markdown/nodeCache.ts
Includes entity-link rendering in cached Markdown node handling.

desktop/src/shared/ui/markdown/utils.ts
Allows validated channel links through the Buzz URL transform.

desktop/src/shared/useMessageDeepLinks.ts
Drains queued navigation links safely and clears them during teardown.

desktop/src/testing/e2eBridge.ts
Extends the mock bridge with pending-navigation command behavior.

desktop/tests/e2e/community-rail.spec.ts
Verifies queued links do not cross community boundaries.

desktop/tests/e2e/navigation.spec.ts
Covers channel/message deep-link navigation during startup and active sessions.

desktop/tests/helpers/bridge.ts
Adds reusable deep-link mock state and acknowledgement helpers.

Reproduction steps

  1. Run the desktop app and open a channel containing bare buzz://channel, buzz://message, buzz://repo, buzz://pr, and buzz://issue URLs.
  2. Confirm each bare URL renders as one cohesive chip with a type icon, a useful name or shortened identifier, and no duplicated channel # character.
  3. Add an authored Markdown link such as [design discussion](buzz://issue?...) and confirm the supplied label remains an ordinary link rather than becoming a chip.
  4. Select channel and message links and confirm they navigate correctly in warm and cold-start states.

Screenshots / demos

Composer — message permalink preview

Composer message permalink chip

Message list — channel, message, repository, pull request, and issue states

Message-list permalink chips

Complete permalink chip suite

Channel, message, repository, pull request, and issue permalink chips

@tellaho tellaho changed the title feat(messages): render compact Buzz permalink chips make Buzz permalinks navigable and self-describing Aug 12, 2026
tellaho added a commit that referenced this pull request Aug 12, 2026
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho force-pushed the tho/buzz-permalink-chips branch from 2bea787 to 197df04 Compare August 12, 2026 07:32
@tellaho tellaho changed the title make Buzz permalinks navigable and self-describing feat(desktop): render self-describing Buzz permalink chips Aug 12, 2026
@tellaho tellaho changed the title feat(desktop): render self-describing Buzz permalink chips feat(desktop-messages): render compact Buzz permalink chips Aug 12, 2026
Carl and others added 2 commits August 12, 2026 00:56
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/buzz-permalink-chips branch from b652e74 to e0fc8c4 Compare August 12, 2026 09:36
@tellaho
tellaho marked this pull request as ready for review August 12, 2026 09:38
@tellaho
tellaho requested a review from a team as a code owner August 12, 2026 09:38
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.

1 participant