> ## Documentation Index
> Fetch the complete documentation index at: https://perfgrid.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Grid Hosting

> Changelog for Grid Hosting

<Update label="June 20, 2026">
  * <Badge>Internal</Badge> Wildcard SSL certificate issuance for previewr.eu has been moved to same ACME backend as the other domains to improve consistency
  * <Badge color="blue">Improvement</Badge> Show the custom document root for alias domains in the Domains page
</Update>

<Update label="June 19, 2026">
  * <Badge color="blue">Improvement</Badge> Support for `custom_docroot` option (admin only) on alias domains and honoring it when generating vhosts
</Update>

<Update label="June 17, 2026">
  * <Badge>Internal</Badge> DNS Only termination functionality have been fixed to not warn upon termination
  * <Badge color="orange">Fix</Badge> Add a missing flux icon that didn't render correctly on the "What's New" page
</Update>

<Update label="June 15, 2026">
  * <Badge color="green">Feature</Badge> Add Passkey authentication support for the panel
  * <Badge color="blue">Improvement</Badge> Show the last 3 new added features on the Dashboard banner to make it easier to discover new features
  * <Badge color="orange">Fix</Badge> Align the padding across interfaces to be consistent
  * <Badge>Internal</Badge> Move testing from phpunit to PestPHP
  * <Badge>Internal</Badge> Remove Jetstream dependencies (Teams, 2FA implementation, login views, etc.)
  * <Badge>Internal</Badge> Rebuild the login pages, 2FA pages and other pages that were using Jetstream into native FluxUI components for easier maintenance and customization
  * <Badge>Internal</Badge> Enforce some better defaults for provisioning API requests
</Update>

<Update label="June 14, 2026">
  * <Badge>Internal</Badge> Upgrade Laravel to Laravel 13.x
  * <Badge>Internal</Badge> Upgrade composer and npm packages
</Update>

<Update label="June 13, 2026">
  * <Badge color="green">Feature</Badge> Monitor for WordPress plugin/theme vulnerabilities and show them in the WordPress Overview page
</Update>

<Update label="June 12, 2026">
  * <Badge color="blue">Improvement</Badge> Allow deploying SMTP plugin and credentials for existing WordPress installations
  * <Badge color="blue">Improvement</Badge> Allow reconfiguring SMTP credentials in case the WordPress configuration was changed (e.g. restoration from Duplicator, etc.)
  * <Badge color="blue">Improvement</Badge> Introduce caching of the WP Overview page to prevent calling the WordPress installation for every request
  * <Badge color="blue">Improvement</Badge> Speed up WP Overview data loading by utilizing WordPress core functions to get the data instead of relying WP-CLI output data
  * <Badge>Internal</Badge> Do not delay termination of Mail Routing information during account termination
  * <Badge color="orange">Fix</Badge> Add GoSMTP Pro plugin to the list of plugins to detect when deploying FluentSMTP plugin to improve accuracy
</Update>

<Update label="June 11, 2026">
  * <Badge color="green">Feature</Badge> Implement domain redirects to allow redirecting a domain to a different domain and/or URL
</Update>

<Update label="June 08, 2026">
  * <Badge>Internal</Badge> Do not allow SSO logins for suspended accounts
</Update>

<Update label="June 07, 2026">
  * <Badge color="blue">Improvement</Badge> Allow DNS Only plans to be created with their own set of nameservers
  * <Badge color="blue">Improvement</Badge> Expose the `Stats` page for DNS Only plans
  * <Badge>Internal</Badge> Add unit tests for the DNS zone creation
  * <Badge>Internal</Badge> Decrease the standard TTL of DNS-Only records from 3600 seconds to 60 seconds to allow for faster propagation for newly created domains
  * <Badge>Internal</Badge> Change SMTP Matching logic to be exact match instead of substring match to improve accuracy, include various `pro` and `premium` plugins in the detection logic
  * <Badge>Internal</Badge> Split the DNS-Only navigation into a separate file
  * <Badge>Internal</Badge> Upgrade Vite to version 8.x to improve build performance
  * <Badge color="surface-destructive">Removed</Badge> Everything related to `Redirect` record has been removed from the panel
</Update>

<Update label="June 06, 2026">
  * <Badge color="green">Feature</Badge> Automatically deploy FluentSMTP plugin and configure SMTP connection for WordPress installations installed or cloned through the **WordPress Installer** to improve email delivery
  * <Badge>Internal</Badge> Update the list of plugins to detect when deploying FluentSMTP plugin to improve accuracy
  * <Badge>Internal</Badge> Update composer packages
</Update>

<Update label="June 05, 2026">
  * <Badge>Internal</Badge> Tooling for dealing with bulk DNSSEC deployment
</Update>

<Update label="June 03, 2026">
  * <Badge color="orange">Fix</Badge> If SSL issuance would fail it would not clear out the `_acme-challenge` record correctly. This has been fixed
  * <Badge color="blue">Improvement</Badge> Add a CAA Checker service to validate we have the expected CAA records (if any) prior to attempting to issue a certificate
  * <Badge>Internal</Badge> Move all `_acme-challenge` record management to a shared AcmeChallenge service to improve code maintainability
  * <Badge>Internal</Badge> Improve handling of errors when talking to the DNS backend
</Update>

<Update label="June 01, 2026">
  * <Badge color="green">Feature</Badge> Manage Account SSH keys through the panel (User dropdown -> SSH Keys)
  * <Badge>Internal</Badge> Introduce new AccountFilesystem service to handle file operations in a single place
  * <Badge>Internal</Badge> Add check service for FileManager access consistency checking
  * <Badge>Internal</Badge> Introduce orphan zone cleanup job to remove possible stale DNS zones
  * <Badge color="orange">Fix</Badge> Fix missing import of AccountFilesystem service in the File Manager's edit endpoint
</Update>

<Update label="May 31, 2026">
  * <Badge color="green">Feature</Badge> Add WordPress Overview page to show WordPress installation details (WP Version, PHP Version, Plugins, Themes, and allow updating, disabling/enabling, and deleting plugins)
  * <Badge color="green">Feature</Badge> Add What's New page to show the latest updates and changes to the control panel
  * <Badge color="blue">Improvement</Badge> Update the Patchstack page to follow the design style of WordPress Overview page
  * <Badge color="blue">Improvement</Badge> Interlink the WordPress overview page to the Patchstack page for easier navigation
  * <Badge color="orange">Fix</Badge> Patchstack sometimes counting components incorrectly
  * <Badge color="orange">Fix</Badge> Patchstack API changed how SiteID and API keys are handled. Integration have been updated to reflect this
