All updates
QAFrontend

User Assignment Pickers Now Search the Full User Directory (QA)

PR #945pixbox-supportApr 6, 2026 · 04:15 UTC
QAApr 6, 2026

Executive summary

This QA release completes the move of every user-picker in the Mail app to server-side paginated search. Previously these pickers silently loaded only the first 100 users; now any user in the directory is discoverable via type-to-search, even in large tenants. The change spans Folders, Departments, Batches, Mail assignment, comment @mentions, and the Resolution Center, and also corrects a Documents grid column that was showing blank user names.

Why this was needed

A backend change added pagination to the users-with-details endpoint, which capped the old shared loader at the first 100 users. In any tenant with more than 100 users, anyone beyond that cutoff was effectively invisible in assignment dropdowns and @mention popovers, with no error to indicate users were missing. This release migrates all callers to proper paginated search and deletes the truncating wrapper so the silent-cutoff problem cannot recur. Separately, the Documents grid was showing a dash instead of the user's name in user-reference columns after the backend changed those fields to plain strings.

Client / user impact

  • Every user can be found and assigned in large tenants; assignment is no longer limited to the first 100 users.
  • Affected surfaces: Folder Assign/Edit/Bulk-Assign Users, Department user assignment, Mail and Batch "Assigned To" fields, the single and bulk Assign User modals, comment @mention autocomplete, and the Resolution Center Assigned Users picker.
  • Pickers now search the directory as you type instead of loading a partial fixed list.
  • Mouse-wheel scrolling works inside the dropdown lists, and a "Showing X of Y results" counter confirms how many total matches exist.
  • Documents grid user columns (assigned to, assigned by, completed by, proofread by) now display the username instead of a blank dash.

Technical scope

Frontend-only release of the Mail app from dev to QA. Notable changes:

  • Paginated users migration (closes DSM_Dev#944): all remaining callers of /v1/users/with-details now call getUsersWithDetailsPaginated directly. Migrated surfaces include AssignUsersStep (Folders/Departments) via a new fetchAvailableUsers callback with debounced search; AssignUserModal/BulkAssignUserModal, MailForm.assignedTo and BatchForm.assigned_to (Select to AsyncSelect); the Comments @mention flow (useMentions, MentionPopover); and Resolution AssignedUsers (entity/role-scoped). Workspace scoping is inherited from the X-Workspace-Tenant-IDs request header.
  • Removed: userServices.getUsersWithDetails compat wrapper, the useGettAllUsersByDetails hook, and the USERS_WITH_DETAILS_MAX_LIMIT constant.
  • Shared UI fixes: multiple-selector.tsx and async-select.tsx overflow override to restore mouse-wheel scroll; always-visible results counter in AsyncSelect.
  • Documents: DocumentContents.tsx renders user-reference columns as strings (with a legacy object fallback).
  • CI tooling (not user-facing): .github/workflows/claude.yml updated to run automated PR reviews.

Risk & mitigation

Moderate. This touches many user-facing pickers at once and changes how each fetches and pre-selects users, so regressions would surface as missing selections or broken edit-mode hydration rather than crashes. Pre-selection in edit mode is handled per-form by label-resolver logic, which is the most likely place for an off-by-one or stale-label bug. Mitigation: typecheck and lint pass; the deprecated wrapper is fully deleted so no caller can fall back to the truncating path; this is a QA promotion so the changes are exercised in testing before any production push.

QA validation focus

  • In a tenant with more than 100 users, confirm a user beyond position 100 is findable by search in every picker below.
  • Comments drawer: type @, search, select, and post a comment with a mention; verify inline-edit and thread-reply composers behave the same.
  • Folders: Add Folder, Edit Folder (pre-assigned users hydrate), and Bulk Assign (2+ folders) Assign Users steps; verify transfer-list search and pagination.
  • Departments: Add/Edit user picker.
  • Mail row action Assign User modal and Mail bulk Assign User modal: search, paginate, save.
  • Mail Add Mail "Assigned To" and Batches "Assigned to Internal User": verify in both add and edit mode the saved name shows immediately.
  • Resolution Center Assigned Users picker in edit mode: search, paginate, save.
  • Verify mouse-wheel scroll works in every dropdown and the "Showing X of Y results" footer appears.
  • Documents grid: confirm assigned-to/assigned-by/completed-by/proofread-by columns show usernames, not a dash.