The format is based on Keep a Changelog.
3.0.3 - 2026-07-27
- many updates for data stores and NS backends
- feat(mysql): new NS columns: engine, listen, publisher, transport, dnssec
- change: */store/toml -> */store/file
- change(sql/*.sql): made setup non-destructive
- feat: self describing password hashes (#56)
3.0.2 - 2026-07-25
- dep(rr): bump version
- fix: generate conf.d/http.toml on 1st start
- fix(sql): quote mysql 8 keyword rank
- fix: subgroup searching
- feat: paginate zone records (#53)
- toml backend (#49)
- add: TOML stores for group, nameserver, permission, session (#47)
- move mysql teardown/disconnect into mysql classes
- fix: don't log sensitive information
- routes file reorg (#46)
- factories for groups (#44)
- ci: remove local codeql config (#43)
- ci: update permissions to be explicit (#42)
- docker compose support + env var config overrides (#40)
- decorate user & group with permissions
- add some missing PUT routes
- better error handling validation errors
- constraining views by GID
- zone record factory & subclasses
- zone factory & subclasses
- user factory, toml, mysql, mongodb, elastic classes
- config: replace .yaml with .toml
- zone_record can be empty, default 0
- feat(zone records): create and delete
- feat(zone): use DataTable for list, added search/limit options
- routes/zr: add extra data about ZR parse failures
- lib/zone: add limit option
- lib/nameserver.js: handle null fields from DB
- routes/zone: report zone name on validation failure
- dep(eslint): upgraded to v9
- dep(*): bump versions to latest
- feat(conf.d/http): added tls
- feat(session): added JWT for session auth
- feat(zone): removed location
- feat(routes/zone_record): added, fixes #17
- change(routes/users): result is always array
- change(routes/ns): GET id is optional, result is always array
- change(routes/zone): GET id is optional, result is always array
- feat(lib/zone): added, with tests, fixes #22
- feat(lib/zone_record): added, with tests, fixes #23
- feat: default GET sets deleted=false
- group, nameserver, permission, user, zone
- sql: return indicative boolean for delete
- test(zr): added maps from NT SQL 2 to dns-rr std formats
- feat(lib/nameserver): added, with tests
- feat(routes/nameserver): added, with tests
- routes/permission: added GET, POST, DELETE
- permission.get: default search with deleted=0
- session.put: added
- session: store user/group info in cookie (saves DB trips)
- mysql(insert, select, update, delete): return just the query
- lib/group.get: convert booleans
- lib/user.get: convert booleans