Repository navigation
Conversation
A developer who isn't on /dev/null yet gets a profile at /@username once an approved commit mentions them: their GitHub name and avatar, how many members follow them on GitHub and are waiting to follow them here, and the commits that mention them. Signing in claims it, turns those mentions into regular ones and brings the waiting followers over.
Scheduled commits keep their mentions as plain text, waiting followers across a block from the viewer are left out, the sign-in job keeps the username it was dispatched for, and a rate-limited follows:pending run keeps its resume point.
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Mention conversion can permanently lose captured identities through concurrent updates and numeric-key renumbering.
2 open issues
What changed in this PR
Adds public, unclaimed profiles for mentioned GitHub developers, connecting existing mentions and waiting followers when they join.
Changes:
- Adds cached GitHub profile lookup, profile rendering, and mention links.
- Stores pending mentions and follows, with sign-in conversion and backfills.
- Adds tests and documents the new behavior.
| File | Description |
|---|---|
| tests/Unit/LinkifiedText.test.tsx | Tests unclaimed mention links. |
| tests/Unit/Actions/UpdateOrCreateUserTest.php | Tests claiming mentions on sign-in. |
| tests/Unit/Actions/UpdateCommitMentionsTest.php | Tests mention conversion. |
| tests/Unit/Actions/CreateUserGitHubFollowsTest.php | Tests pending follow imports. |
| tests/Unit/Actions/CreatePendingMentionsTest.php | Tests pending mention capture. |
| tests/Unit/Actions/CreatePendingFollowsTest.php | Tests pending follow storage. |
| tests/Feature/PendingMentionsBackfillTest.php | Tests historical mention backfill. |
| tests/Feature/Controllers/UnclaimedProfileTest.php | Tests profile visibility, lookup, and caching. |
| tests/Feature/Commands/ImportPendingGitHubFollowsTest.php | Tests follow backfill and failures. |
| resources/js/pages/user/unclaimed.tsx | Adds the unclaimed profile page. |
| resources/js/components/linkified-text.tsx | Links uncaptured mentions to profiles. |
| resources/js/components/commit-body.tsx | Enables unclaimed links in posted commits. |
| PRODUCT.md | Documents behavior and deployment command. |
| KNOWLEDGE_BASE.md | Explains unclaimed profiles to users. |
| database/migrations/2026_10_19_170002_create_pending_follows_table.php | Creates pending follow storage. |
| database/migrations/2026_10_19_170001_backfill_pending_mentions.php | Backfills historical mentions. |
| database/migrations/2026_10_19_170000_create_pending_mentions_table.php | Creates pending mention storage. |
| database/factories/PendingMentionFactory.php | Supplies pending mention fixtures. |
| database/factories/PendingFollowFactory.php | Supplies pending follow fixtures. |
| app/Services/PageMetadata.php | Adds non-indexable profile metadata. |
| app/Queries/PendingMentionCommitsQuery.php | Retrieves visible mentioning commits. |
| app/Queries/PendingFollowersQuery.php | Counts and previews waiting followers. |
| app/Queries/GitHubAccountQuery.php | Fetches and caches personal GitHub accounts. |
| app/Models/User.php | Adds pending follow relationship. |
| app/Models/PendingMention.php | Models unclaimed mentions. |
| app/Models/PendingFollow.php | Models waiting follows. |
| app/Models/Commit.php | Adds pending mention relationship. |
| app/Jobs/UpdateCommitMentionsJob.php | Queues mention conversion. |
| app/Http/Requests/ShowUserRequest.php | Resolves registered or unclaimed profiles. |
| app/Http/Controllers/UserController.php | Serves unclaimed profiles and redirects owners. |
| app/Dto/GitHubAccount.php | Maps GitHub account data. |
| app/Console/Commands/ImportPendingGitHubFollowsCommand.php | Adds resumable follow backfill. |
| app/Actions/UpdateOrCreateUser.php | Dispatches mention conversion after sign-in. |
| app/Actions/UpdateCommitMentions.php | Converts pending mentions into captured identities. |
| app/Actions/CreateUserGitHubFollows.php | Imports waiting followers. |
| app/Actions/CreatePendingMentions.php | Captures unregistered usernames. |
| app/Actions/CreatePendingFollows.php | Stores follows toward unregistered accounts. |
| app/Actions/CreateCommit.php | Captures pending mentions during creation. |
Review effort: Balanced
Reuse MemberStack, shared commit scopes and the default preview image, claim mentions from the sign-in controller only for new usernames, keep only what the profile shows of GitHub accounts and wait a minute before asking GitHub again after a failure.
Wait for the rate limit to reset when fewer than 2,000 requests are left, so sign-ins keep importing their follows, and read whom users follow by their username instead of looking up their login first.
The command now queues a job that reads a batch of users and queues the next one, waiting for the GitHub rate limit to reset whenever fewer than 2,000 requests are left, so it can run unattended from Laravel Cloud.
…profiles # Conflicts: # PRODUCT.md
This was referenced Nov 1, 2026
Closed
Member
Author
|
Replaced by #1406 and up |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


A developer who isn't on /dev/null yet gets a profile at
/@usernameonce an approved commit mentions them. The goal is to make well-known GitHub developers want to join.After deploying,
php artisan follows:pendingbackfills the pending follows of existing members. Without it, nobody shows as "waiting" until new members sign in.Not included yet:
@everyonelinks to a 404, withrel="nofollow".Guest, desktop
Dark mode
Mobile
Signed-in member (no "I am" button)
Nobody waiting yet
Mention link in the log