</Update>

<Update label="May 30, 2026">
  * <Badge color="blue">Improvement</Badge> Speed up access logs querying by introducing a `hot` query table in Clickhouse optimized for logs representation
  * <Badge color="blue">Improvement</Badge> Show user-agent in logs, move visitor country info to IP field, merge LiteSpeed Cache response with status code
  * <Badge color="blue">Improvement</Badge> Allow auto-refreshing the interface every 30 seconds, add info about data delay
</Update>

<Update label="May 29, 2026">
  * <Badge color="green">Feature</Badge> Introduce Photon Optimizer Logs page to show Photon Optimizer logs
</Update>

<Update label="May 28, 2026">
  * <Badge>Internal</Badge> Log DNS patch when generic validation errors occur in the DNS Editor.
  * <Badge color="blue">Improvement</Badge> Move `ns3/ns4` nameservers from `dnscluster.dk` to `ns-infra.nl` to limit impact in case of TLD or domain issues. (Only applies to new domains created after this date.)
  * <Badge color="green">Feature</Badge> Introduce Access Logs page to show website logs
</Update>

<Update label="May 27, 2026">
  * <Badge color="orange">Fix</Badge> After saving a file in File Manager, clicking the "Up one level" button would send you to the root directory instead of the parent directory. This has been fixed.
</Update>

<Update label="May 26, 2026">
  * <Badge color="blue">Improvement</Badge> Unset a set of `wp-config.php` options upon clone that may result in unexpected behavior
  * <Badge color="blue">Improvement</Badge> Add `--skip-themes` and `--skip-plugins` to the WordPress installer to speed up the installation process
</Update>

<Update label="May 25, 2026">
  * <Badge color="green">Feature</Badge> Implement "Scan for WordPress" feature to detect WordPress installations on domains and subdomains
  * <Badge color="blue">Improvement</Badge> Replace APEX Charts with FluxUI's own charts for statistics
  * <Badge color="blue">Improvement</Badge> Enhance the PHP error and 5xx error log tables by making them consistent with others, and switch to relative timestamps for 5xx errors
  * <Badge color="blue">Improvement</Badge> Add HTTPS and DNSSEC related query metrics to DNS Statistics
  * <Badge>Internal</Badge> Change Software Installations model to use a polymorphic relationship for domain/subdomain models (`domainable`).
  * <Badge color="orange">Fix</Badge> Password Strength bar didn't work on WordPress installation page
</Update>

<Update label="May 21, 2026">
  * <Badge color="orange">Fix</Badge> Determine Valkey Max Memory settings correctly based on the plan, and validate accordingly instead of fixed values
  * <Badge>Internal</Badge> Composer and npm package updates
</Update>

<Update label="May 14, 2026">
  * <Badge color="red">Security</Badge> Improve the security of the Provisioning API by introducing a new ACL group for the provisioning API itself
  * <Badge>Internal</Badge> Prepare for migration of lego from version 4.x to 5.x
  * <Badge>Internal</Badge> Disable random-sleep in lego to speed up certificate issuance
  * <Badge>Internal</Badge> Introduce ARI (ACME Renewal Information) to optimize certificate renewal process
  * <Badge>Internal</Badge> Upgrade lego to version 5.x
  * <Badge>Internal</Badge> Remove debug information from `ProcessCreateDnsZone` job
  * <Badge color="orange">Fix</Badge> Check for record coexistence didn't account for reverse order of records when checking for conflicts and resulted in generic validation errors
  * <Badge color="orange">Fix</Badge> When adding multiple records at once, changing the record type would update the placeholder text for all new records, resulting in incorrect placeholder text
  * <Badge color="orange">Fix</Badge> File Manager couldn't deal with non-UTF8 file names such as ISO-8859-1 encoded files
  * <Badge color="orange">Fix</Badge> Switch to new JetBackup API endpoint
  * <Badge color="blue">Improvement</Badge> Debounce field edits in DNS Editor by 1000ms to prevent excessive re-renders
</Update>

<Update label="May 12, 2026">
  * <Badge>Internal</Badge> Deploy new acme-challenge system to use PowerDNS as the DNS backend instead of `acme-dns`
  * <Badge color="orange">Fix</Badge> Set a default TXT record value for `_acme-challenge` subdomains to bypass NXDOMAIN caching from resolvers and speed up certificate issuance
</Update>

<Update label="May 11, 2026">
  * <Badge>Internal</Badge> Data migration for rewritten acme-challenge setup, including cleanup of old unused records
</Update>

<Update label="May 07, 2026">
  * <Badge>Internal</Badge> Composer and npm package updates
  * <Badge color="blue">Improvement</Badge> Switch node.js handling to use LiteSpeed nodejs integration instead of nginx
</Update>

<Update label="April 18, 2026">
  * <Badge color="blue">Improvement</Badge> Persist DNSSEC keys for domains upon deletion of domains, to allow restoring the same key when re-adding the domain on the same account
  * <Badge>Internal</Badge> Composer and npm package updates
  * <Badge color="orange">Fix</Badge> Correct some broken database migrations
</Update>

<Update label="April 15, 2026">
  * <Badge>Internal</Badge> The audit logging of WordPress Clone feature has been improved with additional information
  * <Badge color="orange">Fix</Badge> Do not allow deleting domains and subdomains that have WordPress installations tied to them (requires deletion of the WordPress installation first)
</Update>

<Update label="April 14, 2026">
  * <Badge>Internal</Badge> Composer and npm package updates
</Update>

<Update label="April 09, 2026">
  * <Badge color="orange">Fix</Badge> Mail Routing models not being deleted correctly upon domain deletion
  * <Badge color="green">Feature</Badge> Allow setting NS records on subdomains to allow sub-delegation, e.g. for services like Klaviyo
</Update>

<Update label="April 08, 2026">
  * <Badge>Internal</Badge> Move imunify360 webserver reload job to be handled by the panel queue system to increase reliability
</Update>

