All updates
QAFrontend

QA Promotion: Admin Hub Upload Centers, Faster ARM64 Builds, and Admin/Mail Grid Fixes

PR #1006pixbox-supportMay 18, 2026 · 14:05 UTC
QAMay 18, 2026

Executive summary

This release promotes a batch of development work into the QA environment (~8,300 lines changed across 79 files). The headline feature is Admin Hub upload-center management in the mail app: tenant-scoped upload-center lists, a pickup-frequency change/approval workflow, 30-day analytics with KPI tiles and a timeline chart, and a pickup-charge configuration browser. It also bundles a major build-infrastructure fix that resolves slow/hanging container builds on ARM64, several admin-portal grid bug fixes, and a set of mail grid, export, and selection corrections.

Why this was needed

Three needs drove this batch. (1) Operators needed an in-product way to manage upload centers, approve pickup-frequency changes, view usage analytics, and review charge rates, replacing the gaps in the new portal. (2) After migrating QA/Production hosts from AMD64 to ARM64, container builds slowed to 1h40m-2h or hung outright, blocking deployments. (3) QA filed multiple defects in the admin portal and mail grids (empty Email Reminders grid, wildly inflated pagination counts, missing tenant detail page, broken/awkward filters, and selection-unaware exports/downloads).

Client / user impact

  • Admin/mail operators get new Admin Hub screens: upload-center list (with pickup frequency, pending-request indicator, and current charge rate inline), a detail page to submit/approve/reject/cancel pickup-frequency changes, a 30-day analytics dashboard (10 KPIs plus a daily area chart), and a pickup-charge browser.
  • Deployments are unblocked: ARM64 builds are expected to drop from ~2 hours to under ~10 minutes.
  • Admin portal fixes: the Email Reminders grid now loads data, Page Statistics shows correct pagination counts (was rendering ~18,000+ pages), a per-tenant Page Statistics detail page is restored, and Upload Tasks / Notification Policies gain Apply/Clear filter controls.
  • Mail grid fixes: exports, sync, and bulk downloads now respect the user's row selection and active filters; empty contact fields show a placeholder instead of blank.

Technical scope

Notable changes bundled into this dev to qa promotion:

  • Admin Hub upload centers (PR #986/#987): new mail routes under /adminhub/upload-centers, /upload-centers/[id], and /pickup-charges; 14 endpoints wired via adminHubUploadCenter.services.ts with dedicated TanStack queries/mutations under an ["admin-hub", ...] key namespace; frequency-approval flow handling 409/403/404; charge rate-immutability on edits; adds Recharts ^3.8 for the timeline chart.
  • ARM64 build fix (PR #988): Dockerfile switched from node:20-alpine (musl) to node:20-bookworm-slim (glibc); moved pnpm.overrides (canvas to @napi-rs/canvas) to the root package.json; added supportedArchitectures to pnpm-workspace.yaml; set COREPACK_HOME=/opt/corepack so the non-root runtime user can read the prepared pnpm binary.
  • Admin portal fixes (PR #992/#994): Email Reminders list unwrap fix (BUG-037); Page Statistics pagination uses totalPages/totalCount instead of the domain stat total_pages_count (BUG-038); new /page-statistics/tenant/[id] detail page with 4-tab grid and malformed-ID rejection (BUG-039); Apply/Clear filters on Upload Tasks and Notification Policies (Tenant/Event Type/Status).
  • Mail grid/export fixes (PR #997/#999/#1000/#1001): selection-aware xlsx export for batches and documents (BUG-022/BUG-007), selection-respecting bulk downloads/sync honoring inbox filters, and an empty-contact-field placeholder.

Risk & mitigation

Moderate, given the breadth. The build-infra change (base image, lockfile, overrides) is the highest-risk item: it alters how images are produced, so a bad lockfile could reintroduce slow builds or WASM SWC fallback. Mitigation: the commit ships an explicit post-deploy verification checklist (arch, glibc vs musl, no WASM fallback, expected build time). The Admin Hub feature is large but additive and net-new, with UI permission gates plus server-side enforcement; cache-invalidation and timezone edge cases were addressed in PR review. Grid/export and pagination fixes touch shared mail grid code, so regressions in unrelated grids are possible. Overall: changes are at QA, not Production, so issues are caught before client exposure.

QA validation focus

  • Build/deploy: run the ARM64 verification steps (uname/arch, glibc not musl, @napi-rs/canvas not canvas@2.x, no WASM SWC fallback) and confirm build time dropped.
  • Admin Hub: list shows pickup frequency, pending indicator, and charge rate; submit/approve/reject/cancel a frequency change (verify self-approve 403, duplicate-pending 409, out-of-scope 404); confirm analytics KPIs and timeline chart render and refresh after writes; verify pickup-charge edits cannot change an existing rate.
  • Admin portal: Email Reminders grid populates; Page Statistics pagination count is realistic; tenant detail page opens via Details/deep link and rejects malformed IDs; Apply/Clear filters work on Upload Tasks and Notification Policies.
  • Mail grids: with rows selected, confirm xlsx exports (batches + documents), sync, and bulk downloads include only the selection and respect active inbox filters; verify empty contact fields show the placeholder.
  • Regression-check other mail grids (inbox, documents, batches) for layout/selection side effects.