====== New Features ====== *Support Rocky Linux 9.x. *Support PHP 7.4. *Support Redis connections with password authentication. *Add Redis schema caching. *Disable outbound calling for paused agent extensions. *Add a `label` field to the DNC (Do-Not-Call) list and display it in the Campaign page options. *Change the date format and list display for the DNC list. *When an agent receives an agent-group reload notification, the agent page now shows an automatic reload countdown (the countdown duration is provided in the event). *Modifying an agent group's auto-hangup parameters now triggers a reload of the queue configuration file. *Login will be blocked after a certain number of incorrect password attempts. *Add filters for agent groups and outbound tasks in the outbound summary. *Switch to an HTML5-based player for announcements and voicemails. *Support separate storage of two-channel (stereo) WAV files (store channels separately). *Allow non-admin users to import bulk (mass) campaigns/lists. *Add group polling (round-robin) routing option. *Play a voice prompt when the IVR dials an external line. *Import now supports `.xlsx` files. ====== Bug Fixes ====== *When deleting entries from the outbound blacklist, deletion now uses the entry ID to fix the issue where hidden numbers couldn't be removed. *Fix an AGI bug where DNC list matching was incorrectly case-insensitive. *Fix out-of-memory issues caused by excessively large blacklist data. *Recording export: optimize packaging to avoid MySQL connection failures when packaging/exporting very large numbers of files. *Fix SQL query conditions for `campaign_dncs` in AGI. *Fix SQL conditions used when AGI looks up inbound accounts. *Fix call drops when transferring outbound agents to IVR. *Fix failure to create the `bind_phone` table caused by an overly long `tablename` field. *Fix issue where transferred calls could not be hung up. *Resolve permission issues for users in sub-CDR team management. *Make statistics tolerant when `pause_reason` is empty (handle empty `pause_reason` gracefully). *Improve knowledge base attachment display. *Fix issue where outbound transfers did not enter the scoring/quality-evaluation workflow. *Pre-dial polling now calls an API to validate/check target numbers. *Fix authorization failures caused by insufficient disk space. *Fix display of customer names on inbound customer-service calls. *Add a quality-check scope parameter and fix recording playback issues. *Fix an issue that prevented non-administrators from editing work hours. *Fix an issue in newer Nginx HTTP Push where multiple events were missing trailing `\r\n`. *Fix incorrect status values when adding trunk/group relay rules.