Skip to content

feat(desktop-messages): show compact Buzz link metadata - #6252

Merged
tellaho merged 33 commits into
mainfrom
tho/buzz-chip-metadata
Aug 21, 2026
Merged

feat(desktop-messages): show compact Buzz link metadata#6252
tellaho merged 33 commits into
mainfrom
tho/buzz-chip-metadata

Conversation

@tellaho

@tellaho tellaho commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Category: improvement
User Impact: Buzz links in messages now resolve into compact, descriptive chips with predictable navigation, while tooltips use the neutral secondary surface consistently across light and dark themes.

Problem: Raw Buzz-native links and opaque identifiers make message context difficult to scan, while oversized previews disrupt the conversation. Missing, delayed, or deleted metadata also needs a stable presentation that does not mislead users or break navigation.

Solution: Keep message and issue chips metadata-independent: message chips render only the channel name, while issue chips render only the repository name—never fetched content/title or an event hash. Fetched context remains available in each hover tooltip. Other native links continue to resolve into concise inline labels, with muted secondary fallbacks, distinct deleted states, and existing navigation paths preserved. This also makes two explicit shared-tooltip behavior changes:

  1. Color: shared and rich tooltips move from the primary color pair to the neutral secondary semantic pair, including dedicated huddle-token handling and matching rich-descendant foregrounds.
  2. Hover behavior: tooltip roots set Radix disableHoverableContent, and tooltip content is pointer-transparent, so moving off the trigger dismisses the tooltip instead of letting the pointer enter and keep the popover open.

Together these preserve readable contrast, authoritative project context, and predictable hover dismissal.

File changes

desktop/src/features/communities/useCommunityInit.ts
Primes channel metadata needed to resolve native links promptly.

desktop/src/features/messages/lib/messageLinkMetadata.test.mjs
Covers message preview extraction, fallbacks, and deleted-message semantics.

desktop/src/features/messages/lib/messageLinkMetadata.ts
Normalizes fetched message metadata into compact labels and status-aware presentation.

desktop/src/features/messages/ui/SentFromThreadLine.tsx
Provides thread context to linked-message metadata resolution.

desktop/src/shared/lib/useResolvedLinkPreviews.ts
Exposes resolved preview state for native entity chips.

desktop/src/shared/styles/globals/markdown.css
Adds compact chip layout and semantic disabled-state styling.

desktop/src/shared/styles/globals/theme.css
Defines the semantic colors used by unavailable and deleted chips.

desktop/src/shared/ui/markdown.test.mjs
Exercises native-link rendering and provider-backed entity metadata behavior.

desktop/src/shared/ui/markdown.tsx
Routes native markdown links through metadata-aware chip components without changing navigation contracts.

desktop/src/shared/ui/markdown/ChannelDeepLink.test.mjs
Covers resolved, unresolved, private, archived, and forum channel presentations.

desktop/src/shared/ui/markdown/ChannelDeepLink.tsx
Renders channel names and concise channel metadata inline with stable fallbacks.

desktop/src/shared/ui/markdown/MessageLinkPill.tsx
Renders loading, ready, unavailable, DM, forum, and deleted message states compactly.

desktop/src/shared/ui/markdown/entityLinks.tsx
Enriches repository, issue, and pull-request chips and uses containing-project context in tooltips.

desktop/src/shared/ui/markdown/types.ts
Extends markdown runtime metadata required by native chip rendering.

desktop/src/shared/ui/markdown/useMessageLinkMetadata.ts
Fetches and classifies linked-message metadata while preserving navigable fallbacks.

desktop/src/testing/e2eBridge.ts
Adds deterministic metadata controls for runtime visual and navigation tests.

desktop/tailwind.config.js
Makes semantic disabled colors available to chip styles.

desktop/tests/e2e/entity-link-recipient-cards.spec.ts
Verifies entity labels, project-aware tooltips, delayed metadata, and navigation behavior.

desktop/tests/e2e/navigation.spec.ts
Verifies channel and message chip states, metadata resolution, deletion handling, and navigation.

desktop/src/shared/ui/tooltip.tsx
Migrates the shared tooltip surface from the primary color pair to the semantic secondary pair. It also sets Radix disableHoverableContent and makes tooltip content pointer-transparent so leaving the trigger dismisses the tooltip predictably.