<Update label="March 31, 2026">
  * <Badge color="blue">Improvement</Badge> Split the SSL reload hook into separate jobs for issuance and renewal to delay the reload until after the certificate has been renewed
  * <Badge color="orange">Fix</Badge> Handle bug in certificate issuance where it doesn't increase the retry interval after a failure
  * <Badge>Internal</Badge> Update composer packages
</Update>

<Update label="March 20, 2026">
  * <Badge color="red">Security</Badge> Upgrade Roundcube webmail to `1.16.14`
</Update>

<Update label="March 12, 2026">
  * <Badge color="orange">Fix</Badge> Handle unsuspension better to ensure cronjobs are reenabled as expected
</Update>

<Update label="March 07, 2026">
  * <Badge>Internal</Badge> Composer and npm package updates
  * <Badge color="blue">Improvement</Badge> Add Blaze support to speed up Blade components with a `5x` to `100x` performance improvement for File Manager
  * <Badge color="blue">Improvement</Badge> Replace progress bars with Flux native progress bars
  * <Badge color="green">Feature</Badge> Allow cloning to `www.` version of a domain in the WordPress Clone feature
  * <Badge color="orange">Fix</Badge> Always search and replace both `www` and non-`www` versions from the source domain when cloning WordPress
</Update>

<Update label="February 23, 2026">
  * <Badge color="green">Feature</Badge> Implement adding ARPA domains as DNS zones
  * <Badge>Internal</Badge> Composer and npm package updates
</Update>

<Update label="February 12, 2026">
  * <Badge color="orange">Fix</Badge> Reduce cache TTL for `400` to `499` status codes in Varnish for Photon Optimizer
  * <Badge color="orange">Fix</Badge> Correct an error in DNS Editor for options that may result in a `500` internal server error
  * <Badge>Internal</Badge> Composer and npm package updates
</Update>

<Update label="January 18, 2026">
  * <Badge>Internal</Badge> Upgrade to Laravel Livewire 4
  * <Badge color="orange">Fix</Badge> Log additional information when vhost generation fails and reprocess the job
</Update>

<Update label="January 16, 2026">
  * <Badge>Internal</Badge> Fix `idn_to_utf8` errors caused by PHP 8.4 fatal errors
  * <Badge>Internal</Badge> Upgrade PHP `8.3` to PHP `8.4` for the control panel
</Update>

<Update label="January 08, 2026">
  * <Badge color="green">Feature</Badge> Release PHP 8.5 on all servers and make it available in the panel
  * <Badge color="orange">Fix</Badge> Use `certificate_renewal_days` config option for HTTP-01 challenge certificates
  * <Badge color="blue">Improvement</Badge> Prevent overlaps with SSL issuance tasks
  * <Badge>Internal</Badge> Add tooling for self-signed certificates
</Update>

<Update label="November 15, 2025">
  * <Badge color="red">Security</Badge> npm and composer package updates that fix `CVE-2025-64500`
  * <Badge color="blue">Change</Badge> Increase `max-allowed-packet` to `512` megabytes in WordPress cloning functionality
  * <Badge color="blue">Change</Badge> Add a note on the **Edit DB** modal that clicking save changes the password to the shown password in the modal
  * <Badge>Internal</Badge> Add initial work on ingesting installed plugin versions to warn about WordPress vulnerabilities
  * <Badge>Internal</Badge> Add initial work on automated uptime monitoring for reseller accounts
</Update>

<Update label="October 31, 2025">
  * <Badge color="orange">Fix</Badge> Delete mail routing when a domain is deleted
  * <Badge color="orange">Fix</Badge> Exclude trashed domains from uniqueness check when making a WordPress clone
  * <Badge color="orange">Fix</Badge> Do not delete `previewr.eu` subdomain on temporary domain deletion and only remove the vhost
  * <Badge color="orange">Fix</Badge> Use `prime256v1` instead of `secp256k1` due to lack of support from BoringSSL
  * <Badge color="blue">Improvement</Badge> Implement self-signed certificate on domain creation to handle Cloudflare SNI matching
  * <Badge color="blue">Improvement</Badge> Implement ACME HTTP-01 challenge to handle Cloudflare SSL issuance breakage and use it only in emergencies
  * <Badge>Internal</Badge> Handle customer ACME HTTP challenge endpoints within `hosting-panel.net`
  * <Badge>Internal</Badge> Expand terminate account call with additional cleanup and audit logs
  * <Badge>Internal</Badge> Package updates through composer
  * <Badge>Internal</Badge> Move some information to Sentry logs instead of Sentry exceptions
</Update>

<Update label="October 05, 2025">
  * <Badge color="blue">Change</Badge> Include Photon Optimizer requests and bandwidth in dashboard metrics
  * <Badge color="blue">Change</Badge> Extend billing maps to support multiple super users per account
  * <Badge color="blue">Improvement</Badge> Move Patchstack pages to Livewire components to speed up loading time
  * <Badge color="blue">Improvement</Badge> List both IPv4 and IPv6 addresses on super-user account overview
  * <Badge color="orange">Fix</Badge> Resolve cases where Patchstack would not show the correct metrics for sites with vulnerabilities where no patch exists
  * <Badge>Internal</Badge> Log JSON responses from Patchstack API in audit logs
  * <Badge>Internal</Badge> Composer and npm package upgrades
</Update>

<Update label="September 09, 2025">
  * <Badge color="orange">Fix</Badge> Pass domain model instead of ID to the temporary domain deletion job so it deletes correctly
  * <Badge>Internal</Badge> npm and composer package upgrades
  * <Badge color="green">Feature</Badge> Add Patchstack feature for WordPress sites as a paid add-on
  * <Badge color="blue">Change</Badge> Update package matching logic for Valkey limits to accommodate multiple packages of the same flavor
</Update>

<Update label="September 04, 2025">
  * <Badge color="orange">Fix</Badge> Correct FTP account deletion on alias domains by fixing incorrect `domainable` mapping
</Update>

<Update label="August 31, 2025">
  * <Badge color="blue">Change</Badge> Enable PSI monitoring for all domains temporarily
</Update>

