block / block/buzz

bug(desktop): mention chip and separator lost during suffix typing after Enter selection (F1)

Open
#7,253 0 comments 1 reaction 0 assignees View on GitHub
bug
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Describe the bug

**Unresolved composer F1:** after Enter selects an exact single-token mention and inserts a trailing space, subsequent suffix typing intermittently removes the separator and mention chip **before Send**. Sending preserves the malformed plain text. This is a separately discovered material composer bug, not a demonstrated cloud-provenance regression.

Follow-up from [cloud PR #7129](https://github.com/block/buzz/pull/7129) and its [exact-head review 5092843946](https://github.com/block/buzz/pull/7129#pullrequestreview-5092843946). The review explicitly calls F1 a **non-blocking confidence gap for #7129** and directs separate mentions/composer follow-up; it does **not** say F1 is fixed.

## Steps to reproduce / observed cases

These are the original failing sequences, **not deterministic reproductions**: the isolated pair later passed on both pinned base and candidate.

Use the Desktop mock-Tauri E2E `bob-tyler` DM and the existing cases in [`desktop/tests/e2e/mentions.spec.ts` at the observed candidate](https://github.com/block/buzz/blob/d280d36c1f5b07322fedba52bf0b8f766e192cd9/desktop/tests/e2e/mentions.spec.ts#L3004-L3060):

1. **`sent non-member person mention uses the normal mention style`** (declaration **:3004**, failed assertion **:3024**): type the `Loop in @outsider` selection sequence, select using Enter, then type suffix ` please`. The trace shows the correct `@outsider` chip plus a literal space after Enter, then plain `Loop in @outsiderplease` before Send. The sent `[data-mention]` chip assertion fails.
2. **`sent managed non-member agent mention uses the agent mention style`** (declaration **:3028**, failed assertion **:3057**): with the case's managed-charlie fixture, select `@charlie` using Enter, then type suffix ` too`. The trace shows the correct `@charlie` chip plus a literal space after Enter, then plain `Loop in @charlietoo` before Send. The sent `[data-mention]` chip assertion fails.

## Expected behavior

Suffix typing must preserve the selected exact identity, its mention chip and a separator; it must not merge the suffix into the identity token. After Send, the person/agent mention should retain its normal/agent styling. The fault is visible in the composer already, not merely in sent-message rendering.

## Version and platform

- Buzz release version: unknown; observed candidate **`d280d36c1f5b07322fedba52bf0b8f766e192cd9`**.
- Pinned comparison base: **`0e878664b08cdf7fb2d89d940bc2aa92cdc485f7`**.
- OS: Darwin/macOS (version unknown), renderer with production mock-Tauri bridge, not packaged native/live-cloud validation.
- Playwright **1.60.0**, Chromium **148.0.7778.96**, Desktop Chrome profile, 1280×720, en-US, light; Node **24.15.0**, pnpm **11.4.0**.

## Logs / durable evidence summary

| Distinct execution | Outcome |
| --- | --- |
| Original full candidate mentions invocation, one worker, zero retries | **78 passed / 2 failed out of 80**; the two failures above |
| Isolated pinned-base pair, matched fixtures/settings | **2/2 pass**; additional successful-trace capture pair also **2/2** |
| Isolated unchanged candidate pair, matched fixtures/settings | **2/2 pass** |
| Exact-head review's separate systems full-file run | Reviewer-reported **79/79 pass**, one worker, zero retries |

The review also reports a **different adjacent** product/UI-lane failure passing **3/3 isolated**. Its 79-case run is distinct from the original 80-test invocation (whose output includes `team-mentions.spec.ts`); neither later result replaces the retained original failures. No new tests were run to publish this issue.

The [original public evidence summary](https://github.com/block/buzz/pull/7129#issuecomment-5513218962) preserves the failure history. Its publication-era technical hold is superseded **for cloud review disposition only** by the later exact-head review linked above.

[Durable evidence and relevant trace excerpts](https://github.com/block/buzz/blob/510455897d785a86131065132275350bba2d06ad/composer-f1-6b781cc5-evidence.md) include original trace SHA-256 identifiers. Full original failed trace archives remain preserved; only relevant mock-UI excerpts are public, not local configuration/transcripts or broad raw trace resources.

Original failure screenshots below show the **sent** malformed text; the trace excerpts establish that separator/chip loss occurred **before Send**. PNGs use the repository's immutable GitHub screenshot-branch hosting convention.

### Person failure (original capture)
![Person mention became plain outsiderplease](https://raw.githubusercontent.com/block/buzz/510455897d785a86131065132275350bba2d06ad/composer-f1-6b781cc5-person-failure.png)

### Managed-agent failure (original capture)
![Agent mention became plain charlietoo](https://raw.githubusercontent.com/block/buzz/510455897d785a86131065132275350bba2d06ad/composer-f1-6b781cc5-agent-failure.png)

## Unknowns and investigation boundary

- **Cause remains unknown.** The recorded comparison found governing insertion/caret paths byte-identical. Neither an exact-base failure nor a candidate-only/cloud regression was established. Timing or suite-order sensitivity is a hypothesis, not a diagnosis.
- **#7128 is not a demonstrated fix**: its multiword/full-name settlement extension does not prove repair of these already-recognized single-token cases.
- **#7133 is separate**: do not conflate this with its Radix edit-menu focus or recipient-alias issues, or assume a shared cause.
- Preserve the failed traces and strict assertions. Do not dismiss this as flakiness, add sleeps/retries, weaken assertions, or mark it resolved from isolated passes. A separately authorized investigation should use faithful actuation and retained failure traces to localize separator/caret settlement before proposing a production-bound regression/fix. This issue authorizes no implementation scope expansion.

## Proposed ownership / gate separation

**Unassigned pending maintainer triage.** Suggested routing: **block/buzz-oss-team**, the actual catch-all owner in [CODEOWNERS](https://github.com/block/buzz/blob/d280d36c1f5b07322fedba52bf0b8f766e192cd9/.github/CODEOWNERS), to select a Desktop mentions/composer maintainer. No composer-specific named owner or human assignment is inferred from the review, and no owner acceptance is claimed.

This separate follow-up records the unresolved bug for cloud bookkeeping; it does **not** waive the human security gate, grant security/merge authorization, or establish native/live-cloud certification. Narrow duplicate check found no matching dedicated issue; related PRs are linked above rather than treated as a fix or duplicate.

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.