Poweradmin 4.2.1 & other patch releases
bug fixes, fewer branches, and a simpler Docker setup
Three patch releases today, plus some changes to how the project is organized going forward.
I’m consolidating the number of active branches. Maintaining four release branches (3.x, 4.0.x, 4.1.x, master) meant a lot of backporting overhead for a one-person project. Going forward, there’s one stable release branch, one development branch, and the 3.x LTS. The release/4.0.x and release/4.1.x branches will remain available for reference but won’t receive new releases.
I’m still iterating on the release process, so apologies if the Docker tags and branch structure have been a moving target lately. The goal is to keep things simple and predictable - I think we’re getting closer.
4.2.1
Bugfix release from master. Changes since v4.2.0:
#1129 - SOA serial numbers weren’t reflecting local time. Timezone initialization was happening too late in the bootstrap process.
#1122 - SOA serial was incrementing by 2 instead of 1 when adding a record inline. A duplicate increment call was being triggered.
#1121 - Search was failing on PostgreSQL with a GROUP BY error (SQLSTATE[42803]). Switched to SQL standard GROUP BY with aggregates.
#1118 - Docker container wouldn’t start due to port 80 binding errors. Restored port binding capability in root mode.
#1116 - Docker entrypoint wasn’t setting env vars for DNS Wizards and Email Previews modules.
#1113 - DNS Wizard button was missing from the zone edit toolbar. The module config was also missing its
enabledkey.#1112 - Users couldn’t access zones if they had group membership but no direct ownership. The zone listing query now checks both direct and group ownership.
#1110 - IPv6 was disabled in the batch PTR form. Fixed the form and also corrected broken nibble expansion.
#1109 - OIDC and SAML login events weren’t being logged to the database. Added database logging for SSO authentication.
#1106 - TXT record validation errors weren’t shown on the add record page. The error was being swallowed silently.
#1105 - Search was crashing with a SQL error and null type exception.
#1104 - Matching record creation was broken since 4.1.1. Two issues: multi-record mode wasn’t triggering it at all, and forward zone lookup failed for subdomain zones.
#1090 - IDN (punycode) support extended to record names and content, including HTTPS, SVCB, and LP record types.
#1047 - Pagination and letter filter links in zone lists were missing the base URL prefix, causing 404s in subfolder deployments.
#767 - API v1 PUT/PATCH/DELETE requests without an ID parameter were not properly rejected.
DNSSEC page was missing the
is_reverse_zonevariable, so reverse zones weren’t showing the correct DNSSEC UI.API key regeneration link in the modern template was pointing to the wrong URL.
Input validation hardened across all API controllers.
Docker: macOS bind mount issue resolved by using PA_CONFIG_PATH.
Docker: non-root and rootless container execution now supported.
4.1.3
Final bugfix release for the 4.1.x line. This branch is now in maintenance mode and won’t receive new releases. Changes since v4.1.2:
#1122 - SOA serial incrementing by 2 instead of 1, backported from master.
#1121 - PostgreSQL search GROUP BY error, backported from master.
#1105 - Search SQL error and null type crash, backported from master.
#1104 - Matching record creation broken in multi-record mode and for subdomain zones, backported from master.
#1106 - TXT validation error not shown on add record page, backported from master.
#1047 - Pagination and letter filter 404s in subfolder deployments, backported from master.
Comment search query was referencing a non-existent
record_comment_linkstable.Docker: macOS bind mount fix and non-root container support, backported from master.
Locale fixes for plural form headers and format specifiers across multiple languages.
4.0.10
Final maintenance release for the 4.0.x line. This branch is now in maintenance mode and won’t receive new releases. Changes since v4.0.9:
#1122 - SOA serial incrementing by 2 instead of 1, backported from master.
Locale format specifier and plural header fixes across all locales.
Fewer branches going forward
I’m simplifying the branch structure:
release/4.2.x- current stable release, patch releases tagged heremaster- next release development (4.3.x)develop- experimental features, may be unstablerelease/3.x- LTS, security fixes until December 2027
The release/4.0.x and release/4.1.x branches will remain available for reference but won’t receive new releases. If you’re tracking either of those, please switch to release/4.2.x or pin to a version tag.
Docker tags updated
The Docker tags have been updated to match the new branch structure:
stable-release/4.2.x(recommended for production)latest-master(current development)dev-develop(experimental, not for production)lts-release/3.x(legacy)v*- Version-pinned tags (e.g.,v4.2.1)
The main change: stable now tracks release/4.2.x instead of the retired release/4.0.x. The next tag has been removed since release/4.1.x is being retired. Everything else stays the same.
Images are published to both Docker Hub (poweradmin/poweradmin) and GitHub Container Registry (ghcr.io/poweradmin/poweradmin).
Thanks
These releases wouldn’t happen without the people who take the time to report issues. Thanks to @ramondelee, @firengate, @gbeine, @dginhoux, @SirGrady, @Verestchagin, @kuhball, @iram-computer, @torstenker-cloud, and @nlarenti for the bug reports that went into these releases.
As always, bug reports and feedback go to GitHub.