<Update label="July 27, 2025">
  * <Badge>Internal</Badge> Add additional logging for ACME issue hook, webserver vhost generation, and webserver restart jobs
  * <Badge>Internal</Badge> Keep the webserver reload job unique for only 30 seconds to prevent possible stale lock
  * <Badge color="blue">Change</Badge> Switch `pmg1.h4r.eu`, `pmg2.h4r.eu`, and `de-mail01.h4r-infra.net` to `in1.mail-infra.net`, `in2.mail-infra.net`, and `de-mail01.mail-infra.net` for reseller purposes
</Update>

<Update label="July 25, 2025">
  * <Badge>Internal</Badge> Add soft deletes across `Cronjob`, `Domain Redirect`, `Email allow/block`, `FtpAccount`, `SoftwareInstalation`, `UrlSchedule`, and `User` models
  * <Badge>Internal</Badge> Add cleanup for old soft deleted models
  * <Badge color="red">Security</Badge> Update composer and npm packages
  * <Badge>Internal</Badge> Remove unused npm packages to reduce bundle sizes
</Update>

<Update label="July 19, 2025">
  * <Badge color="orange">Fix</Badge> Add `uniqueId` method to `ProcessWebServerReload`
  * <Badge color="orange">Fix</Badge> Make `ProcessMailRouting` use `uniqueId` instead of `withoutOverlapping`
  * <Badge color="orange">Fix</Badge> Replace some SVGs with new versions
</Update>

<Update label="July 18, 2025">
  * <Badge color="red">Security</Badge> Update composer packages to latest versions
</Update>

<Update label="July 17, 2025">
  * <Badge color="blue">Improvement</Badge> Generate preview domain DNS entries when creating a domain or subdomain to prevent DNS propagation issues
  * <Badge color="blue">Improvement</Badge> Add **Server** column to the overview page for super users so they can see which server a domain is located on
  * <Badge color="orange">Fix</Badge> Resolve 2FA page issues where modal shadow overlaps the actual modal
  * <Badge color="blue">Change</Badge> Confirm 2FA code before enabling 2FA
</Update>

<Update label="July 06, 2025">
  * <Badge color="green">Feature</Badge> Add PSI monitoring for all domains on a weekly basis
</Update>

<Update label="July 02, 2025">
  * <Badge color="orange">Fix</Badge> Improve UI layout for DNS Hosting plans
  * <Badge color="orange">Fix</Badge> Show delete domain button on DNS Hosting plans after UI refresh
</Update>

<Update label="June 23, 2025">
  * <Badge>Internal</Badge> Update composer and npm packages to latest versions
  * <Badge color="blue">Improvement</Badge> Switch new domains to using 2048 bit DKIM keys
</Update>

<Update label="June 17, 2025">
  * <Badge color="purple">Performance</Badge> Improve the CloudLinux Domains API endpoint with improved logic and prevent N+1 queries
  * <Badge color="purple">Performance</Badge> Optimize index usage for subdomain generation
</Update>

<Update label="June 13, 2025">
  * <Badge>Internal</Badge> Modify some defaults in Rspamd filtering
  * <Badge color="orange">Fix</Badge> Properly provision system FTP account when using the provisioning API
</Update>

<Update label="June 11, 2025">
  * <Badge color="blue">Improvement</Badge> Rewrite the temporary domain functionality from scratch to provide better compatibility and allow for more features
  * <Badge color="blue">Improvement</Badge> Add temporary domain support for subdomains
</Update>

<Update label="May 31, 2025">
  * <Badge color="orange">Fix</Badge> Various smaller UI changes to be more consistent
  * <Badge color="green">Feature</Badge> Add the option to persist Valkey data to disk and save the setting in Valkey
</Update>

<Update label="May 30, 2025">
  * <Badge color="orange">Fix</Badge> Properly trigger account suspensions via the provisioning API
  * <Badge color="orange">Fix</Badge> Smaller UI changes in regards to badges and margins
</Update>

<Update label="May 26, 2025">
  * <Badge color="green">Feature</Badge> Implement allow/blocklist feature for email accounts
</Update>

<Update label="May 23, 2025">
  * <Badge color="orange">Fix</Badge> Add `/usr/local/bin` to `PATH` in cronjobs to expose composer and `wp-cli` directly
</Update>

<Update label="May 22, 2025">
  * <Badge color="orange">Fix</Badge> Incorrect alias handling on updates which prevented updating PHP version
  * <Badge color="orange">Fix</Badge> Pull Valkey metrics data from the last item in the array to get more up-to-date numbers
  * <Badge color="blue">Improvement</Badge> Show full hostname such as `nlsh05.shared-infra.net` instead of `nlsh05` in Server on the dashboard page, and replace IP with hostname in the connection details
</Update>

<Update label="May 18, 2025">
  * <Badge color="orange">Fix</Badge> Properly delete FTP accounts on subdomains when deleting a domain
  * <Badge color="orange">Fix</Badge> Remove duplicate `c` on cronjob placeholders
  * <Badge>Internal</Badge> Add additional audit logging for delete features
  * <Badge>Internal</Badge> Change **Add Domain** form to use `App\Models\..` instead of `s` and `d`
  * <Badge>Internal</Badge> Move to Auth facade across the codebase
</Update>

<Update label="May 15, 2025">
  * <Badge>Internal</Badge> Add additional chunk patch validation in File Manager uploads to further increase security
</Update>

<Update label="May 12, 2025">
  * <Badge color="blue">Improvement</Badge> Add historical Valkey statistics and graphs
</Update>

<Update label="May 04, 2025">
  * <Badge color="green">Feature</Badge> Add initial Valkey statistics
</Update>

<Update label="April 12, 2025">
  * <Badge>Internal</Badge> Move to polymorphic relationships for alias domains and domain ACME credentials
  * <Badge>Internal</Badge> Update to the latest composer packages and remove the Flowbite dependency to reduce CSS and JS assets
  * <Badge color="blue">Improvement</Badge> Standardize more UI elements
  * <Badge color="blue">Improvement</Badge> Redesign the dashboard page
  * <Badge color="orange">Fix</Badge> Fix domain alias counting logic to allow adding alias domains even when the domain limit has been reached and add a callout when that happens
</Update>

