NEW: [Bootstrapper] "has_dns_only" build option installs a lightweight ApisCP for use with DNS-only. [Dashboard] show ban reason, corresponding API command rampart:get-reason(). [DNS] $hostname available in DNS templates as a composition of $subdomain + $zone. [DNS Manager] show DNS zone information in Toolbox. [Mail] MXRoute provider (see docs.apiscp.com/admin/mail/Mxroute/). [Process] unshare support. Namespace resources (files, PIDs, UIDs, network) prior to running a process. [Scopes] cp.screenshots - enable screenshot support; cp.whitelist-login - always permit CP login (see SECURITY.md for Anvil). [stats] vmstat()- report virtual memory statistics. [UI] rspamd app now available for admins. [Web Apps] learning mode duration. [Web Apps] screenshot support. Enabled automatically if has_low_memory wasn't set at install time. May be manually enabled using the cp.screenshots Scope. web:inventory-capture() performs an en masse screenshot acquitisition. FIXED: [Dev] prune unreachable methods during intellisense stub generation. [file] recursive chown repeatedly calls fsmount for each directory chown'd [Import] accept mailman list names with underscores. [PHP] PHP-FPM cache inspection could leave behind its inspection script in certain conditions. [PHP] webp support for PHP 7.4. [Process] argument decomposition incorrectly handles nested quotes. [Opcenter] "True"/"False" parsed as literals. [Scopes] cp.config automatic postback ignores numeric input types. [Virtualhosting] binding additional IPs before nm readies drops the active interface from nm's control. Relocate virtualhosting.service until after network-online.target to ensure nm has completed upstream acquisition. ISO/IEC 9899:2011 workaround for last IP in multihomed environment. CHANGED: [admin] admin:collect() now supports invoice selection. Works with both primary and subordinate accounts (billing,invoice/billing,parent_invoice). [billing] implement billing:get-package-type(). [Bootstrapper] improved CentOS 8+ support. [build] Always drop privileges using git. If root privileges are required for git hooks, set "apnscp_build_helper" in Bootstrapper with a custom build script. set-repo-user.sh in build/ may be used to update remote credentials to the effective username if previously supplied credentials assumed "root". [cgroup] get-usage() CPU cumulative usage refers to 24 hours, previously 240 hours. Add cumsystem, cumuser that refer to cumulative usage since uptime. system/user fields refer to same value over 24 hour window. [DNS] get-records() accepts "null" as subdomain to list all records. [Firewall] change 25/TCP restriction from "postfix" gid to more generic, "mail" gid. Allows rspamd to perform MX checks as well. [Import] detect corrupted HOME paths from backup source. [MySQL] database renames apply correct DDL statements. [MySQL Manager] display database size charged on disk. [PHP] imagick enabled by default. Simplify multiPHP extension builds + configuration (see PHP-FPM.md). [PHP] detach pool .service binding from php-fpm such that pools have two-way binding to named .socket and propagated action through group or "php-fpm" master service. Requires `EditDomain --reconfig --all` to appyl retroactively. [PHP] Relocate composer referent to /usr/share/pear/composer.phar, inline with wp-cli and other PHP utilities. [Postfix] simplify SMTPS/ESMTP mode settings (see SMTP.md). Always encrypt smarthost transmission set via mail.smart-host. Prior to, encryption was opportunistic. [Process] suid/sgid options no longer wrap the command in /bin/sh. "Fork" process types may accept open/close callbacks. [watch] lockdown()- support web user ("apache") as a target user after learning mode completes. [Web Apps] perform validity check before updating web apps. Prevents potential loop on updating a ghosted web app. [wordpress] purge WP-CLI cache periodically. Recovery mode resets theme to twentyXXX. REMOVED: [dns] check-zone() authoritative_ns requirement. Intended for use internally with BIND. Still used for PTR checks in IpCommon\ip_allocated() for now.