Skip to content

feat: add contributor achievement badge - #904

Open
farischt wants to merge 2 commits into
dev-null-sh:productionfrom
farischt:feat/contributor-badge
Open

farischt wants to merge 2 commits into
dev-null-sh:productionfrom
farischt:feat/contributor-badge

Conversation

@farischt

Copy link
Copy Markdown

Adds a permanent contributor achievement for GitHub contributions to /dev/null, visible in profile achievements without awarding XP or making GitHub requests during profile rendering.

  • Synchronize issue/PR authors, default-branch commit authors, issue comments, and inline review comments hourly, matching immutable GitHub account IDs.
  • Credit successful in-app reports immediately. Badge persistence failures preserve the created issue response and quota accounting, with queued retries and recovery records if queueing fails.
  • Backfill historical in-app reporters using reviewed issue-to-GitHub-ID mappings, verifying the repository, app author, and attribution footer before any awards. Current username ownership is never used to infer historical identity.

Approval-only reviews and commits without a linked GitHub author are outside this scope.

Validation

  • 3,651 PHP tests and 20,605 assertions passed with 100% line coverage.
  • PHPStan, Pint, Rector, and 100% PHP type coverage passed.
  • Frontend tests, production build, TypeScript, and lint passed; the follow-up fixes affect PHP, tests, and documentation only.

Deployment

Apply the users migration, keep the Laravel scheduler and default queue worker running, and run php artisan contributors:sync once. Historical reports require a reviewed local mapping passed to contributors:backfill-reporters. README documents configuration and recovery.

Closes #894

Retry failed badge awards by immutable GitHub ID without failing successful issue submissions. Add verified historical reporter backfills that do not infer identity from current usernames.

Refs dev-null-sh#894
@paulinevos

Copy link
Copy Markdown
Contributor

I love the idea, but the action/sync/command structure could use some thought. There's some duplication in logic between syncing and backfilling for instance. Btw could you add a screenshot so we can see what the icon looks like? :v

@paulinevos

Copy link
Copy Markdown
Contributor

Oh also! Please check if there's not just an endpoint for contributors in the GH API. Pretty sure there is!

@paulinevos

paulinevos commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Do note there's a similar PR open here: #800

@hbenabdallah

Copy link
Copy Markdown
Contributor

Overlaps with #741, which also adds a contributor badge (#894).

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.

Contributor badge

3 participants