<Update label="April 11, 2025">
  * <Badge>Internal</Badge> Change backoff for vhost jobs to 5, 10, and 20 seconds to allow for in-progress webserver restarts
  * <Badge color="blue">Improvement</Badge> Detect PHP version to use for source and destination domains in WordPress installer and clone functionality depending on the configured domain PHP version
  * <Badge color="blue">Improvement</Badge> Refactor WordPress install and clone plus File Manager pages to use new UI components, and make **Generate Password** an actual button on the **Add Email** page
  * <Badge color="orange">Fix</Badge> Determine upload path correctly on the initial change-directory call in File Manager when uploading new files
</Update>

<Update label="April 10, 2025">
  * <Badge color="blue">Improvement</Badge> Add example command helper text when creating cronjobs and update the form layout slightly
  * <Badge color="blue">Improvement</Badge> Make add and edit forms for domains and subdomains usable on mobile devices
  * <Badge color="orange">Fix</Badge> Show Photon Optimizer in the menu when using a mobile device
  * <Badge color="orange">Fix</Badge> Correct the spacing between quick action buttons on mobile devices
</Update>

<Update label="April 07, 2025">
  * <Badge>Internal</Badge> Move Photon Optimizer provisioning to a separate background job
  * <Badge color="green">Feature</Badge> Allow purging the Photon Optimizer cache per domain under `Tools -> Photon Optimizer`
</Update>

<Update label="April 06, 2025">
  * <Badge color="orange">Fix</Badge> Restore ApexCharts tooltip colors
  * <Badge color="blue">Improvement</Badge> Move Photon Optimizer handling to dedicated pages to allow future development
</Update>

<Update label="April 05, 2025">
  * <Badge color="blue">Improvement</Badge> Change some UI elements to be based on FluxUI, including buttons, tables, and callouts
  * <Badge color="blue">Improvement</Badge> Make domain dropdowns in Email and Stats pages searchable
  * <Badge color="blue">Improvement</Badge> Paginate URL Scheduler and Cronjob pages
  * <Badge color="orange">Fix</Badge> Adjust File uploader to account for storage location change
  * <Badge color="blue">Improvement</Badge> Change page breadcrumbs to the new layout and make items linked to parent pages when supported
</Update>

<Update label="April 04, 2025">
  * <Badge>Internal</Badge> Change the reseller memory limits
  * <Badge>Internal</Badge> Update Laravel `11.x` to `12.x`, Tailwind CSS `3.x` to `4.x`, and FluxUI `1.x` to `2.x`
</Update>

<Update label="April 01, 2025">
  * <Badge color="purple">Infrastructure</Badge> Fall back to the original image in case of negative savings on WebP or AVIF served images in Photon Optimizer
</Update>

<Update label="March 31, 2025">
  * <Badge color="orange">Fix</Badge> Temporarily disable model caching for domains to resolve alias domain PHP version synchronization
</Update>

<Update label="March 15, 2025">
  * <Badge color="purple">Infrastructure</Badge> Move Photon Optimizer workers to 7900-based systems for increased performance
</Update>

<Update label="February 26, 2025">
  * <Badge color="green">Feature</Badge> Add feature to export DNS zone in AXFR format
  * <Badge>Internal</Badge> Add additional logging for various components
  * <Badge>Maintenance</Badge> Update composer packages
</Update>

<Update label="February 12, 2025">
  * <Badge color="blue">Improvement</Badge> Allow using domain ID or domain in the DNS zone editor URL for easier bulk updating
  * <Badge color="orange">Fix</Badge> Add additional checks during WordPress clones to ensure `wp-config.php` updates have been committed to disk
  * <Badge color="orange">Fix</Badge> Resolve the domain correctly in the WordPress Installer notification and toast
</Update>

<Update label="January 29, 2025">
  * <Badge color="green">Feature</Badge> Add PHP 8.4 support and set it as the default for new domains
  * <Badge>Internal</Badge> Add additional symbols for Rspamd to filter spam
  * <Badge>Internal</Badge> Log the updated accounts for quota metrics
</Update>

<Update label="January 04, 2025">
  * <Badge color="green">Feature</Badge> Add support for customer sieve mail filtering through webmail
</Update>

<Update label="December 31, 2024">
  * <Badge color="blue">Improvement</Badge> Normalize incoming headers for Photon Optimizer to increase cache hit ratio and savings
</Update>

<Update label="December 30, 2024">
  * <Badge color="green">Feature</Badge> Allow defining a cronjob expression instead of fixed values, giving you more control of cronjob execution
</Update>

<Update label="December 29, 2024">
  * <Badge color="orange">Fix</Badge> Delete FTP accounts on domain deletion
  * <Badge color="orange">Fix</Badge> Expose correct document root for alias domains in the CloudLinux API
</Update>

<Update label="December 22, 2024">
  * <Badge>Internal</Badge> Add client IP address to remaining audit logs
  * <Badge color="blue">Improvement</Badge> Persist LVE limits locally to remove CloudLinux API dependency
</Update>

<Update label="December 21, 2024">
  * <Badge>Internal</Badge> Add force option for account suspension
  * <Badge>Internal</Badge> Improve email quota API endpoint to reduce SQL queries
  * <Badge>Internal</Badge> Implement `skipMailServer` flag for hosting account and user quota jobs
  * <Badge color="orange">Fix</Badge> Resolve bug with vhost generation for subdomains
  * <Badge color="green">Feature</Badge> Implement reseller functionality to create packages and accounts and edit accounts
  * <Badge color="blue">Improvement</Badge> Handle reseller and superuser redirection better
</Update>

<Update label="December 16, 2024">
  * <Badge color="purple">Infrastructure</Badge> Replace Falkenstein, DE with Amsterdam, NL caching infrastructure for Photon Optimizer
</Update>

<Update label="November 12, 2024">
  * <Badge color="purple">Infrastructure</Badge> Add Miami, US as a cache location for Photon Optimizer
</Update>

<Update label="September 07, 2024">
  * <Badge color="orange">Fix</Badge> Resolve Alpine.js error in File Editor
  * <Badge>Internal</Badge> Delete Node.js applications upon account termination
  * <Badge color="blue">Improvement</Badge> Clarify usage of mail ports on the Email overview page
</Update>

<Update label="September 04, 2024">
  * <Badge color="blue">Improvement</Badge> Add Los Angeles, US as a third cache location for Photon Optimizer
</Update>