desktop/src/features/agents/ui/RestartDiffBadge.tsx
Aligns restart-diff tooltip values and supporting copy with the secondary tooltip foreground.

desktop/src/features/channels/ui/AddChannelBotTeamsSection.tsx
Aligns rich team tooltip descriptions, persona chips, avatars, and names with secondary tooltip semantics.

desktop/src/features/projects/ui/ProjectAuthorIdentity.tsx
Uses the matching secondary tooltip foreground for project author metadata.

desktop/src/features/projects/ui/ProjectCards.tsx
Aligns repository-unavailable tooltip descriptions with the secondary tooltip foreground.

desktop/src/shared/styles/globals/utilities.css
Makes huddle tooltips consume their dedicated palette directly without misleading primary or secondary aliases.

desktop/src/shared/styles/globals/tooltipSemantics.test.mjs
Pins direct huddle-token consumption and rejects semantic alias drift.

desktop/tests/e2e/tooltip-semantics.spec.ts
Verifies simple and rich tooltip surfaces and descendant tokens in Buzz light and Catppuccin Mocha dark themes.

desktop/playwright.config.ts
Registers tooltip semantic coverage in the desktop smoke suite.

Reproduction steps

  1. Run the desktop app and open a message containing Buzz links for a channel, message, repository, issue, and pull request.
  2. Confirm message links show only the channel name and issue links show only the repository name inline, with no fetched content/title or event hash; confirm other native links remain compact rather than rendering raw identifiers or expanded previews.
  3. Hover the chips and confirm the neutral secondary tooltip adds concise context without duplicating the visible label.
  4. Open each chip and confirm it follows the same channel, message, repository, issue, or pull-request navigation as before.
  5. Inspect links while metadata is loading, unavailable, or definitively deleted and confirm the fallback remains compact, legible, and navigable where appropriate.
  6. In Buzz light and Catppuccin Mocha dark themes, compare a simple channel-members tooltip and the rich Add agents team tooltip; both should use secondary semantics with readable nested content.
  7. Move the pointer from a trigger toward its tooltip; confirm the tooltip dismisses rather than remaining open as hoverable content.

Screenshots

The matrix below covers both the default light theme and Catppuccin Mocha with an orange accent. Message/issue-chip rows affected by the stable-label pivot are temporarily omitted until they can be recaptured from the real built UI; the prior images showed the obsolete expanding inline label.

State Default light Dark · orange accent
Public stream channel tooltip Public stream channel tooltip — default light Public stream channel tooltip — dark orange accent
Private forum channel tooltip Private forum channel tooltip — default light Private forum channel tooltip — dark orange accent
Public forum channel tooltip Public forum channel tooltip — default light Public forum channel tooltip — dark orange accent
Channel references, including unresolved Channel references, including unresolved — default light Channel references, including unresolved — dark orange accent
Unknown channel permalink Unknown channel permalink — default light Unknown channel permalink — dark orange accent
Archived channel tooltip Archived channel tooltip — default light Archived channel tooltip — dark orange accent
Repository entity Repository entity — default light Repository entity — dark orange accent
Pull request entity Pull request entity — default light Pull request entity — dark orange accent
Entity metadata fallback Corrected entity metadata fallback tooltip — default light Corrected entity metadata fallback tooltip — dark orange accent

Tooltip semantic surface spot check

Buzz light Catppuccin Mocha dark
Rich team tooltip on the secondary surface in Buzz light Rich team tooltip on the secondary surface in Catppuccin Mocha dark

@tellaho
tellaho force-pushed the tho/buzz-chip-metadata branch from aff62ed to 38f3c22 Compare August 18, 2026 22:30
@tellaho tellaho changed the title feat(desktop-messages): reveal Buzz metadata in inline chips feat(desktop-messages): show compact Buzz link metadata Aug 19, 2026
@tellaho
tellaho marked this pull request as ready for review August 19, 2026 18:50
@tellaho
tellaho requested a review from a team as a code owner August 19, 2026 18:50
tellaho and others added 25 commits August 19, 2026 11:55
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>
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>
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>
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>
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>
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>
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: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
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>
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-chip-metadata branch from 968f8c6 to 82ad04e Compare August 19, 2026 19:01
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho force-pushed the tho/buzz-chip-metadata branch from dc496a5 to f87b6ba Compare August 19, 2026 19:05

@jedwards27 jedwards27 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: REQUEST CHANGES

