Skip to content

fix(mentions): match @handle in comment, task, and page mention pickers - #464

Merged
crs48 merged 3 commits into
mainfrom
claude/username-autocomplete-bug-482cc9
Jul 10, 2026
Merged

fix(mentions): match @handle in comment, task, and page mention pickers#464
crs48 merged 3 commits into
mainfrom
claude/username-autocomplete-bug-482cc9

Conversation

@crs48

@crs48 crs48 commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Problem

Setting a username (@handle) in your profile did not surface you in the @mention autocomplete inside chats or comments.

0172 phase 4 (8fdac91ad) added handle matching only to the chat composer's picker filter. Every other mention surface — comments, task inputs, and in-page editor mentions — filtered on display name and DID alone, so typing a handle that shares nothing with the display name matched nobody. And in chat, mergeMentionables deliberately removed self from the candidate list, so testing your own new handle failed there too.

Fix

  • Comments & task surfaces (TaskPersonOption / filterTaskPeople): the option now carries the optional handle, the filter matches it, and useCommentPeople / useWorkspacePeople resolve it from Profile nodes. Task surfaces previously resolved no profile metadata at all — they now show real display names instead of truncated DIDs.
  • Page editor mentions (TaskMentionSuggestion / filterSuggestions / buildPersonMentionSuggestions): same treatment for the in-editor @mention popup.
  • Chat (mergeMentionables): self is kept as a candidate — listed last and labelled "(you)" so it never crowds out collaborators. Notification rules already ignore self-authored changes, so self-mentions can't self-notify.
  • Mention menus render the muted @handle next to the display name so it's visible why an option matched.

Verified

  • Unit tests added for handle matching in filterTaskPeople, mergeMentionables (self-last + handle carry-through), collectWorkspacePeople profile resolution, and buildPersonMentionSuggestions.
  • Live in the app (seeded workspace, profile saved with display name "Chris Test" / handle "wizard"):
    • chat composer @wiz → "@chris Test (you)"; empty @ lists collaborators first, self last
    • page editor @wiz → "Chris Test — @wizard · You"
    • task quick-add @wiz → "Chris Test @wizard (you)"
  • pnpm typecheck green; 1683 tests across apps/web, packages/ui, packages/editor pass.

All touched packages (@xnetjs/ui, @xnetjs/editor, xnet-web) are private — no changeset required.

🤖 Generated with Claude Code

@crs48
crs48 temporarily deployed to pr-464 July 10, 2026 22:57 — with GitHub Actions Inactive
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

✓ Changelog fragment found — thanks!

@crs48
crs48 temporarily deployed to pr-464 July 10, 2026 23:00 — with GitHub Actions Inactive
xNet Test added 2 commits July 10, 2026 16:01
Setting a username (@handle, 0172 phase 4) only wired handle matching into
the chat composer picker — every other @mention surface filtered on display
name and DID alone, so a freshly set handle surfaced nobody:

- comments and task inputs: TaskPersonOption now carries the handle,
  filterTaskPeople matches it, and useCommentPeople/useWorkspacePeople
  resolve it from Profile nodes (task surfaces previously resolved no
  profile metadata at all — they now show real names too)
- page editor mentions: TaskMentionSuggestion carries the handle,
  filterSuggestions matches it, and buildPersonMentionSuggestions passes
  it through from profiles
- chat: mergeMentionables no longer drops self, so typing your own new
  @handle finds you — listed last and labelled "(you)" so it never crowds
  out collaborators; self-mentions stay notification-safe (rules already
  ignore self-authored changes)

Mention menus render the muted @handle next to the display name so it is
visible why an option matched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
@crs48
crs48 force-pushed the claude/username-autocomplete-bug-482cc9 branch from 89ab23c to 293465e Compare July 10, 2026 23:01
@crs48
crs48 temporarily deployed to pr-464 July 10, 2026 23:01 — with GitHub Actions Inactive
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Preview removed for PR #464.

github-actions Bot added a commit that referenced this pull request Jul 10, 2026
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

🖼️ UI changes in this PR

Interactions

🎬 Open a channel and post a message

Open a channel and post a message

▶ Watch MP4

🎬 Create a page and use the editor

Create a page and use the editor

▶ Watch MP4

Auto-captured by CI · run. Informational — not a blocking check.

github-actions Bot added a commit that referenced this pull request Jul 10, 2026
@crs48
crs48 temporarily deployed to pr-464 July 10, 2026 23:24 — with GitHub Actions Inactive
github-actions Bot added a commit that referenced this pull request Jul 10, 2026
github-actions Bot added a commit that referenced this pull request Jul 10, 2026
@crs48
crs48 merged commit 012503d into main Jul 10, 2026
15 checks passed
@crs48
crs48 deleted the claude/username-autocomplete-bug-482cc9 branch July 10, 2026 23:32
github-actions Bot added a commit that referenced this pull request Jul 10, 2026
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