<Update label="September 02, 2024">
  * <Badge color="blue">Improvement</Badge> Allow serving AVIF and WebP support for Google PageSpeed Insights in Photon Optimizer
</Update>

<Update label="September 01, 2024">
  * <Badge color="blue">Improvement</Badge> Add Singapore, SG as a second cache location for Photon Optimizer to cover Asia
</Update>

<Update label="August 27, 2024">
  * <Badge color="green">Feature</Badge> Add distributed caching support to Photon Optimizer and add the first cache location in Ashburn, US
</Update>

<Update label="August 18, 2024">
  * <Badge color="blue">Improvement</Badge> Add better validation for domain counting when adding domains
  * <Badge color="blue">Improvement</Badge> Do not count alias domains in the domain count, effectively providing unlimited alias domains
  * <Badge color="orange">Fix</Badge> Show all Valkey and Redis memory options by correcting package detection
  * <Badge color="green">Feature</Badge> Allow changing mail routing settings from `Domains -> Dropdown -> Mail Routing`
</Update>

<Update label="August 11, 2024">
  * <Badge>Internal</Badge> Add internal API route for server metrics
  * <Badge>Internal</Badge> Add two-way consistency checks to alert on possible data sync issues
</Update>

<Update label="August 10, 2024">
  * <Badge color="blue">Improvement</Badge> Change the file uploader to a custom JavaScript implementation for future features
  * <Badge color="blue">Improvement</Badge> Move notifications in WordPress clone functionality to websockets for realtime updates
  * <Badge>Internal</Badge> Refactor API routes
</Update>

<Update label="July 27, 2024">
  * <Badge color="blue">Improvement</Badge> Add missing tools to the mobile menu
  * <Badge color="orange">Fix</Badge> Solve UI issues related to charts on the Stats page
</Update>

<Update label="July 24, 2024">
  * <Badge color="orange">Fix</Badge> Pass all request headers through to Node.js applications
</Update>

<Update label="July 18, 2024">
  * <Badge color="orange">Fix</Badge> Correct the condition that prevented users from saving files in File Manager
  * <Badge>Internal</Badge> Speed up internal job processing
</Update>

<Update label="July 16, 2024">
  * <Badge color="orange">Fix</Badge> Refresh File Manager view correctly when using the browser back button according to the working directory
</Update>

<Update label="July 15, 2024">
  * <Badge color="green">Feature</Badge> Add Valkey (Redis) Manager feature
  * <Badge color="blue">Improvement</Badge> Allow stats filtering for subdomains
  * <Badge color="orange">Fix</Badge> Improve exception handling and error messages for File Manager Edit on unreadable files
  * <Badge>Internal</Badge> Rework File Manager related code
  * <Badge color="orange">Fix</Badge> Hide symlinks from the File Manager overview
  * <Badge color="orange">Fix</Badge> Prohibit creating files and directories with names `.` and `..` since it will fail regardless
  * <Badge color="red">Security</Badge> Ship a hardened `pure-ftpd` binary with `virtualchroot` disabled and remove the EPEL upstream package
</Update>

<Update label="July 14, 2024">
  * <Badge color="blue">Improvement</Badge> Implement initial websocket support for streamlining backend notifications
  * <Badge color="green">Feature</Badge> Add rename file and directory functionality in File Manager
  * <Badge>Internal</Badge> Refactor File Manager code
</Update>

<Update label="July 12, 2024">
  * <Badge color="orange">Fix</Badge> Fix SSO due to Carbon 3 incompatibility
</Update>

<Update label="July 11, 2024">
  * <Badge>Internal</Badge> Upgrade Laravel to Laravel 11
</Update>

<Update label="July 10, 2024">
  * <Badge color="blue">Improvement</Badge> Start downloading files immediately from buffers when using File Manager
</Update>

<Update label="July 09, 2024">
  * <Badge color="green">Feature</Badge> Implement file upload and fix issue `#53`
</Update>

<Update label="July 08, 2024">
  * <Badge>Internal</Badge> Enhance internal metrics with URL Scheduler delay
</Update>

<Update label="July 07, 2024">
  * <Badge color="blue">Improvement</Badge> Enable line wrap when using the editor
</Update>

<Update label="July 03, 2024">
  * <Badge color="orange">Fix</Badge> Bypass internal buffering that prevented downloading large files
  * <Badge color="orange">Fix</Badge> Send `content-length` header when downloading files
  * <Badge color="orange">Fix</Badge> Send the correct filename when downloading from subdirectories
  * <Badge color="blue">Improvement</Badge> Do not allow editing certain file types such as images
</Update>

<Update label="July 02, 2024">
  * <Badge color="green">Feature</Badge> Add initial File Manager support for browse, edit, create file and directory, delete, and download
</Update>

<Update label="June 25, 2024">
  * <Badge color="green">Feature</Badge> Expose the last 25 `5xx` request and PHP error logs on `/stats`
  * <Badge color="blue">Improvement</Badge> Disable chart animations to speed up rendering
  * <Badge>Internal</Badge> Add tooling to resync all vhosts for config updates
</Update>

<Update label="June 24, 2024">
  * <Badge color="blue">Improvement</Badge> Change table heading design and improve responsiveness
  * <Badge color="blue">Improvement</Badge> Make modals center on mobile devices as well
  * <Badge>Internal</Badge> Move the Flowbite dependency internal and upgrade it to `2.3.0`
</Update>

<Update label="June 23, 2024">
  * <Badge color="blue">Improvement</Badge> Move PHP error logs to `/logs/` for all domains
</Update>

<Update label="June 21, 2024">
  * <Badge color="green">Feature</Badge> Release Node.js applications functionality
  * <Badge>Internal</Badge> Disable profiling on the internal CloudLinux API
  * <Badge>Internal</Badge> Improve PAT performance for the internal CloudLinux API
</Update>

<Update label="June 14, 2024">
  * <Badge>Internal</Badge> Implement Prometheus endpoint to expose domain count
</Update>

<Update label="June 04, 2024">
  * <Badge color="blue">Improvement</Badge> Gather more information when issuing or renewing certificates fails
  * <Badge color="orange">Fix</Badge> Do not allow deleting domains if existing Node.js applications are tied to the domain
  * <Badge>Cleanup</Badge> Remove unused templating
  * <Badge color="blue">Improvement</Badge> Switch the Node.js overview page to use shared modals
  * <Badge color="blue">Improvement</Badge> Allow updating domain path, startup script, and Node.js version for applications
  * <Badge color="blue">Improvement</Badge> Add FTP configuration box on the FTP overview page