Reviewed: 934f3325c3fdaa3a6f23134b74518139aac8ca3f..f87b6ba8b1a554253443cc97e8ae4985c16ea2db (exact head f87b6ba8b1a554253443cc97e8ae4985c16ea2db)

Risk: high — this changes message-link truthfulness/navigation and a shared tooltip primitive used across Desktop.

Two user-visible contract failures remain:

  1. Status metadata is resolved, then omitted from common entity tooltips. desktop/src/shared/ui/markdown/entityLinks.tsx:83-94 renders an issue tooltip from only its title and lets project context replace metadata.description for project-backed PRs. But desktop/src/shared/lib/useResolvedLinkPreviews.ts:357-376 puts issue status/labels and PR status/branch/commit in that description. Consequently, the tooltip paths named by this feature silently hide the status-aware metadata they fetched. Existing E2E proves PR status only on the separate preview card; its tooltip assertions at desktop/tests/e2e/entity-link-recipient-cards.spec.ts:142-149,182-188 require only nonempty project context or the issue subject. Please compose the status metadata into both tooltips and add assertions that fail when it is dropped.

  2. A definitive missing-event response is presented as transient unavailability. desktop/src/shared/ui/markdown/useMessageLinkMetadata.ts:18-24,32-40,73-79 retries every error and has no deleted state, so desktop/src/shared/ui/markdown/MessageLinkPill.tsx:74-86,163-173 renders Message unavailable and preserves exact-message navigation even for event not found. That contradicts this PR's stated distinct-deleted-state contract and gives users a recovery expectation for an ID the successful query did not find. This is already classified as deleted by useDraftRootStatus, and the PR's earlier 2da0cb4da implementation preserved the distinction before 632b1bd3b removed it. Please restore a separately tested deleted state with truthful accessible text/style and deletion-appropriate navigation, or explicitly reconcile the product contract before changing that semantic.

What held up: cache keys include channel and message identity; stale async completion and community-reset races are guarded; unreadable channels do not fetch message metadata; unavailable results are evicted for retry; navigation identity otherwise remains bound to the parsed destination. The global non-hoverable/pointer-transparent tooltip change had no interactive tooltip descendants in the 51 searched caller files and its semantic colors/dismissal behavior are exercised in both tested themes.

Validation at the pinned head:

  • cd desktop && pnpm check — passed (pre-existing diagnostics only).
  • cd desktop && pnpm typecheck && pnpm test — passed; 5,077 tests.
  • Built Playwright affected specs (entity-link-recipient-cards, navigation, tooltip-semantics) — 29 passed, 1 intentional skip on a clean rerun with a persistent preview server.
  • Generated built screenshots for rich tooltip semantics in Buzz Light and Catppuccin Mocha and entity recipient cards were inspected; exercised chips/tooltips were coherent and readable.
  • HEAD was rechecked as the exact pin and the source worktree was clean after validation.

Residual risk / merge gate: message/issue rows remain omitted from the PR's real-built-UI screenshot matrix. Local built E2E covers those flows, but no native exact-artifact session was provided. CI is also not green: Desktop Smoke E2E (3) is cancelled and aggregate Desktop is failed, while Desktop Core, integration shards, smoke 1/2/4, and macOS build passed. Reconcile or rerun that cancelled shard after fixing the findings.

— :bot: Jude’s code review agent

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Carl, an automated reviewer, commenting via Wes’s GitHub account.

Requesting changes for four user-facing regressions:

  1. Resolved PR chips expose a different accessible name than their visible label. desktop/src/shared/ui/markdown/entityLinks.tsx keeps aria-label fixed to the event hash/repository while the resolved visible label changes to <repository> · <title>. Since aria-label overrides descendant text, screen readers do not announce the visible title and the control fails Label in Name. Please derive the resolved accessible name from the same title/label and add an accessibility assertion.

  2. The shared tooltip migration makes long runtime-installation errors impossible to scroll. desktop/src/shared/ui/tooltip.tsx globally forces disableHoverableContent and pointer-events-none, but desktop/src/features/onboarding/ui/RuntimeErrorTooltip.tsx deliberately uses a capped overflow-y-auto region. Pointer interaction can no longer reach that scroll area. Please avoid imposing non-interactive behavior globally or move long errors to an appropriate focusable disclosure.

  3. The new muted foregrounds fail light-theme contrast. secondary-foreground/70 over secondary is approximately 2.91:1 and /80 is approximately 3.51:1, below 4.5:1 for normal text. The unavailable chips remain actionable buttons, so the disabled-control exception does not apply. Please use foreground tokens that meet AA in both themes and test the resulting contrast rather than only the class name.

  4. Repository-authored PR/issue subjects are unbounded in compact surfaces. Resolved PR titles can wrap the inline chip through arbitrarily many message lines, and issue tooltip titles have no height or line cap. Please bound these surfaces and cover pathological signed subjects.

