All updates
ProductionQAFrontend

QA Promotion: Persistent Mail Read Status, Admin Hub Folder Modal Cleanup, and Platform Hardening

PR #506pixbox-supportOct 7, 2025 · 16:40 UTC
QAOct 7, 2025
ProductionOct 7, 2025

Executive summary

This release promotes a batch of frontend changes to the QA environment. The headline functional change is that toggling a mail's Read/Unread status now saves to the server instead of resetting on reload. It is bundled with an Admin Hub folder-modal refactor (PR #504), a code-quality and type-safety hardening pass (PR #505), and several smaller inbox and sharing fixes.

Why this was needed

The mail detail page previously had a Read/Unread switch that only updated local state with a developer placeholder comment, so the choice was lost on refresh. Separately, the Admin Hub folder modals carried duplicated, fragile logic for reading department and user data across several possible API response shapes, and the codebase had accumulated loosely typed service and error-handling paths that the team wanted to tighten before further feature work.

Client / user impact

  • Marking a mail as Read or Unread now persists across reloads and sessions; the switch shows a pending state while saving and reverts with an error toast if the save fails.
  • Adding and editing Admin Hub folders is more reliable when assigning departments and users, reducing edge cases where assignments did not populate correctly.
  • Clearing sidebar filters now also clears the search box, and batch document views correctly show inline search actions.
  • Filter dropdowns with long option lists now load more results as the user scrolls.
  • These are QA-environment changes for validation and are not yet in Production.

Technical scope

Bundles feature/fix commits plus two merged PRs (#504 Admin Hub folder UI, #505 ES lint / type hardening) across 54 files (+1879 / -657):

  • Mail read status (mails/[id]/page.tsx): replaced the local-only stub with useUpdateReadStatusMutation, optimistic toggle, rollback on error, and a disabled state while pending.
  • Folder modals (AddFolderModal, EditFolderModal): extracted shared department.utils.ts and folderUsers.utils.ts to normalize varied API payload shapes (items / folders / array) into consistent options.
  • Lint & types (PR #505): added scripts/run-lint.js wrapper; hardened http/http.ts, http/api.ts, and errorhandler.utils.ts; tightened typing on TanStack mutations, services (inbox, mailSharing, organization, grid-columns, addressManagement), and Rules action payload parsing.
  • Inbox/UX: clear-search on filter clear and route detection in page-sidebar.tsx; infinite scroll + loading states in column-filter-popover.tsx; refinements to share dialogs, address-component edit modals, and Resolution Center status/assignment flows.

Risk & mitigation

Moderate but broad: this is a wide promotion touching shared HTTP, error-handling, and typing utilities used across many screens, so regressions could surface beyond the changed features. Most changes are refactors that preserve behavior, and the new read-status mutation rolls back its UI on failure. Mitigation: full QA regression on mail detail, Admin Hub folders, inbox filtering, and sharing before any Production promotion.

QA validation focus

  • Toggle mail Read/Unread, reload the page, and confirm the status persists; simulate a failed save and confirm it reverts with an error toast.
  • Add and edit folders in Admin Hub; verify department and user assignments populate, save, and reflect correctly.
  • Clear sidebar filters and confirm the search input also clears; open a batch document view and confirm inline search appears.
  • Open a filter dropdown with many options and scroll to confirm additional results load.
  • Smoke-test share-within-system, share-via-email, address-component editing, and Resolution Center status/assignment for no regressions.