✨ Features
📊 User Interface & Experience
- User-configurable rows per page with session persistence - Users can now customize the number of rows displayed per page (10, 20, 50, 100) on list zones, search results, and zone edit pages. Preferences are stored in the session for convenience.
 
⚡ Performance Improvements
🗄️ Database Optimization
- Optimize zone listing performance with database indexes - Added missing database indexes on the zones table (domain_id and owner columns) across all database types (MySQL, PostgreSQL, SQLite). This provides 10-100x faster query performance when managing large numbers of zones (tested with 10,000+ zones).
 
🔧 Refactoring
🌐 DNS & Validation
- Extract core DNS record validators into dedicated class - Improved code organization by separating DNS record validation logic into focused, reusable validator classes.
 
📦 Database Migrations
Migration to v3.9.7
This release includes database schema updates. Run the appropriate migration script for your database:
MySQL:
mysql -u username -p database_name < sql/poweradmin-mysql-update-to-3.9.7.sql
PostgreSQL:
psql -U username -d database_name -f sql/poweradmin-pgsql-update-to-3.9.7.sql
SQLite:
sqlite3 /path/to/pdns.db < sql/poweradmin-sqlite-update-to-3.9.7.sql
What the migration does:
- Adds zones_domain_id_idx index on zones.domain_id column
 - Adds zones_owner_idx index on zones.owner column
 
Note: These indexes significantly improve performance for zone listing queries, especially with large datasets.
Full Changelog: v3.9.6...v3.9.7