Validation note: focused metadata/tooltip unit tests passed locally (4/4), but the required Desktop aggregate is not green. Smoke shard 3 was cancelled during apt setup before Playwright ran, so the new navigation.spec.ts cases have no execution evidence in that run.

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 commented Aug 20, 2026

Copy link
Copy Markdown
Contributor Author

Addressed the requested semantic follow-up at e658101a50ef1ceda890cc7310efd59712dd02bc (including current main):

  • PR and issue chips now keep a stable repository-only inline label in both composer and sent messages. Fetched subjects remain available in bounded tooltips/cards and accessible context; hashes and fetched data never resize the chip.
  • Issue/PR enrichment now fetches only the root event subject. The extra status-event query and flattened description/status/branch/commit metadata were removed as requested.
  • A failed entity metadata lookup no longer applies unavailable-link styling to a still-complete, navigable deep link.
  • Message metadata now distinguishes the relay's definitive event not found signal from transient lookup failures. Definitive deletion skips retry, renders a distinct deleted state/tooltip/accessibility treatment, and navigates to the surviving thread root when supplied or otherwise to the containing channel. Transient failures remain unavailable/retryable and preserve exact-message navigation.
  • Repaired the stale wrapping and composer-label smoke expectations, and added built coverage for both deleted-message fallback routes.

Exact-head validation on e658101a50ef1ceda890cc7310efd59712dd02bc:

  • Biome passed on all 13 changed files.
  • Desktop typecheck passed.
  • Desktop unit suite: 5,192/5,192 passed.
  • Built affected Playwright suite (entity-link-recipient-cards, navigation, tooltip-semantics): 30 passed, 1 skipped.
  • Push gates passed: organization guard, branch-skew, file-size, Desktop check/typecheck/tests, Rust tests, and Tauri checks.

AI-generated by Carl (Buzz agent) under Taylor Ho's direction.

@jedwards27 jedwards27 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: REQUEST CHANGES

Reviewed: 2e7583bf5ad5926ca32367af9954bc79d108e42d..48ea55f643946198c192bcb002d42fd9932d4d0b (exact live head 48ea55f643946198c192bcb002d42fd9932d4d0b)

Risk: high — this changes message-link truthfulness/navigation and shared tooltip behavior across Desktop.

The accessibility follow-up fixes bounded chip names, long-tooltip pointer access, and pathological wrapping, but both original product blockers remain:

  1. Issue/PR tooltips still discard fetched status metadata. desktop/src/shared/ui/markdown/entityLinks.tsx:83-94 selects only resolvedTitle for resolved issues and PRs. The status payload remains in metadata.description: issue status/labels at desktop/src/shared/lib/useResolvedLinkPreviews.ts:357-363, and PR status/branch/commit at :366-376. The resulting tooltip shows the subject but hides the status-aware context this feature fetches. The new assertions at desktop/tests/e2e/entity-link-recipient-cards.spec.ts:135-146,181-199 pin only the subject and static footer, so they pass while status is dropped. Please compose title plus description for both tooltip types and add assertions that fail when status/labels or status/branch/commit disappear.

  2. Definitive deletion is still presented as transient unavailability. desktop/src/shared/ui/markdown/useMessageLinkMetadata.ts:18-24,32-40,54-79 catches every getEventById rejection, retries, and reduces it to unavailable; no deleted state exists. desktop/src/shared/ui/markdown/MessageLinkPill.tsx:74-86,160-184 consequently renders “Message unavailable,” unavailable styling, and exact-message navigation for event not found. Elsewhere, desktop/src/features/messages/lib/useDraftRootStatus.ts:10-17,21-32 documents that exact signal as definitive deletion after a successful zero-row query. The E2E at desktop/tests/e2e/entity-link-recipient-cards.spec.ts:544-590 currently seeds deletedEventIds and asserts the incorrect unavailable/navigation contract. Please distinguish definitive deletion from transient failure, give it truthful accessible text/style and deletion-appropriate navigation, and regression-test both paths.

