KNJ Panel · Live Build Log
Latest Updates
current: v0.18.3Every feature as it ships, most recent first. This is the same information behind the roadmap's status pills, kept here in full so nothing gets trimmed.
Controller Panel
-
Initial Setup — delegating your domain to KNJ Panel now also sets up your first real hosting account in the same guided flow, instead of leaving that as a separate later step. A new step-by-step wizard walks through your first package, your first domain and account, and your server's own hostname & certificate, all in one pass, with a real check confirming your domain's nameservers are actually pointed here before anything is created. Keeping your current DNS provider instead remains a fully-supported, equally first-class choice — nothing about account creation applies to that path at all.
-
Setting up your server's own domain, properly guided for the first time — the temporary-hostname banner's "Set your domain" button now opens a real step-by-step wizard explaining exactly what DNS needs to look like before you submit anything, covering both letting KNJ Panel manage your DNS and keeping your current provider, with a live, non-blocking check at the end confirming whether it's already propagated. A new standalone Propagation Checker page lets you re-check any domain later without going back through the wizard. The OS Hostname and Panel Hostname & SSL Certificate cards, which used to ask for the exact same value twice, are now one card that sets both.
-
A self-update reliability fix, found live on two real production servers — a database migration during a routine update could fail partway through on a server with a lot of existing data, and a second attempt then failed differently, because the first attempt had already partially applied before it stopped. Every step of that migration now checks the server's own actual state before acting, so an update reaches the same correct result no matter which step an earlier attempt stopped on.
-
A Reset Password fix — choosing auto-generate when resetting an account owner's password could fail with a false "password confirmation does not match" error, caused by a browser autofilling a hidden, unrelated field left behind from the manual-password option. Fixed.
-
Clicking now clearly does something — Check System Updates now shows a spinner and "Checking…" text the moment it's clicked instead of giving no visible response until the result lands well afterward, and copying a generated password (Reset Password, account creation, anywhere one's shown to you) now displays "Copied" right next to the button until the page next reloads. Separately, every sidebar section in the Controller area can now be collapsed and expanded individually, the same way DNS and Email already could, with a new Expand all/Collapse all link at the top of the sidebar to do it for everything at once.
-
System Updates: the local server now joins the same Servers table as every linked server (View Packages, Update Server, Reboot Server, all in one place) instead of keeping its own separate card. A server with real pending updates now shows a distinct "Updates Available" status instead of just its last completed run's status, and the page refreshes that count on its own the moment an update or reboot finishes — no page reload needed to see it change.
-
System Updates can now check and apply OS package updates across every linked DNS-only or Mail-only server from one screen, the same way Panel Updates already pushes a panel software update out to all of them — a table listing every server, how many updates each has pending, whether a reboot is needed, and buttons to update or reboot each one individually. Found and fixed the same week: a linked server that had just finished updating could still show a stale "update available" badge for up to an hour, since the cached comparison it read from was never told a new release existed until the next scheduled check.
-
Malware scanning now shows real progress instead of just "a scan is running" — a live bar and a time-remaining estimate, computed from how the scan is actually going rather than a fixed guess. The admin Overview page also gained a card listing every account currently being scanned, each with its own bar, so you can check on one without hunting down its individual page first.
-
Scan for Malware, now bulk — the Malware Scan Overview page gained a "Scan Now" button that opens a checklist of every eligible account instead of only ever being reachable one account at a time from the full accounts list. Select as many as you want, or all of them, and start every scan with one click.
-
Two real gaps closed after a live incident — a new automated protection now watches every hosted site (not just this panel's own login page) for the classic WordPress abuse pattern, repeated hammering of xmlrpc.php or wp-login.php, and bans the source automatically. IP Blocker also gained a real admin-side page of its own for the first time, plus the ability to scope a block to one specific site on an account instead of it always applying account-wide.
-
A clearer status view for malware scanning — the settings and account-selection pages now live together under one "Malware Scan" menu item with tabs instead of two separate entries, and a new overview page shows your server's current status at a glance (a shield that's green when everything's clean, amber when something needs a look, red when an account's been suspended for it) plus recent findings across every account.
-
Scheduled malware scanning now emails you — the automatic nightly scan itself shipped last night; today it gained the notifications it was always meant to have. A nightly summary report; an immediate alert the moment an account is actually auto-suspended, separate from the nightly summary since that's urgent enough not to wait for; a reminder if a suspended account sits unresolved for longer than you're comfortable with (you choose the number of days); and the account owner is told directly whenever a scan finds anything on their own account, not just when it's serious enough to suspend.
-
A faster-loading Dashboard — the page always worked, but there was a small, noticeable delay every time it loaded, caused by a handful of status checks running one after another instead of all at once. They now all run together, so the page appears noticeably quicker with no change in what it shows.
-
A webmail fix — toggling your inbox between oldest-first and newest-first had no actual effect on the order shown; both directions displayed the same order. Found live from a real inbox screenshot. Now fixed.
-
A malware-scan reliability fix — testing this feature end to end against a real account (not just a controlled test) found two real issues: a scan could quietly stop partway through a large account without saying so, reporting clean rather than "didn't finish"; and a confirmed threat wasn't always being fully set aside the way it should have been. Both fixed, with real regression tests added. An account also now has anything it's actively running stopped the instant a confirmed threat suspends it, not just its website — closing the exact gap (a resource-draining process left running after a hack, before anyone noticed) that this whole feature was originally built to catch.
-
A second security fix, found double-checking the first one — two-factor setup, password changes, and profile updates are no longer offered while support is viewing your account on your behalf (impersonation). A real issue was found where clicking these could silently affect the wrong login instead of yours. These settings can now only ever be changed by logging in directly as the account owner, keeping your two-factor codes tied to your own device the way they should be.
-
A two-factor authentication setup fix — turning on two-factor authentication from your own account panel, reached through your own domain's address, could return a generic page-not-found error instead of the setup screen. The same underlying routing issue already fixed once for signing in directly, now also fixed for security settings (two-factor setup, password changes) reached the same way. Already-live accounts pick this up automatically, no action needed.
-
A second signup form fix, the same day — the fix just below solved a customized embed submitting via JavaScript, but a real customer's retest afterward still failed, with the same generic error. A live investigation found a genuinely separate cause hiding behind the same symptom: a signup form submitted through your domain's own account-area address (rather than the panel's direct server address) was being mistakenly redirected somewhere that address doesn't exist, so it never reached the signup endpoint at all — the exact same shortcut-routing issue already fixed once for login further down this list, just for a newer kind of address that didn't exist yet when that fix was written. Already-live domains fix themselves automatically the next time anything routine touches their setup — no action needed.
-
A signup form fix — the newsletter/subscriber embed already worked as a plain form, but a version customized to submit via JavaScript instead (for a smoother, no-reload experience) could be silently blocked by the browser's own cross-site security rules, showing a generic connection error with nothing to explain why. That one signup endpoint now explicitly allows it, whichever way your own page submits it.
-
A real production incident, fixed the same day it happened — moving a mailbox onto this server (restoring from an old host, or shifting between two of this server's own machines) used to bring along a few of the mail software's own private internal files alongside the real messages and filter rules. One of those files, built in a shape a different mail system uses, sat harmless until a filter rule actually tried to read it — at which point the entire mailbox's folders became briefly unreachable, though the messages themselves were never at risk. Fixed on the live account within minutes of being reported, and fixed for good so it can't happen on any future move: only real content — messages and filter rules — ever comes along now.
-
KNJ Webmail v0.7.2 — a long inbox used to grow the whole page instead of scrolling inside the message list itself, pushing Contacts, Settings, and Log out off the bottom of the screen; the message list now scrolls on its own, with the sidebar always in view. Separately, the folder list disappeared entirely on the Contacts page, leaving no way back to Inbox except through Compose — it now stays visible everywhere. Also fixed the same day: on a server where mail runs on its own separate machine, the contacts sync between KNJ Webmail and Roundcube could silently fail to actually reach it, so a contact could exist in one and never appear in the other — already-affected accounts fix themselves automatically, no action needed.
-
A routing bug fixed on your own domain, your own ports — visiting your account area on port 2083 or the admin area on port 2087 directly on your own domain could return a generic browser error instead of your login page, and the memorable webmail.yourdomain.com shortcut could be affected the same way. Found live on a real customer domain. Already-live domains fix themselves automatically the next time anything routine touches their setup — no action needed.
-
Your site never goes dark waiting on a certificate — if a domain's free SSL certificate genuinely can't be issued yet (most commonly a brand-new domain's DNS still spreading to the wider internet), it now automatically gets a temporary certificate instead of running with no HTTPS coverage at all. Found live on a real customer restore: a domain with no certificate at all could briefly fall through to a completely unrelated site's content instead of its own. The temporary certificate is honest about not being fully trusted yet — visitors see a browser warning — but it's always for the correct site. It upgrades itself to the real, trusted certificate automatically within minutes once DNS catches up, no action needed, or it can be retried manually right away.
-
Your webmail shortcut now opens the right client — visiting webmail.yourdomain.com or yourdomain.com/webmail previously always opened the built-in client, even for an account whose Email Accounts page has Roundcube set as its default; it now respects that setting, the same way the account panel's own "Launch Webmail" link already did. Found investigating a real restored account whose owner uses Roundcube day to day but never saw contacts that had genuinely restored correctly — just to the other client. Also added the same day: KNJ Webmail and Roundcube now keep contacts in sync automatically, both directions, continuously — add, edit, or delete a contact in either one and it's reflected in the other, with nothing to configure.
-
A same-day fix for the restore-time backdoor scan added earlier today — a real false positive found running it against the actual archive it was built to catch: a genuine WordPress core file every restored site depends on could have been wrongly flagged and left out of a restore. Fixed by checking that the suspicious pieces genuinely appear close together, not just somewhere in the same (sometimes very large) file. The same fix also turned up three more real hidden backdoors on that original customer restore that the first manual check had missed.
-
Restore from cPanel Backup now screens every incoming file for known malicious-code patterns before any of it reaches a live account — found necessary on a real customer restore, where the archive turned out to carry hidden backdoor files that a standard antivirus scan never caught, since they were custom-written with no recognizable signature. A flagged file is simply left out of the restore entirely; a flagged database is still restored, but clearly flagged in the run's log for a manual check, since safely editing a single row out of a real database isn't something worth guessing at automatically.
-
A second, deeper cause found for the dashboard hang reported on a satellite server — the first fix (a stuck status check) was real, but a separate issue also had to go: a prior fix for the webmail/account address-bar shortcuts had accidentally forced every page on a server to look for its design files in the wrong place, which on a Mail Only/DNS Only server pointed at a port that doesn't exist there and is correctly firewalled off — turning it into a silent, permanent wait instead of a quick error. Already-live servers fix themselves automatically, no admin action needed.
-
Restore from cPanel Backup now also brings across email forwarders, FTP accounts, and cron jobs — the same restore that already recreated your files, databases, mailboxes (with original passwords), and contacts now covers three more real categories found doing a full pass through an actual cPanel archive: mail forwarding rules, extra FTP logins (original password carried over the same way a mailbox's is), and scheduled cron jobs.
-
Two real production issues found and fixed the same day — a single unresponsive service check could hang the entire dashboard indefinitely on a satellite server, wiping out every other service's already-correct status along with it; each check now times out independently. Separately, a server where hosting files live on their own dedicated disk (rather than sharing the operating system's disk) was never having its disk usage or quota enforcement tracked there at all — already-live servers now fix this automatically, no admin action needed.
-
Restoring from a cPanel backup now brings your saved contacts too — previously your mail, files, and subdomains all came back, but your saved address book didn't. Every contact, contact group, and group membership from the old host is now restored automatically, including for a mailbox that had never opened webmail before.
-
A real, whole-account malware scanner — previously the only virus scanning in the panel covered mail content passing through the mail server, nothing else. A new "Scan for Malware" action on each account now scans that account's entire website files on demand, with live progress and a clear list of anything actually found, rather than leaving website-level threats invisible until they're noticed some other way.
-
Your domain, your own certificate, on your own ports — connecting to your account area (port 2083) or the admin area (port 2087) using your own domain directly previously always showed the panel's own certificate and a mismatch warning. Both now present your domain's own already-issued certificate the moment it exists, no new certificate needed.
-
Two more real issues found testing that same cPanel restore further: a generated password containing certain characters could silently corrupt the site's own configuration file during restore, now fixed; and a restored account with more than one subdomain was only getting a working address for the first one, now every subdomain resolves correctly. Also fixed: the account dashboard's disk and bandwidth usage figures could read "Unlimited" instead of a real number immediately after a restore.
-
A real cPanel restore, fixed against a real customer account — a live restore surfaced three issues no earlier testing had: generated usernames are now a full 8 characters instead of 7, so every restored database lines up correctly, restored databases now carry over their original password directly instead of a fresh one that no longer matched the site's own already-copied configuration, and a File Manager error on a restored account's files is fixed.
-
Security Scan gets "Fix Now" buttons — a failing check can now be resolved with one click where it's genuinely safe to do so (re-enabling the firewall's default-deny policy, restarting brute-force protection, turning on automatic security updates), a direct link to the right page where a separate feature already owns the fix, or clear step-by-step instructions where auto-fixing would be the wrong call — like SSH configuration, since an admin could be connected over the exact setting being changed.
-
A real, editable Firewall page — previously just a read-only status dump of the server's own firewall. Now a structured rule table for arbitrary port/protocol/action/source rules, separate from the existing per-service allow/deny lists (Panel Login, SSH, FTP, Mail, DNS), which are untouched and still shown read-only alongside it. Every baseline server rule and every rule from another feature stays firmly read-only here too — nothing on this page can accidentally lock an admin out of their own server, including a new port-collision guard that refuses a rule anywhere near a port the server or another feature already relies on before it's ever applied.
-
A genuinely temporary admin-issued password — Reset Password for an account owner now offers a third mode alongside auto-generate and set-explicitly: email a one-time password that expires in 24 hours (or the instant it's used, whichever comes first) and forces a real password to be set immediately on the next login, before anything else in the account is reachable. Both of the existing modes also gained an option to email the new password straight to the account owner rather than only ever showing it once in the admin UI.
-
Restore a cPanel Account, now a real full restore — subdomains, mailboxes, and their actual mail content are now genuinely recreated from a real cPanel backup, not just listed for you to redo by hand. Original mailbox passwords carry over unchanged. Only SSL certificates and cron jobs still need manual recreation. Also fixed while testing against a real ~975MB archive: uploads were silently capped well below the advertised 4GB limit, a validation failure could come back as a blank page with no error shown, and there was no feedback during a large upload beyond the browser's own spinner — a real progress bar now shows instead.
-
Quota enforcement, actually enforced again — every quota change made through the panel (account creation, package change) was silently failing to reach the filesystem, invisible unless you went looking. A systemd sandboxing setting was the cause; fixed, and quota changes made through the UI now correctly take effect immediately.
-
Manage Servers gets a real heartbeat — every linked DNS-only or Mail-only server now reports its own panel version back on every connection test and health check, shown right on Manage Servers with a 'Latest' pill once it's current. Panel Updates gained an 'Update all linked servers' button that updates every satellite from one click instead of logging into each one separately, with live progress tracked from the main server. Improved a few days later so the Linked Servers table there shows each server's real current version and an Update available pill on page load, not just the status of whatever update was last run from that page.
-
Your domain stays your domain — /webmail, /account, and /controller (plus the webmail.
and account. shortcuts) previously redirected a visitor's browser straight to the panel's own hostname on login. All three now proxy through instead, so the address bar never leaves the customer's own domain, with a real SSL certificate issued automatically for the webmail./account. subdomain shortcuts. The admin/Controller entry point itself deliberately keeps its own separate hostname — the same boundary real cPanel/WHM draws by never putting its own admin login on a customer's certificate. -
Create Account no longer leaves a surprise database behind — every new account used to get a starter MySQL database and user automatically, whether the owner asked for one or not, matching what real cPanel/WHM does by default. Removed from both Create Account and Convert Addon Domain to Account; adding a database is opt-in from the account's own MySQL Databases page instead, exactly as it always was for every database beyond the first.
-
Account deletion now fully cleans up a linked Mail Only server — deleting an account previously left its domain and mailboxes still active in the Mail Server's own routing tables indefinitely, found live during a pre-launch audit of the real production stack. Account removal now tells a linked mail server to drop everything for that account the moment it's gone, the same way it already does for DNS.
-
Create Account's "attach to an existing login" mode, actually fixed — it shipped 2026-08-28 alongside a morning bug sweep, but the email-uniqueness check on that form still ran even when reusing an existing login's email was the entire point of the mode, so every single submission in that mode failed. Fixed to only check uniqueness when actually creating a brand-new login, and added the first real test coverage for that path — nothing had ever exercised it end to end, which is exactly how it shipped broken.
-
SMTP submission authentication, self-healing — Dovecot ships its Postfix authentication socket commented out by default, and while a fresh install already uncomments it correctly, an already-provisioned mail server had no way to pick that fix up short of a full reinstall. Found live on a real Mail Only satellite: outbound mail from both webmail clients failed with a generic authentication error, while incoming mail worked fine the whole time. Now self-heals on a routine hostname/certificate re-confirm, no admin action beyond that needed — including catching and fixing a bug in the self-heal's own detection logic the same day, which was quietly matching Dovecot's commented-out default and skipping the repair entirely.
-
A Dovecot plugin dependency fix — webmail logins were intermittently throwing "Internal error" banners on both Roundcube and KNJ Webmail, traced to a mailbox-quota plugin loaded without the base plugin it depends on. Every plugin combination is now loaded correctly together.
-
The real cause of Roundcube's webmail 500 errors, found and fixed — after several rounds of platform-level troubleshooting, the actual root cause turned out to be a PHP 8.5 language change: PHP 8.5 ships its own native version of a helper function Roundcube's own startup code was already defining independently, and the two collided fatally on every single request. The fix guards Roundcube's own definition so it only applies on PHP versions that don't already have the native one, self-healing automatically even after a routine package update silently reintroduces the unguarded original.
-
Roundcube webmail routing fixed on Mail Only satellites — a shared nginx configuration block needed to serve Roundcube was accidentally limited to the main server role, so a linked Mail Only satellite (which also runs a real Roundcube instance) returned a bare 403 on its own webmail. Also fixed the same day: a session-encryption key that was landing several characters short of the minimum Roundcube requires on some installs, and a logs directory with the wrong permissions for Roundcube to write to.
-
DNS now follows the active mail server — outbound mail authentication (the MX record) previously always pointed at the web server's own IP address regardless of where mail actually ran, and the deliverability checker's reverse-DNS lookup had the same blind spot. Both now correctly track whichever server — the main one or a linked Mail Only satellite — is actually handling mail for a domain, with a one-click repair button for any account still pointing at the old target.
-
Nameservers, now real multi-nameserver management — previously every DNS zone this server generates pointed at a single hardcoded nameserver name. A new Nameservers page lets an admin configure as many as are actually in use, every new zone gets one NS record per configured nameserver, and Restore Default Records repairs each one individually rather than assuming just the one.
-
Mail Only servers get their own real dashboard — a linked satellite mail server used to fall through to the same dashboard the main server uses, including a licence banner that made no sense on a mail-only box. It now shows what actually matters there: total mailboxes, live mail queue depth, and recent delivery activity, alongside a Service Status view filtered to just the mail daemons that box actually runs. The initial setup wizard's server-linking step, previously written only for a DNS-only satellite, now covers a Mail Only one too.
-
Mailbox data migration — move a mailbox's actual mail (not just its metadata) between the main server and a linked Mail Only satellite in either direction, queued and tracked with a live progress view rather than a manual file copy.
-
A morning bug sweep — nine fixes in one pass: the server stats bar now reports disk usage separately for the root filesystem and a separate `/home` mount instead of conflating the two; the Database Browser and Database Maintenance tools both now refuse to run arbitrary queries or kill connections against the panel's own internal databases; System Updates moved its live progress log above the update list and now flags any pending update that needs a reboot; a misaligned status pill on the Security Scan page was corrected; Create Account gained the "attach to an existing login" mode mentioned above; and a certificate-issuance timeout that could leave a hostname change stuck partway through was both extended and made idempotent, so re-confirming an already-correct hostname no longer re-runs the full mail-and-DNS setup it only ever needed to do once.
-
Notifications, one page for every alert — the old Server Contacts card and the standalone Webhooks page are gone, replaced by a single Notifications page under Servers: who gets alerted (defaults to the first admin account if nobody's set an email), every alert type grouped by severity (Critical/Warning/Info) with its own on/off switch, and the same Slack/Discord/generic webhook connections right alongside it. Found and fixed a real gap while consolidating: SSL-issuance-failure alerts had drifted from every other alert type, with no secondary-recipient support and no admin-email fallback — unified onto the same path as everything else.
-
Real admin alerting, plus two notification toggles that had never actually worked — a new alert service is now the one place every server/panel health signal in the codebase funnels through to someone: WAF degradation, a failed scheduled backup, a licence about to expire, a linked satellite server going unreachable (and recovering), and a new panel update becoming available were all being detected and stored already, just never pushed to anyone. Also closed out two customer-side notification checkboxes (disk usage warnings, SSL expiry warnings) that had sat on the account panel doing nothing since the day they shipped.
-
A Web Application Firewall — real ModSecurity plus the OWASP Core Rule Set, not a lightweight regex substitute, built from source since Ubuntu doesn't ship a ModSecurity nginx module. Server-wide default-on, with a per-site Enabled/Detection Only/Disabled override and an admin-configurable paranoia level. A scheduled health check sends a real synthetic attack every 5 minutes and confirms it's actually blocked, not just that the module loaded.
-
Email Archiving — every message can now be silently copied to a private archive mailbox for compliance, incoming, outgoing, or both independently, with a configurable retention window (or kept forever) and admin browse/download of the original raw copies.
-
Virus & malware scanning — ClamAV now sits in the mail chain the same way spam filtering already did, rejecting or discarding infected mail right at delivery, whichever you'd rather have happen.
-
Off-site backup destinations — mirror every completed backup to a remote SFTP, FTP, or S3-compatible destination automatically, on top of the local copy that's always kept and stays authoritative for every restore.
-
Per-mailbox quota & suspension — set a real, enforced size limit on any single mailbox and suspend one independently of the whole account, taking effect immediately rather than only at the next restart.
-
Mail client autoconfiguration — point Thunderbird, Outlook, or a phone mail app at an account and it finds the right IMAP/SMTP hostnames, ports, and encryption on its own, no manual typing required.
-
DNS zone file import/export — download any zone as a standard BIND file, or upload one to populate a zone from scratch.
-
Mail Only, fully finished — the last three pieces of a satellite mail server now behave exactly like a locally-run one: forwarding an address, generating a DKIM signing key, and viewing mail statistics all correctly reach wherever mail actually runs, instead of quietly acting against the main server regardless of where a linked satellite handles delivery.
-
The Mail Only server role, closed out, plus cross-server admin login — a linked satellite mail server now behaves as a first-class part of the panel rather than a bolt-on: every remaining mail feature (filters, greylisting, relay, spam settings, mail queue, delivery logs, catch-alls, mailing lists) routes to wherever mail actually runs instead of always assuming the main server, KNJ Webmail follows it there too, and Service Status shows the satellite's real Postfix/Dovecot state instead of the main server's own irrelevant one. And a new "Log in" button on Manage Servers takes you straight into a linked satellite's own dashboard (Mail Only or DNS Only), already signed in — no second password to remember or type, using the same trusted connection already set up when the two servers were linked.
-
Database Search & Replace — find and swap a value across every table in a database, right from the account panel. Built for the gap Restore from cPanel Backup surfaces: a migrated site's database can still have its old domain baked into a settings table (a WordPress siteurl, for example). Runs as your own database user, never as root. Values stored in PHP's own serialized format are unpacked, changed, and repacked correctly rather than string-replaced in place, which would otherwise silently corrupt them.
-
Restore from cPanel Backup, now in the client panel too — an account owner can import a real cPanel backup straight into their own existing account: files are only ever added (nothing already on the site gets overwritten), and a fresh database is created alongside whatever they already have. The controller-side version still creates a whole new account instead. Either way, email accounts, SSL certificates, and cron jobs found in the archive are listed for manual recreation rather than guessed at.
-
Restore a cPanel Account — upload a real cPanel backup and it becomes a working account here: website files and MySQL databases are restored automatically, with fresh database credentials rather than reused old ones. The domain comes from the archive itself and gets a fresh DNS zone on this server, not the archive's own DNS records. Email accounts, SSL certificates, and cron jobs found in the archive are listed for manual recreation instead of guessed at.
-
BoxTrapper — approving a held sender now releases everything of theirs already sitting in Pending straight into your Inbox, instead of only affecting mail from that point forward. Replying to someone via KNJ Webmail also approves them automatically, so a conversation you've already started never gets held again.
-
PHP Extension toggling moved to the same background-job pattern as Perl Modules and PHP PEAR Packages — closes out the same rare edge case for extensions that install their own command-line tools or documentation the first time they're enabled on a given server.
-
File and Directory Restoration — browse a completed backup's file tree and restore any single file or folder in place, without touching anything else on disk. A full account restore was already real; this closes the gap for "I just need this one file back."
-
Update reliability — self-updating a real install now keeps every system-level config file it manages in sync, not just the update mechanism itself. Perl Modules and PHP PEAR Packages installs also moved to the same background-job pattern already used elsewhere in the panel, closing out a rare edge case for modules that install their own command-line tools.
-
Backup User Selection — a new admin page under Backups listing every account with a checkbox controlling whether it's included in the automated scheduled backup run. On-demand backup of any single account, for either admin or owner, was never affected either way and still works exactly as before.
-
PHP PEAR Packages — a curated set of real, verified PEAR packages (Mail, DB, Auth_SASL, and more) an account can install for their own PHP scripts, one click, no admin needed. Same self-service pattern as Perl Modules.
-
Self-service Perl Modules — the same curated set of common CGI modules the Controller side already installs from, now reachable directly from the account panel's Software group, no admin needed.
-
MariaDB version upgrades — a guided major-version database upgrade, offering only real, currently-supported LTS releases as targets, never a rolling or release-candidate build and never a downgrade. A mandatory pre-upgrade snapshot (a crash-consistent copy of the database directory plus a full logical dump) gives a real way back before any upgrade runs, with a live terminal-style log the whole way through.
-
Statistics Software Configuration — real AWStats, not a reimplementation. A global toggle turns it on server-wide, then every account gets a new AWStats page under Metrics with a month picker and an Update Now button. Full browser, OS, search-engine, and referrer breakdowns on top of what Traffic & Visitors already shows.
-
Server-level Cron Jobs — schedule one-off sysadmin tasks (log rotation tweaks, cleanup scripts) that don't belong to any single hosting account, from a new page under System. Same real-crontab approach as the existing per-account Cron Jobs feature, so nothing here ever needs a terminal to set up.
-
A Feature Manager page, plus a real Perl module installer — Feature Manager edits which of 26 account-side capabilities each hosting package grants, all from one screen instead of opening every package individually; the same setting is also still editable from a single package's own edit form, both write to the same place. Twenty of those capabilities (things like Directory Privacy, Deploy from Git, IP Blocker, and Error Pages) were only cosmetically toggleable until now — the underlying page was still reachable directly even with the feature switched off for a package, so every one of them now genuinely blocks the page itself, not just its sidebar link. The Perl module installer sits alongside the existing PHP extension manager: a curated set of commonly needed modules (database drivers, HTTP clients, JSON/XML parsing) with live installed-state detection and one-click install.
-
Database Access Hosts — a server-wide view of every database user across every account and the remote hosts each is allowed to connect from, with a direct grant/revoke control, without needing to go through the account owner.
-
SSL Storage Manager — a full repository of every certificate this server actually has on disk, independent of which site (if any) is currently using it, so a certificate left behind after a domain was removed or a replacement never gets cleaned up is now visible and removable. Distinct from the existing SSL/TLS page, which only shows a site's current certificate.
-
A real web page template editor for the default and suspended-account placeholder pages, with a live preview and one-click restore to the built-in default — previously only editable by hand on the server. An outbound port-25 lockdown, off by default: every process on the server except the mail server's own delivery agent can be blocked from opening a direct connection to a remote mail server, closing the exact path a compromised account's script would use to send spam straight out, bypassing this server's own queue and DKIM signing entirely. And Security Questions — an unfamiliar-IP Controller login can now be interrupted with an extra security question, on top of any two-factor authentication already set up, with each admin or reseller choosing their own question and answer.
-
A quick-filter search box now sits above General at the very top of the sidebar in both the Controller and My Account areas — type and the nav narrows in place as you go, no page reload, with non-matching items and empty sections simply disappearing rather than greying out. Press / from anywhere on the page to jump straight into it, Enter goes to the first match, Escape clears it.
-
A full re-audit of the admin feature set against our own running code rather than trusted from notes — found two items that had been filed away as "not needed" months ago on the mistaken assumption they were still blocked by something that had since shipped. Both fixed, plus four real gaps built: Parked Domains gets an admin-side list across every account's addon domains; Spam Scanner Tuning controls the spam scanner's own process limits; Database Configuration exposes a deliberately small, safe slice of server-wide database tuning, not everything; and a new Security Policies page rolls up every login-protection feature in one place, plus a genuinely new one — requiring two-factor authentication for every Administrator and Reseller, not just leaving it optional. One item was deliberately redesigned rather than built as originally scoped: a full command-line terminal would mean opening root access directly from the browser, which runs against the unprivileged-app design this panel has held to since day one. Built Diagnostics instead — real-time server status checks (uptime, disk, memory, open ports, service health) through the same tightly-controlled path every other admin action already uses, with no new door opened.
-
Webhooks, closing out Everything else — subscribe an endpoint to real account events (created, suspended, unsuspended, terminated) or SSL issuance failure, and every delivery is a signed POST you can verify. Also found and fixed a real gap while wiring the SSL event: the existing "notify on SSL issues" setting was being saved but never actually triggered an email — it does now, and DNS resolver configuration, admin notification routing, and remote reboot all turned out to already be shipped and just weren't marked Live.
-
Traffic & visitor statistics — a new Traffic page for any account, reachable from its row on List Accounts: requests, unique visitors, bandwidth, and a response-status breakdown for a chosen month, plus top pages and top referrers. Built on the same access-log parsing already powering bandwidth tracking. Also found and corrected while going through this section: Server-wide settings and Timezone configuration were already fully shipped on the Server Settings page and just hadn't been marked Live on the roadmap.
-
Live resource monitoring, closing out Backup & Server Status — a real server-wide process list, sorted by CPU usage, with a per-process Kill button for a genuinely runaway script, plus a full disk usage breakdown across every real filesystem on the box. Killing anything the panel or hosted sites depend on (nginx, PHP-FPM, MariaDB, SSH, BIND) is refused outright, live-verified by actually trying it against the running server and confirming it stayed up.
-
The Packages & Resellers section, closed out — a reseller now gets a real detail page (usage totals across their accounts, their own login independently suspendable without touching accounts they manage), per-package feature control (toggle FTP, WebDAV, App Installer, Cron, Backups, and API Tokens per hosting package), bulk account reassignment between resellers, and an 8-permission checklist governing exactly what a reseller can do. Account migration/transfer rounds it out — one-click export of a completed backup to a portable archive, and an admin-only import that creates and restores a fresh account from one, verified end to end with a real disposable account: files and its database round-tripped byte-for-byte through a full export → delete → import cycle.
-
OS package management — search the server's apt package index right from the panel and install a package on demand, the same access as a terminal but without needing one. Runs queued with a live terminal-style log, and closes out the last item in the Software & PHP section.
-
The Databases section, closed out — a visual database browser lists every database on the server, not just ones the panel created, and lets an admin drill into a table's rows or run arbitrary SQL directly (the same root-equivalent access a real WHM operator already gets from phpMyAdmin). Database Maintenance Tools adds a live server status view, the real process list with a per-process Kill button, a slow query log toggle, and one-click repair/optimize for any database.
-
The SSL/TLS section, closed out — CSR generation lets an admin generate a fresh private key and CSR for any hosted site, entirely in-process via openssl, never touching disk outside the request. Certificate inventory turns the existing per-site SSL list into a genuine one: every certificate now flags itself once inside 30 days of expiry, and the panel's own certificate appears alongside every hosted site's rather than living only on its own separate page. And TLS policy configuration adds a server-wide choice between Modern (TLS 1.3 only) and Intermediate (TLS 1.2+1.3, matching Mozilla's own well-known presets exactly) — one setting, applied to every certificate on the server at once, verified live with real TLS handshakes on both settings before shipping.
-
API Tokens, closing out the Security section — token abilities now match what WHMCS's own cPanel integration calls for hosting automation (create, suspend, unsuspend, terminate, change package, reset password), each independently scoped rather than one broad read/write pair, so a billing integration token minted only to suspend on non-payment can never also terminate or create accounts. Account-level tokens (DNS read/write) ship alongside it, and both now have a real API for a token to actually call — this is also the foundation a future billing system will automate against.
-
Access Control and a central Password Policy, two items in the Security section — per-service IP allow/deny lists let Panel Login, SSH, FTP, Mail, and DNS each be switched from open-to-everyone to allow-listed at the firewall level, independent of and in addition to the existing fail2ban brute-force protection. Password strength policy replaces the fixed minimum length enforced per-form with one central, admin-configurable policy (length, mixed case, numbers, symbols, and an opt-in check against known data breaches) that now governs every password set anywhere on the server.
-
The Accounts section, closed out — the four genuinely new items shipped together, alongside marking two already-built ones (Edit Account, Package upgrade/downgrade) correctly on the roadmap for the first time. Bulk account removal adds select-all/per-row checkboxes to List Accounts, mirroring KNJ Webmail's own bulk-select pattern — each account is still deprovisioned through its own background job, just triggered together. Admin password reset gives an admin the same auto-generate-or-set-explicitly choice already offered at account creation, for resetting an existing owner's login. Access log downloads brings the account panel's own Raw Logs page to the admin side — the same privileged log-read action, just reachable per-account from List Accounts. And broadcast messaging sends one email to every account owner on the server, queued rather than sent inline so a large account list can't hold up the request that triggers it.
-
Service Configuration, closed out — the five remaining items in that section all shipped together: mail relay & filtering configuration now covers both sender and recipient blocklists, wired into the same restriction chain the rest of mail security already builds so nothing can independently reopen the server as a relay. WebDAV access mounts a hosting account's files over real nginx WebDAV, not a separate daemon, scoped to a whole site or a single subdirectory. Log rotation is now admin-configurable (frequency, retention, compression), with a 32-day retention floor enforced server-side since bandwidth reporting rebuilds each month from the same rotated logs. Service certificates gets a read-only page making explicit what was already true — the panel issues one certificate and every TLS-speaking service reuses it. And the Service Manager can now start, stop, and restart individual services from the UI, with every control running as a background job rather than inline with the request that triggered it, and stopping a service the panel itself depends on blocked outright.
-
Panel Updates — a real one-click Update Now button, with the same live terminal-style log as System Updates so you can watch the process happen. The SSH command is still shown alongside it for anyone who'd rather run it themselves. Backed by a new dedicated release pipeline that builds and ships every version.
-
Licensing — a fresh install now requests a 30-day trial automatically from our own separate licence server, tied to the server itself so wiping and reinstalling can't grant a second one. A persistent banner counts down the days remaining; once a trial or licence lapses, the Controller and My Account areas lock to a new Licence page (under Servers) until a real key is activated — existing sites, mail, and DNS are never touched, only the panel's own management UI.
-
Panel login security — a new fail2ban jail bans an IP after 5 failed panel logins in 10 minutes, the same real network-level protection SSH already had. Opt-in Two-Factor Authentication for every role, from a new My Profile page: an authenticator app (QR code setup), recovery codes, or a one-time code emailed on request as a third fallback if both of those are unavailable.
-
A real backup engine — full account backups (files, every database, all mailboxes, plus a DNS zone and FTP config snapshot) written locally, scheduled per the existing daily/weekly/monthly settings or triggered on demand. Restore is real, not a stub — available to both the admin and the account owner, and regenerates the account's files, databases, and mail from exactly what was captured at backup time. Live-verified against a real disposable test account: files and a database deliberately corrupted after backup, then restored, confirmed byte-for-byte back to the original with correct ownership.
-
FTP Settings — server-wide vsftpd tuning (connection limits, idle session timeout, upload umask, passive port range, welcome banner). Service Status now also reports vsftpd's live state alongside the other daemons.
-
FTP account support — vsftpd, with SQL-backed authentication using the same architecture as mail (a read-only MySQL user queried directly by PAM, no separate virtual-user database to keep in sync). Every FTP session runs as the account's own real system user, so uploads are ownership- and quota-consistent automatically. Live-verified over real TLS: upload, chroot containment, and a scoped sub-account correctly jailed to just its own subdirectory.
-
Security Scan — a new self-service server health check at the top of the Security nav group. Checks the server's own firewall, SSH's effective configuration (not just what a config file says), fail2ban, unexpected public ports, database exposure, and automatic security updates, with a plain-language recommendation for anything that isn't a clean pass and an overall 0-100 score. Read-only, and distinct from our own internal code security audits.
-
Disk quota is now a real, kernel-enforced ext4 quota — a write past an account's limit fails at the filesystem level, not something the app polices after the fact. Bandwidth has no OS equivalent, so it's tracked by parsing Nginx access logs (self-correcting, re-derived from scratch every refresh rather than a running total) and an account over its limit is auto-suspended. Both refresh every 15 minutes via the app's first scheduled job. List Accounts and the account-side Disk & Bandwidth page both show live usage against the package limit.
-
Branded default and suspended-account placeholder pages — self-contained static pages with the real KNJ logo, shown on a freshly created domain and on a suspended one. Live-verified end to end on real DNS/SSL, including catching and fixing a bug in the provisioning script that was silently breaking every action.
-
Modify an Account (edit owner, package, reseller after creation) and Suspend/Unsuspend Account — websites go down to a suspended page while mail and DNS keep working, ready for a future billing system to trigger automatically. Server Settings: upstream DNS resolver configuration, server contacts (update/SSL-failure notification emails), and a graceful reboot button. Account SSL page can now generate a certificate signing request and private key in-browser. KNJ Webmail v0.7.1 — bulk CSV contact import.
-
Track DNS (live dig lookup in the panel), Server Settings (timezone via timedatectl + OS hostname via hostnamectl, linked from the post-install Server Setup flow), Raw Log Download (per-domain nginx access and error logs on the account side).
-
KNJ Webmail v0.7.0 — contacts, with autocomplete on compose and one-click save from any message. Verified against the same real external Gmail inbox.
-
KNJ Webmail v0.6.0 — rich (HTML) compose with a sanitized editor and real multipart/alternative sending. Verified against the same real external Gmail inbox.
-
KNJ Webmail v0.5.0 — multi-select bulk move/delete. Verified against the same real external Gmail inbox.
-
KNJ Webmail v0.4.0 — a Settings page for autoresponder and Outlook-style mail filing rules, sortable columns. Verified against the same real external Gmail inbox.
-
KNJ Webmail v0.3.0 — create your own folders and drag messages onto them to file. Verified against the same real external Gmail inbox.
-
KNJ Webmail v0.2.0 — real folders (Inbox/Sent/Drafts/Trash/Spam) with unread counts, delete-to-Trash, attachments, in-folder search, pagination, and drafts. Verified against the same real external Gmail inbox, both directions.
-
KNJ Webmail v0.1.0 — our own from-scratch webmail client, built into the panel and styled to match it, selectable alongside Roundcube. Verified against the same real external Gmail inbox, both directions.
-
Webmail — real Roundcube, wired to the existing Dovecot/Postfix, own DB and PHP-FPM pool, verified against a real external inbox. Create Account can now set a password explicitly instead of only auto-generating one.
-
Server info & stats bar (hostname, load, RAM/disk) on every Controller page; panel version tracking with an update-available ticker; a System Updates page for pending OS packages with a live terminal-style log.
-
Fixed orphaned mail storage left behind when an account or domain is removed.
-
Addon domains, per-zone DNSSEC, DNS clustering (master-side), inline bulk-save zone editing, restore-default-records recovery, outbound mail relay, editable mail server config, mail queue/delivery/statistics tooling, filter incoming email by domain/country, greylisting, spam filtering, autoresponders, email deliverability checker.
-
MultiPHP Manager (install/switch versions, per-account INI overrides, extensions, ionCube), SPF/DKIM/DMARC automation, DNS zone templates, nameserver diagnostic report, DNS cleanup tool, domain forwarding.
Client Panel
-
A real Deploy from Git safety fix — a redeploy used to unconditionally sweep away any file in that location git itself didn't track, with no way to tell a stale leftover apart from something that genuinely needed to stay. Every deploy already correctly updates or removes anything git actually tracks, including a file you delete from your repository and push — that part needed no fix and still works exactly the same. The separate, riskier sweep of everything else is now off by default, protecting subdomains, addon domains, and any file you've added by hand automatically. An opt-in checkbox is available for anyone who wants that broader cleanup, with clear warning copy about what it does.
-
Discover untracked installs (App Installer) now checks every domain on your account in one click, instead of only whichever domain happened to be selected in the install form's dropdown first.
-
A real App Installer bug fixed — removing an app installed directly at a domain's own document root (rather than in a subdirectory) always failed with an "invalid path" error. Found live on a real account. Fixed for every app in the catalog.
-
App Installer can now find installs it didn't create — if a WordPress site arrived some other way (restored from a backup, installed by hand), a new "Discover" button finds it and adds it to your installs list. That list now also shows every domain's installs together in one place, instead of only showing whichever domain happens to be selected. The Domains page itself is also now grouped sensibly — your primary domain, then addon domains, then subdomains — instead of listing in whatever order they happened to be added, and addon domains now get their own label the same way subdomains already did.
-
A lighter domain switcher — any page covering more than one domain on your account (Email Accounts, Hotlink Protection, Error Pages, and others) used to show a small table just to pick which domain you're managing there. That's now a simple dropdown. Email Accounts specifically gained tabs instead — an "All" view across every domain, plus one tab per domain.
-
A misleading SSL status, fixed — the Domains page used to show a plain "Not Issued" pill the entire time a certificate was still being issued in the background, indistinguishable from a genuine failure, and the page never updated itself so you had to refresh to see it finish. It now shows a clear "Issuing…" status with a spinner, and updates itself automatically the moment issuance actually completes.
-
Mail forwarders can now keep a copy in the mailbox — previously, creating a forwarder for an address that already had a real mailbox silently stopped mail from ever reaching that mailbox again, with nothing telling you it happened. A new checkbox lets you do both at once: keep receiving mail in the mailbox and forward a copy elsewhere.
-
App Installer can now install directly at a domain's own document root, not just into a subdirectory — the Install Location field is optional now, and leaving it blank installs straight at the domain itself rather than requiring a subfolder name. Found needing this for a real subdomain set up to be a standalone blog.
-
A real, wide-reaching multi-domain fix — fifteen different account-panel features (Email Accounts, Mail Filters, Mailing Lists, Dynamic DNS, App Installer, custom error pages, MIME types, directory indexes, directory privacy protection, hotlink protection, website optimization, and raw log downloads among them) turned out to only ever work against your account's primary domain. For anyone with an addon domain or subdomain, a feature was either unreachable for it or silently acted on the wrong domain instead — no error shown either way. Found doing a full deliberate audit rather than waiting for a report. All fifteen now correctly work against whichever domain you actually mean, with a simple domain selector wherever more than one domain is involved.
-
The Domains page now shows what a real hosting control panel's Domains page should — a Force HTTPS Redirect switch for every domain and subdomain on your account (only usable once a domain has a genuinely active, trusted certificate to redirect to), a Retry SSL button right on the page instead of a trip to the separate SSL page, a Redirects To column showing your Domain Forwarding setting at a glance, and a direct Manage Zones link for your primary domain.
-
The App Installer catalog is growing — apps are now grouped into categories with a filter tab bar (All Apps, plus one per category), and Bookstack joins WordPress, Drupal, MediaWiki, and phpBB as a full-featured install: update checking, staging clones, and a direct admin login link, the same as WordPress already gets.
-
Logging in with just a username now works — the login form previously only ever accepted an email address, even though nothing about the form said so explicitly either way. If you've ever handed someone their username rather than their email as a login detail, they can now actually use it: the form accepts either, and the label says so.
-
Copying a generated password (anywhere one's shown to you) now displays "Copied" right next to the button until you next reload the page, so a click that worked doesn't look like it didn't.
-
Every section of the sidebar can now be collapsed and expanded individually, the same way DNS and Email already could, with a new Expand all/Collapse all link at the top to do it for everything at once.
-
Scanning your own account for malware now shows real progress — a live bar and a time estimate instead of being told to come back and refresh the page in a minute.
-
IP Blocker can now be scoped to a single domain or subdomain on your account instead of always applying to everything — block an address from just one site, or everywhere, your choice.
-
Restore from cPanel Backup now carries over your database's original password — previously every restored database got a brand-new random password, which meant your site's own already-restored configuration file no longer matched it. It now reuses the original password directly whenever the backup contains it, so there's nothing left to fix by hand.
-
A daily report for every subscriber list — turn it on from a new Report tab alongside Welcome Email/Forms/Campaigns, choose where it goes and what time of day, and optionally skip the email entirely on a day with no new activity. Covers new subscribers, unsubscribes, pending double opt-in confirmations, and your current total, all from the last 24 hours.
-
Webmail and My Account now stay on your own domain — visiting yourdomain.com/webmail or webmail.yourdomain.com used to bounce your browser to our own hostname the moment you signed in. It now proxies through invisibly instead, so the address bar never leaves your own domain, and we automatically issue a matching certificate for the webmail./account. shortcuts too.
-
An in-browser code editor for File Manager — open and edit any text or code file straight from the file list, no more download, edit locally, and re-upload. Real syntax highlighting across dozens of languages, a dirty-state indicator, and Ctrl/Cmd+S to save.
-
Subscribers & Marketing Email — build a subscriber list with single or double opt-in, an embeddable signup form, and send real campaigns with a code-editor-plus-live-preview composer and genuine open/click tracking. Target a list, a manually pasted set of addresses, or a CSV upload for any one send.
-
Calendars & contacts sync, no longer Planned — a real CalDAV/CardDAV server built into the panel itself, same login as IMAP/SMTP/webmail. iOS/macOS Calendar and Contacts, and Thunderbird, auto-discover it straight from the domain, no manual server entry needed.
-
Per-site Web Application Firewall control — every domain on your account gets its own Enabled / Detection Only / Disabled switch for the server's new firewall (see the Controller changelog for the technical detail), so a false positive on one site doesn't mean turning protection off everywhere.
-
Email Disk Usage cleanup — clear out what's actually eating your mailbox space, Trash and Junk, directly from the mailbox usage page, no need to go folder-by-folder in webmail.
-
An email deliverability checker for your own domains — SPF, DKIM, DMARC, and reverse-DNS status for every domain on your account, with a one-click repair for anything misconfigured. The same check the Controller side has had for a while now, reachable from My Account too.
-
A real home screen for My Account — account status, primary domain, disk usage, and bandwidth up top with real numbers pulled straight from your account, your username, home directory, and server information underneath, and every section from the sidebar laid out as its own card with every feature inside it listed underneath, each with a plain-language description of what it does and its own icon from a new icon set built specifically for the panel. The sidebar itself also gained a quick-filter search box above General, so finding one feature among the dozens doesn't mean scanning the whole list — press / from anywhere to jump into it.
-
The App Installer, now a real catalog — Drupal, Nextcloud, MediaWiki, and phpBB join WordPress, each installed through its own official CLI installer (not a reimplementation), running in the background with a live install log rather than blocking the page for two-plus minutes. Confirmed a real gap along the way: phpBB's historical download host had gone stale years behind current releases, so its install now builds from the current source instead.
-
phpMyAdmin — the real, industry-standard database tool, built into every account and always on, exactly like cPanel's own phpMyAdmin link. A permanent fixture, never something a hosting package can hide. Signs you straight in as one of your own database users — you never type a database password into a login form.
-
The Preferences section, closed out — Team Access lets you invite other people to help manage your account. They get their own login, scoped to exactly the areas you grant (Files, Domains, Email, Databases, Metrics, Security, Software, Advanced, Preferences) — never your password, and nothing here can grant access to manage other people's access, that stays yours alone.
-
The Advanced section, closed out — a DNS Lookup tool runs a live dig query against any hostname, the same tool the Controller area has had for a while now finally reachable from the account side. Also fixed: the Password & two-factor roadmap row claimed self-service password change was missing — it wasn't, it's been on the My Profile page the whole time, right next to two-factor setup.
-
The Security section, closed out — SSL/TLS management now covers every domain on the account, not just the primary one: a bulk certificate-status table across every domain, with a click-through to manage any single one's issuance, retry, CSR generation, or custom certificate install. CSR generation itself already existed, it just wasn't reachable for an addon domain until now.
-
The Metrics section, closed out — an Error Log viewer shows the last 200 lines of a domain's Nginx error log, newest first. Bandwidth usage now breaks down per domain on the Disk & Bandwidth page, not just an account-wide total. And a new Traffic & Visitors page (requests, unique visitors, response codes, top pages, top referrers, with a domain + month selector) covers both the roadmap's "Visitor summary" and "Traffic statistics dashboard" rows at once, since they were always the same underlying data. Also fixed along the way: Raw access log download had actually shipped back on 2026-07-29 as part of Raw Logs, but the roadmap row was never updated to say so.
-
The Databases section, closed out — a guided Quick Setup wizard (database, user, and a full-access grant in one step), a visual database browser (browse tables and rows, and run queries as your own database user — never an elevated one), and Remote Database Access (allow a specific IP address to connect directly to your own databases).
-
The Files section, closed out — WebDAV access (already live, roadmap just hadn't caught up), Deploy from Git (link a repository, push a webhook to redeploy automatically, or trigger it manually with a live terminal-style log), and Image tools (thumbnail generation, in-place resizing, and format conversion between jpg/png/gif/webp, built directly into File Manager).
-
The Domains section, closed out — Dynamic DNS (a long, unguessable update URL per host, for a router or device with a changing IP — no login required to update it), Quick Site Publisher (a simple title/tagline/contact starter page for any domain that doesn't have a real site up yet), and WordPress management (check for and apply core/plugin/theme updates, or clone a working copy to a staging path with internal links rewritten automatically).
-
The Email section, closed out — nine new features in one pass: Mailbox Storage (real disk usage per mailbox), Bulk address import (CSV forwarders), Delivery Tracking (your own domains' delivery activity, never anyone else's), Mail Filters (manage any mailbox's filing rules directly, plus a "global" option that fans one rule out to every mailbox at once), Spam Scoring (an optional stricter per-account threshold layered on the server-wide filter), Greylisting opt-out (skip the first-attempt delay for your own domains), Mailing Lists (one address, many members), Mail Encryption (a personal S/MIME certificate to import into your own mail client), and a Challenge-Response gate (unrecognized senders held until you approve them, never landing in Inbox unreviewed). Calendars & contacts sync followed later once the underlying CalDAV/CardDAV server existed — see above. Also fixed along the way: mail filing rules silently landing back in Inbox instead of their intended folder, because the target folder was never auto-created.
-
API Tokens — a new page under Security. Create a scoped token (read or write access to your DNS zone) for your own scripts to call, without ever sharing your actual login.
-
Licensing — if the server's licence ever lapses, My Account locks to a status page the same way the Controller does, with the same guarantee behind it: your own site, mail, and DNS keep running regardless — this only ever affects panel access itself, never what you've already built.
-
Cron Jobs — a new page under Advanced. Schedule recurring commands using cPanel-style presets (Every Minute, Every 5 Minutes, Once Per Hour, and more) or set the schedule manually — jobs run as your own account, with output emailed to a Cron Email address you control.
-
Two-Factor Authentication — a new My Profile page (top of the sidebar) to turn on 2FA for your own login: an authenticator app, recovery codes, or an emailed code if you lose access to both.
-
Backups — a new page under Files. Back up your account on demand, download any piece of a backup (files, a specific database, mail), or restore your whole account from a previous backup.
-
FTP Accounts — a new page under Files. Every account gets one FTP login automatically (full access to your home directory); create additional scoped logins jailed to a specific subdirectory to hand out upload access without sharing everything.
-
Disk Usage renamed Disk & Bandwidth — now shows real quota-enforced disk usage and this month's bandwidth against the package limit, both with a live progress bar, alongside the existing folder-by-folder breakdown.
-
KNJ Webmail — a second webmail client option, built into the panel and matching its styling, selectable from the Email Accounts page alongside Roundcube.
-
Custom MIME type mappings per domain.
-
Disk usage breakdown, directory password protection, leech protection (auto-blocks a shared/leaked directory login), IP blocking, hotlink protection, catch-all address, website compression, directory listing style, custom error pages, contact information & account preferences.
-
Multiple domains per account, autoresponders.