Skip to content
NEW:
[Accounts] Project quota support. A tertiary quota tier for grouping multiple accounts under a shared block/inode quota. Assignment done within diskquota,group service parameter. See Resource enforcement.md.
[Database] MariaDB and PostgreSQL listening IPs may be set using mysql.listening-ips and pgsql.listening-ips Scopes respectively.
[Mail] SRS secret may be rolled ahead of 48 hour validity period using mail:roll-srs or setting [mail] => srs_autoroll. See SECURITY.md.
[Mail] catch-all and external forwarding may be set granularly per site in mail,catchallfwd and mail,extfwd.
[Map] "textfile" type maps support duplicate keys.
[PHP] ionCube 8.4 support.
[Route53] Support multiple same-origin records.
[UI] Defining NO_AUTH=1 in an app bypasses authentication/authorization checks.

FIXED:
[Bootstrapper] Mitogen runtime socket lost on /tmp remount.
[CLI] Strings that contain array metacharacters without proper demarcation syntax parsed as array.
[DNS] Provisioning a domain performs unconditional reset, ignoring existing record presence.
[Frontend] Shutting down httpd service within backend asserts PHP7 module.
[Kernel] Modern EFI-based systems with multiple drives in softraid may boot of hard drives in round robin fashion. EFI may not be raided thus grub2 configuration must be updated on each EFI system partition. Resolves issues with cgroupv2 on OVH systems.
[Laravel] Version cap applies floor.
[Opcenter] Service parameters that accept "DEFAULT" report "DEFAULT" upon service value expansion if parameter has not yet been committed to account.
[Opcenter] Escape metacharacters in site creation command.
[PowerDNS] All records of same name, content, RR must share same TTL - se PowerDNS/pdns#10921.
[PowerDNS] Remove all records when parameter value omitted.
[Subdomains] Multi-level subdomains cannot be removed.
[Transfer] --stage non-persisted over a collection of sites. --all preserves buffer across runs.
[WordPress] Versionless themes and plugins generate type error.

CHANGED:
[API] site:wipe returns challenge token.
[API] Modules that implement _cron() must implement Tasking interface. Schedules may be suspended by passing null to $interval.
[Cloudflare] URI RR type deprecates "content" parameter in favor of "target".
[Discourse] 3.2+ compatibility.
[DNS] Rely on internal cache for asynchronous record modifications before consulting authoritative servers.
[FTP] Set passive address for machines behind NAT.
[FTP] vsftpd configuration may be overrode in Bootstrapper. See Customizing.md.
[Logging] silence() macro usage bypasses suppression in debug mode.
[Migration] Importing from backup will administratively add missing domains to profile to ensure addon domains may be properly added. Such a situation arises if the account was created, then an import applied to account.
[Migration] Running specific stage in cPanel backup restore as --do includes dependent components.
[Net] IpCommon:bound() autodetects family.
[Opcenter] Reorder cgroup, diskquota dependency map such that removing quota would not inhibit cgrules generation.
[UI] /.well-known URI maps to storage/well-known/.
[vfs] Alias ImageMagick "convert" binary to "magick".
[vfs] Package synchronizer implements --remove-all, --auto alternatives states.
[vfs] Update ghostscript dependencies.
[Web Apps] "fortify" is now a transient property.
[Web Apps] Version reports triadic falsey state: "false" on failure, "" during install, and "null" on irresolvable.

REMOVED:
[Transfer] Original migration log reported database users without prefix as API handled without prefix. Retaining behavior results in ambiguity when namespaced user is named after dbaseadmin as the API prefers fully-qualified users now but falls back to prefixless.