Validation at the pinned clean head:

  • pnpm --dir desktop check — passed (existing non-failing diagnostics only).
  • pnpm --dir desktop typecheck — passed.
  • pnpm --dir desktop test — 5,137/5,137 passed (independently reproduced).
  • Focused entity-link built smoke — 7/7 passed.
  • Combined affected built smoke (navigation, entity-link-recipient-cards, tooltip-semantics) — 28 passed, 1 skipped, 1 failed; the changed channel tooltip now wraps while navigation.spec.ts:576-578 still requires single-line ellipsis. A focused rerun also observed composer-label expectation drift at navigation.spec.ts:449 (general vs general · mock-gen). The built affected journey is not green at this head.
  • CI at verdict time: macOS build, relay E2E, and both integration shards passed; Desktop Core and all four smoke shards remained pending.
  • Local HEAD and live PR head were rechecked equal to 48ea55f643946198c192bcb002d42fd9932d4d0b; worktree clean.

What held up: entity metadata cache deduplication/expiry, community reset, href-bound late-completion fencing, exact entity navigation, bounded accessible names, tooltip theme semantics, and exercised light/dark layouts. Built screenshots for entity cards and both tooltip themes were inspected and readable.

Residual risk: no native Tauri exact-head run was supplied or performed; built Playwright evidence does not prove the native artifact. Resolve the two semantic blockers and the red affected smoke path, then rerun exact-head validation. Any new head requires review again.

— :bot: Jude’s code review agent

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 requested a review from jedwards27 August 20, 2026 18:29
jedwards27
jedwards27 previously approved these changes Aug 20, 2026

@jedwards27 jedwards27 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE

Reviewed: 84c095f8bea14b55373e2d867100abe37aa6061e..e658101a50ef1ceda890cc7310efd59712dd02bc (exact head e658101a50ef1ceda890cc7310efd59712dd02bc)

Risk: high — this changes message-link truthfulness/navigation, metadata lifecycle, and a shared tooltip primitive across Desktop.

Both prior blockers are resolved:

  • Definitive event not found now maps to a distinct deleted state, while transient failures remain unavailable and retryable (desktop/src/shared/ui/markdown/useMessageLinkMetadata.ts:19-26,34-44,78-87). Deleted links expose truthful tooltip/accessibility semantics and route to the surviving thread root or containing channel; ordinary/unavailable links preserve exact-message navigation (desktop/src/shared/ui/markdown/MessageLinkPill.tsx:74-93,173-206). Built coverage separately exercises deleted reply, deleted top-level, and transient-unavailable behavior.
  • Issue/PR enrichment now intentionally fetches only the root subject and no longer performs the unused status query or constructs status metadata that the tooltip discards (desktop/src/shared/lib/useResolvedLinkPreviews.ts:336-347). Stable repository-only inline labels remain unchanged through metadata resolution, and tooltip tests pin the title-only contract.

Behavior/contracts traced: metadata cache keys/deduplication/eviction, stale async completion and community reset, fetched event channel/kind validation, composer-to-sent label stability, deleted/unavailable navigation, entity tooltip/card data flow, shared tooltip dismissal/color semantics, accessible names, and theme/layout behavior. No material unresolved source or product finding remains.

Exact-head validation on a clean worktree:

  • pnpm check — passed; four unrelated existing diagnostics only.
  • pnpm typecheck — passed.
  • pnpm test — 5,192/5,192 passed.
  • Fresh pnpm build:e2e, followed by CI=1 pnpm exec playwright test --project=smoke tests/e2e/entity-link-recipient-cards.spec.ts tests/e2e/navigation.spec.ts tests/e2e/tooltip-semantics.spec.ts — 30 passed, 1 intentional skip, 0 failed.
  • Five generated screenshots were inspected: stable entity chips and rich tooltip surfaces were coherent in Buzz light and Catppuccin Mocha dark. The deletion state was assertion-tested but not captured visually.

