Conversation
6b78dec to
fb593a7
Compare
86ba5b3 to
b91c630
Compare
b1db170 to
ed5a2f4
Compare
3a6c1bf to
30bc57d
Compare
Move the existing later-slice DM-loading fixture correction to the editor prefix. Assert no premature signing and exact final recipients without treating a one-time mention as an automatic address. Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
ed5a2f4 to
75f61d7
Compare
jedwards27
left a comment
There was a problem hiding this comment.
No blocking findings at exact head 75f61d7d473829fe11795f96870e20ca8da87d99 against base b4a4f6f2436a41245bdd8fdbd38004e55c894467.
I traced the changed mention-decoration and Enter-selection behavior through the composer, send flow, recipient extraction, and membership revalidation boundaries:
- The Enter handler consumes ProseMirror
splitBlockwhile autocomplete is active, leaving the composer wrapper to resolve the current suggestion (desktop/src/features/messages/lib/useRichTextEditor.ts:389-408,desktop/src/features/messages/MessageComposer.tsx:731-772). - Decoration recomputation examines changed textblocks across step documents, and team-wrapper matching remains bounded to zero or one closing
)(desktop/src/features/messages/lib/mentionHighlightExtension.ts:377-402,612-662,686-706). - Visual highlighting does not manufacture recipient identity. Recipient extraction remains tied to selected/current member candidates (
desktop/src/features/messages/lib/extractMentionPubkeys.ts:110-145), with identities captured before async preparation (desktop/src/features/messages/lib/useMentionSendFlow.ts:747-755). - Membership/authorization is checked during preparation and again immediately before publish (
desktop/src/features/messages/lib/useMentionSendFlow.ts:459-465,576-598); agent admission fails closed (desktop/src/features/messages/lib/agentMentionRevalidation.ts:49-95). Composer reuse/navigation is guarded by captured owner/revision state, with failure restoration (desktop/src/features/messages/lib/useMentionSendFlow.ts:401-429,747-819).
Exact-head validation:
git diff --check— pass.just desktop-check— pass; warnings were outside this PR diff.just desktop-typecheck— pass.just desktop-build— pass.- Changed helper tests — 50/50 pass.
- Full Desktop package rerun — 6040/6040 pass. Earlier runs each exposed a different unrelated timing failure that passed on rerun; I treat those as flaky confidence signals, not PR-caused gate failures.
- Isolated Playwright Stream and Forum Enter journeys — 2/2 pass, asserting one paragraph, no signing, and exact
@bobinsertion. - Exact-head CI — Desktop Core, four Desktop Smoke E2E shards, Desktop relay/integration E2E, macOS/Windows builds, Semgrep, zizmor, and DCO are green.
Residual risk: native Tauri/WebView input delivery and accessibility semantics were not observed in a native harness. This PR introduces no new interactive component or semantic owner, and browser/package/CI evidence passed, so this remains non-blocking reviewer/tooling risk.
Author action: none.
Verification owner: reviewer/tooling for optional native WebView/accessibility observation; none for code.
jedwards27
left a comment
There was a problem hiding this comment.
:bot: Jude’s code review agent
Both assigned review lanes clear exact head 75f61d7d473829fe11795f96870e20ca8da87d99.
The Enter interception correctly prevents ProseMirror paragraph splitting while the composer selects the current suggestion. Decoration rebuilding covers changed text blocks and recipient identity remains derived from selected current candidates, with authorization and membership revalidated before publication and stale composer operations fenced by owner/revision.
Validation: full Desktop package rerun 6,040/6,040; typecheck, lint, and build; changed helper tests 50/50; isolated Enter Playwright journeys 2/2; clean git diff --check. The live head remained unchanged immediately before this review, with 17 successful and 10 skipped exact-head checks.
Residual risk: no native WebView/accessibility observation. One unrelated timing test failed in an initial run in each lane and passed on rerun; neither reproduced. These are confidence gaps, not author defects.
|
Superseded by consolidated #7191 (new head This PR's highlight-typed-mention and Enter-selection behavior is included in #7191's consolidated landing unit: highlight settlement, native selection/deletion and duplicate-recipient witnesses are retained there, so this content no longer needs to land as an independent slice between #7196 and #7197. Closing as superseded is not a claim that this branch's prior review state or CI is transferred to the new unit. The branch |
🤖
Summary
Fixes three native-editor bugs that surfaced while typing @ mentions:
Part of the mention-chooser stack on the shared #7190 recovery prerequisite: #7190 → #7196 → #7323 → #7197 → #7239 → #7240. This feature stack remains separate from #7191 → #7192. This PR builds directly on #7196.
Related issue
Continues the merged mention-editor work from #7124 (authorize remote mentions at publication) and #7128 (preserve spacing after multi-word mentions). No separate tracking issue for this slice.
Testing
mentionHighlightExtension.test.mjsextended for incremental typing of a second registered label, suffix deletion, separator survival across qualified-label refresh, and the team wrapper around key-ending labels.mentions.spec.tscovers highlight-while-typing without opening the picker, Enter choosing without a paragraph split, and caret settlement;persistent-agent-audience.spec.tscarries the one-time-DM fixture, corrected to assert no premature signing, an empty post-send draft, and the exact final recipient.Extraction validation update