3.2 release 🎉 Web Apps facility rewrite, significant improvements to functionality. NEW: [Bootstrapper] BSARGS= environment variable for passing off --extra-vars=$BSARGS to ansible-playbook, e.g. `env BSARGS="--force=yes" upcp -sb` [CLI] "serialize" output/input format added. Uses builtin PHP serialization to pass objects around unadulterated. [Dashbord] add Argos glance. [DNS] Katapult, Hetzner DNS providers. Katapult is an upcoming premium VPS, Hetzner provides free DNS service. [dns] verify(), verified(), challenges() API calls for third-party DNS providers that require additional challenges. [git] add_ignore(), list_ignored_files()manage ignored files for git repository. [web] get_all_hostnames_from_path()given a docroot, find all hostnames that serve from this base location. [webapp] general purpose Web App module. Don't know the web app installed under a document root, but want to update it? cpcmd -d mydomain.com webapp:update mydomain.com. All family methods are exposed through this module except install(). [webapp] get_reconfigurable()get a reconfigurable value either transient or fixture. [Web Apps] learn, write, release are now callable from API. wordpress:fortify("mydomain.com","","learn", [10]); [Web Apps] fortification_modes()list all Fortification modes available to an app. [Web Apps] Nextcloud 1-click support. [Web Apps] Manifests. Bolt on Fortification and database snapshot/rollback support to any document root on your account. Manifest Fortification may define additional modes in addition to an app's base modes. [Web Apps] notification controls via Account > Settings. [Web Apps] third-party support. See @apisnetworks/apiscp-webapp-demo for a sample application. [WordPress] AST parser allows for tighter integration with wp-config.php. Changing Fortification to "write" mode for example rewrite FS_METHOD to 'direct' automatically. May be used in hooks as well (see WordPress.md). [WordPress] Site duplication and rename support. Easily migrate a WP site from staging to production with one click! FIXED: [file] stat calls could report an invalid user if the user were removed and recreated with the same site ID/user ID combination. [DeleteDomain] flush global error log prior to deletion. Epehemeral account generation may erroneously report failure if global state is error prior to deletion. [Migrations] update IPv6 on migration [Web Apps] corrupted sites during update will no longer terminate an update batch. CHANGED: [Core] bump PHP to 7.4. [Datastream] support 2^22 PIDs, which allows for worker pinning when PID exceeds 65536. [Let's Encrypt] disable wildcard SSL if null driver is used. [Laravel] Update Laravel to 6/LTS, Horizon to 3. [mysql, pgsql] clone() may now duplicate a database into an empty destination. [mysql, pgsql] export() may now export a database onto an empty file. [PHP] libsodium always enabled for PHP 7.2+. [Postfix] CentOS 8/systemd sendmail compatibility. RestrictAddressFamilies requires AF_NETLINK support. Setting PrivateDevices or RestrictAddressFamilies, in addition to other directives, irrevocably enables NoNewPrivileges=yes, which prevents postdrop setgid helper from temporarily granting the invoking process "postdrop" membership. This requires either opening /var/spool/postfix/maildrop to world or using ACLs to grant apache user write/execute permissions to directory. Pursuing this route blocks future developments in multi-user pools as well as running pool same-user (cPanel compatibility mode), leaving supplementary group addition the only appropriate route. [PostgreSQL] PostGIS install-time option via `pgsql_has_postgis`. [PowerDNS] pdns server no longer explicitly enabled if using PowerDNS provider unless `powerdns_enabled` is set to true. [Rampart] disabling FTP/mail services disables respective log monitoring profiles. [UI] convert collapse to flyout menu. Minor UI tweaks. [UI] "search" promoted into reusable component. [Web Apps] report Fortification mode in meta gutter.