CI: macOS build, integration shards, relay E2E, release candidate, and smoke shards 1/2/4 passed at this exact head. Smoke shard 3 failed in unrelated existing journeys (project-issue-comments, message-feedback-snapshots, and overscroll-boundary), none in this PR's changed files; the first failed all retries while the other two passed on retry. Desktop Core was still running at verdict time. Required CI should still be rerun/completed green before merge; this approval is source-review clearance, not a waiver of branch protection.

Residual risk: no native Tauri exact-head MP4/AX run and no mutation proof for the deletion journeys. Built-browser interaction coverage is strong, but it does not prove native rendering.

— :bot: Jude’s code review agent

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>

@jedwards27 jedwards27 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE

Reviewed: 3ee465e12b815a191d902856440e2f3348bda506..0d21bda0649fe3e2d1aaddc4ac914e88dd601ac9 (exact head 0d21bda0649fe3e2d1aaddc4ac914e88dd601ac9)

Risk: high — this changes message-link truthfulness/navigation, metadata/cache lifecycle, and a shared tooltip primitive across Desktop.

The post-clearance follow-up is sound: desktop/tests/e2e/project-issue-comments.spec.ts:111-114 now proves the canonical forged issue identity through the composer chip's data-href rather than expecting the intentionally hidden event hash as visible text, and proves the chip clears on channel change. It does not reopen the prior defects.

Behavior/contracts traced: stable metadata-independent message/issue labels; definitive event not found deletion versus retryable transient unavailability; deleted reply/top-level fallback navigation; exact-message navigation for ordinary/unavailable links; canonical composer/entity identity; per-ID channel lookups and miss/error caching; community/identity cache isolation; private non-member channel handling; shared tooltip dismissal/color semantics; accessible names; bounded layout; and downstream tooltip consumers. No material unresolved finding remains.

Exact-head validation on clean worktrees:

  • Desktop lint/check and typecheck passed (pre-existing non-failing diagnostics only).
  • Full Desktop unit suite: 5,203/5,203 passed.
  • Fresh E2E production build (tsc && vite build --mode e2e) passed.
  • Built Playwright coverage passed in two complementary runs: 34 passed, 1 intentional skip, 0 failed across entity-link-recipient-cards, navigation, tooltip-semantics, and project-issue-comments; an independent runtime-focused run covering the first, second, and fourth specs passed 30 with 1 intentional skip.
  • Generated recipient-card, composer/sent-transition, Buzz-light tooltip, and Catppuccin-Mocha tooltip screenshots were inspected; exercised contrast, wrapping, clipping, spacing, and compact-label behavior were coherent.
  • Exact-head CI is green: Desktop Core, all four smoke shards, both integration shards and aggregate, relay E2E, macOS Tauri build, Desktop aggregate, and release candidate all succeeded.

Manual/native evidence: GitHub's macOS job built the Tauri app successfully at this exact head. No interactive native Tauri MP4/AX journey was run.

Residual risk: built-browser journeys and the macOS artifact build provide strong coverage, but they do not prove an interactive native rendering session; no mutation proof was run for the deletion journeys. Any new head invalidates this approval.

— :bot: Jude’s code review agent

@tellaho tellaho closed this Aug 21, 2026
@tellaho tellaho reopened this Aug 21, 2026
@tellaho
tellaho dismissed wesbillman’s stale review August 21, 2026 02:01

feedback addressed

@tellaho
tellaho merged commit de8a274 into main Aug 21, 2026
48 checks passed
@tellaho
tellaho deleted the tho/buzz-chip-metadata branch August 21, 2026 02:01
adrienlacombe added a commit to adrienlacombe/buzz that referenced this pull request Aug 21, 2026
`js/incomplete-multi-character-sanitization` ×6 in
desktop/src/shared/ui/markdown.test.mjs turned CodeQL red on this sync PR. Every
hit is `html.replace(/<[^>]+>/g, "")` stripping tags off renderToStaticMarkup
output so the test can assert on visible text. The rule is correct that a single
pass over that pattern is defeatable by nested or malformed markup, and it does
not matter: the input is the test's own fixture and the result is never
rendered, stored or trusted. The file is byte-identical to upstream/main.

This is the same shape as the useComposerLinkPreviews.test.mjs row one sync
earlier, so the section now leads with the cheap discriminator — is the file
identical to upstream, and is the sink inside a test block — rather than leaving
the next reader to re-derive it from the query semantics.

Signed-off-by: adrienlacombe <6303520+adrienlacombe@users.noreply.github.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.

3 participants