NEW: [crontab] stop(), start(), restart() wrapper methods for toggle_status(). [crontab] match_job()- return jobs whose command matches regex pattern. [Filesystem] whiteout/opaque layer utility class. [scope] diff()- report changes in a given Bootstrapper role. Example: diff("clamav/setup") reports all configuration changes that override variables in clamav/setup. [telemetry] collect()- trigger statistics collection. [telemetry] interval()- report data over evenly spaced intervals. [upcp] List available roles using -l flag. [user] resolve_uid() method translates UID to a site/user tuple. [webapp] get_meta()/set_meta()- interact with Web App metadata. [webapp] refresh_apps()- expunge cached webapp facts, used when developing Web Apps without restarting ApisCP. [webapp] removeJobs() internal helper removes existent tasks within a given document root. [wordpress] cli()- free-form WP-CLI access. FIXED: [Argos] Weak "requests" dependency pulls down incompatible package on CentOS 7. [Backend] double-fork race condition. [Bootstrapper] Idempotency violation in mail/spamassassin. [CLI] non-CLI input format destructures array. [CLI] Numeric flag argument raises strict type error. [Composer] CVE-2022-24828 Composer Command Injection hotfix. [Filesystem] 0:0 valid device. [letsencrypt] Calling append() to non-existent certificate fails. [Nexus] Plans outside system charset are silently ignored. [Opcenter] Early termination suppresses other regitered callbacks. [Opcenter] DTSS activation orphans dbaseadmin, dbaseprefix values on account deletion. Apply AlwaysRun attribute to dbaseprefix. Change intention of AlwaysRun to always run even during deletion if service class "enabled" is false. [Opcenter] Prefixing "www." to a domain fails post-creation callbacks. [Opcenter] *.end event processing in Activate/SuspendDomain. [PHP] Reconfiguring PHP-FPM logging if logs,enabled=0 chmod's vfs root to 640. [PHP] SourceGuardian support. Set php_install_sourceguardian to "true" in cp.bootstrapper Scope, run upcp after. [Route53] Records created as weighted, closes issue #48. [Route53] Long records require label split. [rspamd] IPv6 MX records report MX_INVALID. [upcp] Hotfixes revert edge-major policy. [Users] Changing username could result in crash during notification. [Users] Usernames that begin with a number yet contain a valid character mask. CHANGED: [Backend] Squelch spurious same-mount warning early in installation. [Bootstrapper] Workaround on platforms in which /etc/selinux/config is marked with immutable attribute. [cgroup] Move to cgconfig.d/ usage. cgconfig is a oneshot task on boot that has a tendency to become unwieldy with parsing larger configurations. Each cgroup configuration is named after the site for easier management. [Cgroup] Cleanup internal API usage. Group name no longer required where Controller object is used. [Discourse] Add support for 2.8+. [DNS] Exporting corrupt/invalid zone fails gracefully. [Filesystem] Spam retention in ~/Mail/.Spam adjustable in software/tmpfiles. [Ghost] Support 4.5+. [Internal] Merge config/custom Composer dependencies into autoloader. [Laravel] Use pool version in determining installation requirements. [Metrics] Delete data older than 1 year, apply aggressive compression policy for metrics older than 2 days. [Opcenter] Block reducing bandwidth threshold that will result in immediate account suspension. [Opcenter] Rename Procfs helper class to Sysctl. [PHP] Disabling Apache service terminates PHP-FPM processes. [PostgreSQL] postgresql.conf values may be overridden in Bootstrapper as "pgsql_custom_config". [rampart] temp() may be used by admin. [Scopes] Suggest alternative scopes on invalid reference. [Subdomain] Removing a subdomain whose data directory is incorrectly located in /var/subdomain will remove the directory now. [Task Scheduler] Downgrade duplicate job to warning. [Task Scheduler] Task Scheduler (crontab) may operate independently from SSH when [ssh] => crontab_link is set to false. Doing so still allows a cron process to open a shell for a user to login to the account. This is intended as a simpler approach to creating a custom plan named nossh as referenced in Plans.md#complex-plan-usage. [upcp] Improve permission healing. [Watchdog] Delay on boot via watchdog_boot_delay Bootstrapper setting. Intended for heavy startups that spike load momentarily. [web] rename_subdomain() implicitly coerces local format to global. REMOVED: [Bootstrapper] Account creation role on DNS-only builds. [PowerDNS] Web server feature disabled by default. [UI] Nexus on DNS-only installs.