</Update>

<Update label="June 03, 2024">
  * <Badge color="orange">Fix</Badge> Fix provisioning accounts with internationalized domains when `idn_to_ascii` is unavailable
  * <Badge color="orange">Fix</Badge> Prevent the Domains page from returning an error when no domains exist because of shared modals
</Update>

<Update label="June 02, 2024">
  * <Badge color="blue">Improvement</Badge> Bump the default PHP version for new domains and subdomains from PHP 8.2 to PHP 8.3
</Update>

<Update label="May 27, 2024">
  * <Badge color="green">Feature</Badge> Add the initial internal release of Node.js support
  * <Badge color="orange">Fix</Badge> Apply minor Tailwind CSS class fixes
  * <Badge>Maintenance</Badge> Upgrade composer packages
  * <Badge color="blue">Improvement</Badge> Rewrite cronjob and domain pages to use shared modals because of slow DOM performance
</Update>

<Update label="May 24, 2024">
  * <Badge color="green">Feature</Badge> Extend account deletion logic
</Update>

<Update label="May 23, 2024">
  * <Badge color="blue">Improvement</Badge> Add more Sentry metadata
  * <Badge color="orange">Fix</Badge> Fix DNS Editor replacement and move the local change to a new tag
  * <Badge color="blue">Improvement</Badge> Move scripts around internally on all servers
  * <Badge color="orange">Fix</Badge> Make password reset trigger the correct system FTP account password reset
  * <Badge color="orange">Fix</Badge> Ensure SSL renewals on subdomains take GTS and LE into account and move the local change to a new tag
  * <Badge color="orange">Fix</Badge> Move SPF from `_relayspf.hosting4real.net` to `spf-record.net`
  * <Badge color="orange">Fix</Badge> Prevent account migration from double hashing passwords
  * <Badge color="orange">Fix</Badge> Make reseller account matching from WHMCS trigger correctly during account provisioning
  * <Badge color="orange">Fix</Badge> Increase internal CloudLinux API rate limits to prevent `429 Too Many Requests` during data synchronization
  * <Badge color="blue">Improvement</Badge> Show quota usage in percentage next to MB usage and highlight it when reaching `90%`
</Update>

<Update label="May 13, 2024">
  * <Badge color="blue">Improvement</Badge> Expose raw DNSKEY for registrars that do not support digests on the DNS page
</Update>

<Update label="May 10, 2024">
  * <Badge color="orange">Fix</Badge> Count correctly on paginated pages
  * <Badge color="orange">Fix</Badge> Remove domain limit for subdomains
  * <Badge color="green">Feature</Badge> Expose API endpoint for returning Photon Cache IPs for WAF, IPS, and IDS allow lists
</Update>

<Update label="April 12, 2024">
  * <Badge color="green">Feature</Badge> Implement per-domain statistics
</Update>

<Update label="April 03, 2024">
  * <Badge color="blue">Improvement</Badge> Prevent flickering by increasing `wire:loading` to `1000ms` for DNS
</Update>

<Update label="March 25, 2024">
  * <Badge color="blue">Improvement</Badge> Add new logo
</Update>

<Update label="March 19, 2024">
  * <Badge color="blue">Improvement</Badge> Improve stats performance by switching to ClickHouse materialized views
</Update>

<Update label="March 18, 2024">
  * <Badge color="orange">Fix</Badge> Fix **Add Email** button by forcing it as a link internally
</Update>

<Update label="March 17, 2024">
  * <Badge>Internal</Badge> Rework graph generation to support better templating
</Update>

<Update label="March 16, 2024">
  * <Badge color="blue">Improvement</Badge> Make HTTP stats available
</Update>

<Update label="March 15, 2024">
  * <Badge color="green">Feature</Badge> Add stats page with weekly and monthly views for DNS
</Update>

<Update label="March 14, 2024">
  * <Badge color="red">Security</Badge> Emergency upgrade Laravel Livewire to `3.4.9` to resolve XSS
  * <Badge color="blue">Improvement</Badge> Triple email storage
  * <Badge color="orange">Fix</Badge> Fix notifications not displaying correctly for domain and subdomain updates
  * <Badge color="orange">Fix</Badge> Remove `wire:navigate.hover` because it appeared buggy overall
</Update>

<Update label="March 13, 2024">
  * <Badge color="blue">Improvement</Badge> Change layout of the primary dashboard
  * <Badge color="orange">Fix</Badge> Resolve the `$persist` issue triggered on the login page
  * <Badge color="green">Feature</Badge> Expose Photon Optimizer metrics on the primary dashboard
</Update>

<Update label="March 11, 2024">
  * <Badge color="blue">Improvement</Badge> Expand Photon Optimizer support to subdomains
</Update>

<Update label="March 10, 2024">
  * <Badge color="green">Feature</Badge> Add basic account metrics for DNS queries, HTTP requests, and HTTP traffic for the past 7 days
</Update>

<Update label="March 09, 2024">
  * <Badge color="blue">Change</Badge> Send user ID and domain ID to Photon Optimizer to allow statistics generation for the panel
</Update>

<Update label="March 07, 2024">
  * <Badge color="blue">Change</Badge> Switch to `domainable` morph to allow future support for subdomains for Photon Optimizer
</Update>

<Update label="March 06, 2024">
  * <Badge color="blue">Improvement</Badge> Allow enabling `www.` setting for Photon Optimizer
  * <Badge color="blue">Change</Badge> Decrease shared memory cache to 300 seconds to accommodate `www.` settings
</Update>

<Update label="March 05, 2024">
  * <Badge color="green">Feature</Badge> Release the basic version of Photon Optimizer for WebP and AVIF delivery
  * <Badge color="orange">Fix</Badge> Fix password strength generation when filling out passwords manually in the WordPress installer
</Update>

<Update label="February 25, 2024">
  * <Badge color="blue">Improvement</Badge> Persist domain data locally on servers to reduce internal CloudLinux API calls in stage 1
</Update>

