Skip to content

feat: link mentions of anyone to their page, which looks them up on GitHub - #1409

Merged
mnapoli merged 1 commit into
productionfrom
feat/mentions-of-unclaimed-developers
Nov 3, 2026
Merged

mnapoli merged 1 commit into
productionfrom
feat/mentions-of-unclaimed-developers

Conversation

@mnapoli

@mnapoli mnapoli commented Nov 2, 2026 •

Copy link
Copy Markdown
Member

Summary

Stacked on #1407. In commits and replies, a mention of someone who isn't on /dev/null used to stay plain text. Now any @handle that isn't a known member or organization links to /@handle, where #1406's page looks the account up on GitHub for members, and asks guests to sign in.

Nothing is stored and nobody is notified: the link is all there is.

Changes

  • LinkifiedText links these mentions with rel="nofollow", the same style as other mentions, and without prefetch. Guests get a missing page, and a feed would otherwise ask for it on every hover. I added this case to the never-prefetch list of the frontend guidelines.
  • Remotes keep these mentions as text, as they already do for organizations: MessageText passes linksEveryMention={false}.
  • Static bodies (excerpts in notifications, quoted commits) and code stay text, as before.
  • Side effect: in the composer preview, a mention is already a link before the server answers, so nothing shifts when the answer comes.

Decisions

  • Mentions of people who aren't here? Just a link to their page, which does the rest. No stored mentions, no Mentions tab, no notification to someone without an account.
  • Search and autocomplete of unclaimed profiles? Dropped for now.

Visual evidence

None: the link looks exactly like a mention of a member. The LinkifiedText, CommitPoll and ComposerPreview tests cover the markup.

Limitations

  • A mention of a handle nobody has on GitHub leads to "GitHub has no @x".
  • The API is unchanged: apps already get every mention's position, and decide themselves what to link.

Summary by CodeRabbit

  • New Features
    • Mentions in commits and replies now link to the mentioned person’s profile, even when their account isn’t recognized. These links do not notify people who aren’t on /dev/null.
    • Typing @ followed by a few letters can suggest organizations with existing pages after developer suggestions.
    • Signed-in members can look up people on GitHub from their profile pages.
  • Documentation
    • Clarified where mentions link and how they behave.
  • Bug Fixes
    • Links to unrecognized profiles aren’t prefetched.

@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Caution

Review failed

The pull request is closed.

No actionable comments were generated in the recent review.

Walkthrough

Unresolved mentions now link to /@handle by default. LinkifiedText and CommitBody support disabling these fallback links, and chat rendering disables them. Known user and organization mention links remain unchanged.

Changes: Mention linking

Layer / File(s) Summary
Unresolved mention fallback links
resources/js/components/linkified-text.tsx, tests/Unit/LinkifiedText.test.tsx, tests/Unit/CommitPoll.test.tsx, tests/Unit/ComposerPreview.test.tsx
LinkifiedText links unresolved mentions to /@handle by default. Setting linksEveryMention={false} leaves them as text. The tests expect fallback links in commit polls and mention previews.
Commit body and chat controls
resources/js/components/commit-body.tsx, resources/js/components/chat/message-parts.tsx, .ai/guidelines/resources.js.blade.php, KNOWLEDGE_BASE.md
CommitBody forwards linksEveryMention through quoted and unquoted content. Chat disables fallback links. The prefetch rule excludes unresolved handles, and the knowledge base documents mention behavior.

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Feature

Possibly related issues

  • [RFC] Orgs #938: The RFC defines organization mentions and pages; this change adds fallback profile links for unresolved handles that may identify organizations.

Possibly related PRs

  • dev-null-sh/dev-null.sh#1156: Moves GitHub handles to Profile; this change uses handle-based profile routes for unresolved mentions.
  • dev-null-sh/dev-null.sh#1348: Updates commit mention rendering in LinkifiedText; this change adds fallback links for unresolved handles.
  • dev-null-sh/dev-null.sh#1262: Adds organization-aware mention resolution; this change adds links when handles do not resolve to known users or organizations.

Suggested reviewers: nunomaduro, xheaven

Merge Risk: Low · up to d0e10

Unknown poll-option handles become clickable profile lookups instead of remaining plain text; this is a localized, low-risk regression.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title "feat: link mentions of anyone to their page, which looks them up on GitHub" matches the main change. The PR adds links for @handle mentions that are not known members or organizations, and …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title "feat: link mentions of anyone to their page, which looks them up on GitHub" matches the main change. The PR adds links for @handle mentions that are not known members or organizations, and those links point to /@handle, which looks the account up on GitHub for members. The raw summary and objectives both describe this change, and the title does not name anything absent from the changeset. The title is 74 characters, which is slightly long but still clear.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 5 functions across 7 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 25763d1d-8f56-4f3d-8217-5061be7752f8
Commits

Reviewing files that changed from the base of the PR and between e45c1b3 and 2a71934.

Files selected for processing: 1
  • KNOWLEDGE_BASE.md
Files skipped from review as they are similar to previous changes: 1
  • KNOWLEDGE_BASE.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

@mnapoli
mnapoli added this pull request to stack #1408 November 2, 2026 23:42
@mnapoli
mnapoli marked this pull request as ready for review November 2, 2026 23:44
@mnapoli
mnapoli force-pushed the feat/mentions-of-unclaimed-developers branch from 1d51903 to e45c1b3 Compare November 3, 2026 00:19
@mnapoli
mnapoli force-pushed the feat/mentions-of-unclaimed-developers branch 2 times, most recently from 2a71934 to f0caecb Compare November 3, 2026 13:49
@mnapoli
mnapoli force-pushed the feat/mentions-of-unclaimed-developers branch from f0caecb to 5d2211c Compare November 3, 2026 13:49
Base automatically changed from feat/waiting-followers to production November 3, 2026 14:03
@mnapoli
mnapoli force-pushed the feat/mentions-of-unclaimed-developers branch from 5d2211c to d0e10ea Compare November 3, 2026 14:03
@mnapoli
mnapoli merged commit a73dea5 into production Nov 3, 2026
14 of 15 checks passed
@mnapoli
mnapoli deleted the feat/mentions-of-unclaimed-developers branch November 3, 2026 14:13
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