feat(desktop-messages): show compact Buzz link metadata - #6252
Conversation
aff62ed to
38f3c22
Compare
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>
968f8c6 to
82ad04e
Compare
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
dc496a5 to
f87b6ba
Compare
jedwards27
left a comment
There was a problem hiding this comment.
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:
-
Status metadata is resolved, then omitted from common entity tooltips.
desktop/src/shared/ui/markdown/entityLinks.tsx:83-94renders an issue tooltip from only its title and lets project context replacemetadata.descriptionfor project-backed PRs. Butdesktop/src/shared/lib/useResolvedLinkPreviews.ts:357-376puts 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 atdesktop/tests/e2e/entity-link-recipient-cards.spec.ts:142-149,182-188require 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. -
A definitive missing-event response is presented as transient unavailability.
desktop/src/shared/ui/markdown/useMessageLinkMetadata.ts:18-24,32-40,73-79retries every error and has nodeletedstate, sodesktop/src/shared/ui/markdown/MessageLinkPill.tsx:74-86,163-173rendersMessage unavailableand preserves exact-message navigation even forevent 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 byuseDraftRootStatus, and the PR's earlier2da0cb4daimplementation preserved the distinction before632b1bd3bremoved 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
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Requesting changes for four user-facing regressions:
-
Resolved PR chips expose a different accessible name than their visible label.
desktop/src/shared/ui/markdown/entityLinks.tsxkeepsaria-labelfixed to the event hash/repository while the resolved visible label changes to<repository> · <title>. Sincearia-labeloverrides 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. -
The shared tooltip migration makes long runtime-installation errors impossible to scroll.
desktop/src/shared/ui/tooltip.tsxglobally forcesdisableHoverableContentandpointer-events-none, butdesktop/src/features/onboarding/ui/RuntimeErrorTooltip.tsxdeliberately uses a cappedoverflow-y-autoregion. 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. -
The new muted foregrounds fail light-theme contrast.
secondary-foreground/70oversecondaryis approximately 2.91:1 and/80is 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. -
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>
|
Addressed the requested semantic follow-up at
Exact-head validation on
AI-generated by Carl (Buzz agent) under Taylor Ho's direction. |
jedwards27
left a comment
There was a problem hiding this comment.
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:
-
Issue/PR tooltips still discard fetched status metadata.
desktop/src/shared/ui/markdown/entityLinks.tsx:83-94selects onlyresolvedTitlefor resolved issues and PRs. The status payload remains inmetadata.description: issue status/labels atdesktop/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 atdesktop/tests/e2e/entity-link-recipient-cards.spec.ts:135-146,181-199pin 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. -
Definitive deletion is still presented as transient unavailability.
desktop/src/shared/ui/markdown/useMessageLinkMetadata.ts:18-24,32-40,54-79catches everygetEventByIdrejection, retries, and reduces it tounavailable; nodeletedstate exists.desktop/src/shared/ui/markdown/MessageLinkPill.tsx:74-86,160-184consequently renders “Message unavailable,” unavailable styling, and exact-message navigation forevent not found. Elsewhere,desktop/src/features/messages/lib/useDraftRootStatus.ts:10-17,21-32documents that exact signal as definitive deletion after a successful zero-row query. The E2E atdesktop/tests/e2e/entity-link-recipient-cards.spec.ts:544-590currently seedsdeletedEventIdsand 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 whilenavigation.spec.ts:576-578still requires single-line ellipsis. A focused rerun also observed composer-label expectation drift atnavigation.spec.ts:449(generalvsgeneral · 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>
jedwards27
left a comment
There was a problem hiding this comment.
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 foundnow 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 byCI=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
left a comment
There was a problem hiding this comment.
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, andproject-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
`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>
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:
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
disableHoverableContentand 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
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.
Tooltip semantic surface spot check