<Update label="February 24, 2024">
  * <Badge color="blue">Improvement</Badge> Change MX priority from dropdown to text field to allow more priorities
  * <Badge color="blue">Improvement</Badge> Default to the first domain in the dropdown on the **Add FTP Account** page
  * <Badge color="blue">Improvement</Badge> Configure Sentry for exception handling
  * <Badge color="blue">Improvement</Badge> Add additional validation for domains to use the internal RBL service
  * <Badge color="orange">Fix</Badge> Fix `500` internal server error caused by incorrect notification handling when enabling DNSSEC
</Update>

<Update label="February 03, 2024">
  * <Badge color="orange">Fix</Badge> Reload subdomain vhost on subdomain SSL issuance
  * <Badge color="blue">Improvement</Badge> Lock release on vhost processing after 30 minutes
  * <Badge color="orange">Fix</Badge> Allow deleting WordPress installations when a domain has been deleted
</Update>

<Update label="February 02, 2024">
  * <Badge color="blue">Improvement</Badge> Invalidate existing login session when logging in with SSO
  * <Badge color="green">Feature</Badge> Implement PHP X-Ray from CloudLinux
  * <Badge color="blue">Improvement</Badge> Enable default none policy for DMARC on zone creation
  * <Badge color="green">Feature</Badge> Implement SSO from `shop.hosting4real.net` to `hosting-panel.net`
  * <Badge color="orange">Fix</Badge> Fix missing styles that broke 2FA login
  * <Badge color="blue">Improvement</Badge> Upgrade the internal Livewire framework to `3.x` and Jetstream to `4.x`
  * <Badge color="blue">Improvement</Badge> Switch to using Livewire forms throughout the panel
  * <Badge color="blue">Improvement</Badge> Standardize modals and notification banners throughout the panel
</Update>

<Update label="January 20, 2024">
  * <Badge color="blue">Improvement</Badge> Add username as part of reset password email
</Update>

<Update label="January 16, 2024">
  * <Badge color="orange">Fix</Badge> Fix email setting updates that failed without setting a password
</Update>

<Update label="January 04, 2024">
  * <Badge color="green">Feature</Badge> Allow changing email passwords in RoundCube webmail
</Update>

<Update label="December 26, 2023">
  * <Badge color="green">Feature</Badge> Allow disabling Rspamd spam filter and setting reject score and feed this into the Rspamd cluster
</Update>

<Update label="December 22, 2023">
  * <Badge color="green">Feature</Badge> Add PHP 8.3 support and keep PHP 8.2 as default until `i360.so` releases
  * <Badge color="blue">Improvement</Badge> Move PHP version management to a central location
</Update>

<Update label="December 11, 2023">
  * <Badge color="blue">Improvement</Badge> Add info about connecting via SSH, SFTP, and RSYNC in the panel
</Update>

<Update label="November 19, 2023">
  * <Badge color="blue">Improvement</Badge> Move DNS backend from MySQL to LMDB with Lightning Stream
</Update>

<Update label="November 15, 2023">
  * <Badge color="green">Feature</Badge> Allow account-wide phpMyAdmin access through temporary users
</Update>

<Update label="November 13, 2023">
  * <Badge color="blue">Improvement</Badge> Add info about external DNS usage and `_acme-challenge` subdomains
  * <Badge color="blue">Improvement</Badge> Add overall mail config box to the Emails page
</Update>

<Update label="October 13, 2023">
  * <Badge color="blue">Improvement</Badge> Allow mass synchronization of SSL certificates to Imunify360 on a given server
</Update>

<Update label="June 21, 2023">
  * <Badge color="orange">Fix</Badge> Properly synchronize SSL certificate uploads during domain migration
  * <Badge color="orange">Fix</Badge> Fix virtual host generation to include the proper IPs during migration
  * <Badge color="blue">Improvement</Badge> Implement several migration tools for migrating accounts between servers
</Update>

<Update label="June 03, 2023">
  * <Badge color="green">Feature</Badge> Add FTP support
  * <Badge color="blue">Improvement</Badge> Automatically generate DKIM for servers upon deployment
</Update>

<Update label="May 20, 2023">
  * <Badge color="green">Feature</Badge> Allow adding a domain during account creation for an easier ordering flow
</Update>

<Update label="May 14, 2023">
  * <Badge color="green">Feature</Badge> Add PHP 8.2 support
  * <Badge color="blue">Improvement</Badge> Add ACME DNS record checker
  * <Badge color="blue">Improvement</Badge> Promote DNSSEC feature to stable and show it by default
</Update>

<Update label="May 06, 2023">
  * <Badge color="orange">Fix</Badge> Improve SRV validation to give more meaningful errors
  * <Badge color="blue">Improvement</Badge> Add `ns2` and `ns4` nameservers
  * <Badge color="orange">Fix</Badge> Prevent forwarders from looking at deleted records during validation
  * <Badge color="orange">Fix</Badge> Disable API rate limiting for trusted IPs
  * <Badge color="orange">Fix</Badge> Fix UI when cronjobs or URLs in URL Scheduler get too long
</Update>

<Update label="February 27, 2023">
  * <Badge color="blue">Improvement</Badge> Update internals from PHP 8.1 to 8.2
  * <Badge color="blue">Improvement</Badge> Update Laravel to `10.x`
  * <Badge color="orange">Fix</Badge> Default `user_type` to `user`
</Update>

<Update label="November 13, 2022">
  * <Badge color="green">Feature</Badge> Allow initial reseller functionality
  * <Badge color="orange">Fix</Badge> Handle punycode `xn--` domains better for SSL issuance by falling back to LE instead of GTS
  * <Badge color="blue">Improvement</Badge> Do not allow `www` subdomain to be created since it is mapped to the main vhost
</Update>

<Update label="July 12, 2022">
  * <Badge color="green">Feature</Badge> Implement provisioning API for `shop.hosting4real.net`
</Update>

<Update label="June 22, 2022">
  * <Badge color="blue">Improvement</Badge> Switch from Google Fonts to Bunny Fonts
  * <Badge color="green">Feature</Badge> Add support for alias domains
</Update>

<Update label="June 15, 2022">
  * <Badge color="green">Feature</Badge> Add SSL support for subdomains for admins
</Update>

<Update label="June 04, 2022">
  * <Badge color="blue">Improvement</Badge> List IDN domain format
</Update>
