QA Batch: Theme Personalization, Password Recovery, Multi-Document PDF Splitting & UI Fixes
Executive summary
This QA release promotes a large batch of frontend work to the testing environment, headlined by a new theme and personalization system (custom DSM themes, dark-palette support, adjustable font size, and a theme-aware logo), a self-service forgot/reset-password flow, a threaded comments drawer on mail details, and a multi-document upload experience that lets users split a PDF into separate document segments by page range. It also bundles async-paginated dropdowns, refined mail scheduling controls, and a sizable set of bug fixes across grids, filters, and document details.
Why this was needed
Clients on smaller screens were manually zooming the browser to read content, and the app's hard-coded color palette could not adapt to dark mode or branded themes. Users also lacked a self-service way to recover a forgotten password, an in-context way to discuss a mail item, and an efficient way to break a single multi-document PDF into its constituent documents. Several existing screens additionally had nagging usability defects (stuck save buttons, filter state not resetting, lists not refreshing, broken pagination).
Client / user impact
Users can now personalize the interface (theme, dark mode, font size) so it fits their screen and preference, and reset their own password without contacting support. Reviewers can open a threaded comments panel directly from a mail item and split a combined PDF into individual documents during upload. Long dropdowns load incrementally instead of all at once, and numerous day-to-day annoyances in mail, document, and admin screens are resolved, making routine work smoother and more reliable.
Technical scope
Grounded in the diff (~100 files, +10,432/-2,010):
- Theme & personalization: replaced hard-coded
slate/whiteTailwind classes with tokenizedbg-background/bg-card/text-foreground/border-borderacross mail, document, inbox, and notification surfaces; added custom DSM themes (e.g. Horizon, Lumina) with CSS-variable presets, a font-size/density personalization sheet exposed from the header, theme-bootstrap script to avoid flash-of-unstyled-content, and dynamic theme-aware sidebar logo (dsm-horizon.png). Planning docai_docs/personalization.mdadded. - Password recovery: new
/forget-passwordand/reset-passwordroutes with dedicated form components, copy constants, and rate-limit handling (FORGOT_PASSWORD_RATE_LIMIT_CODE). - Comments: integrated
CommentsDrawer+CommentsTriggerButtoninto mail details (with tooltip), plus composer, thread view, message bubble, and mention styling updates. - Multi-document / split PDF: document-upload feature builds segment cards with editable inclusive page ranges (
pageRange.start/end), a sharedPdfDocumentcontext for thumbnails, manual "Add Range" creation, shared-metadata application, loading skeletons, and resizable preview panels. - Async pagination: shared shadcn-styled
react-select-async-paginateclassNames across contact/department/mail components. - Scheduling: expanded
DateTimePickerwith granular controls. - Bug fixes: mail-scoped document-type cache invalidation on delete/quick-upload, organization-view column sorting, filter popover reset/cancel logic (
handleResetLocalFilter, effective-filter detection in DataGrid), pagination number fix, edit-document-type step-2 save, and bulk-update status modal state reset. - Deps: added
react-virtuoso; bumpedfilestack-js3.41→3.44,motion/framer-motion12.23.12→12.23.24,query-string9.2→9.3.
Risk & mitigation
Risk is moderate due to breadth: the theme tokenization touched many shared layout files, so the main regression risk is incorrect colors/contrast in light, dark, and custom themes. The forgot/reset-password flow and comments drawer are new user-facing surfaces. Mitigation: changes are CSS-token and component-level (no backend schema changes here) and are landing in QA specifically for verification before production; visual and flow testing across themes should catch regressions early.
QA validation focus
- Switch between light, dark, and each custom theme (Horizon/Lumina); confirm mail details, document details, inbox grid, notifications, and tabs render with correct contrast and the sidebar logo updates per theme.
- Verify font-size/density personalization persists and scales the UI without breaking layouts.
- Run the full forgot-password -> email -> reset-password flow, including the rate-limit/error path.
- Open the comments drawer from a mail item; post, view threads, and mentions.
- Upload a multi-page PDF, split it into segments by page range, edit ranges, add a manual range, and submit; confirm previews match selected pages.
- Confirm bug fixes: column sorting in Organization view, filter popover reset/cancel, pagination numbers, edit-document-type step-2 save, and that documents/document-types refresh after quick upload or deletion.
- Smoke-test async-paginated dropdowns (contacts, departments) load incrementally.