[go: up one dir, main page]

Skip to content

POC: Add @@ autocomplete for special user types (maintainers/admins)

Summary

This is a proof of concept that demonstrates how to add a new @@ autocomplete trigger that filters users by special types (e.g., maintainers, admins, or other access levels).

How it works

Current @ mention behavior:

  • @ triggers autocomplete for all users in the project/group context
  • Returns up to 10 users based on search query
  • Endpoint: /-/autocomplete/users.json

New @@ mention behavior:

  • @@ triggers autocomplete for special users only (maintainers and above)
  • Filters users by minimum access level (configurable)
  • Endpoint: /-/autocomplete/special_users.json
  • Visual indicator (badge) shows these are special users

Changes

Backend (app/controllers/autocomplete_controller.rb)

  • Added special_users action that filters users by access level
  • Added filter_special_users method to check project/group membership
  • Filters for maintainer-level access and above

Frontend (app/assets/javascripts/gfm_auto_complete.js)

  • Added @@ trigger configuration
  • Added setupSpecialMembers method
  • Added visual badge to indicate maintainer/admin status
  • Configured backend filtering for the new trigger

Routes (config/routes.rb)

  • Added GET /-/autocomplete/special_users endpoint

Demo

When typing @@ in a comment or description field:

  1. Autocomplete dropdown appears
  2. Only shows users with maintainer+ access
  3. Each user has a "Maintainer+" badge
  4. Selecting a user inserts @@username

Future enhancements

This POC could be extended to:

  • Support different user filters (e.g., @@admins, @@reviewers, @@owners)
  • Make access level configurable via query params
  • Add different visual indicators for different roles
  • Support team-specific mentions (e.g., @@backend-team)

Testing

To test locally:

  1. Navigate to any issue/MR comment field
  2. Type @@ followed by a search term
  3. Verify only maintainers/admins appear in dropdown
  4. Verify badge appears next to each user

cc: @gitlab-org/maintainers

Merge request reports

Loading