Open Source Daemon
The dnseditd daemon source is now public at github.com/ivahos/dnseditd under a source-available license. Clone the repository, audit the code, and build your own installer with ./scripts/make-installer.sh — the same script that produces the official binaries. The daemon holds DNSSEC private keys and dynamic-update credentials for your zones; everyone running it on production infrastructure can now verify exactly what it does. Trust the daemon you actually built, not a binary blob.
Renamed to DnsManager
What started as a record editor has grown into a complete DNS management platform: DNSSEC key lifecycle orchestration, split-horizon view management, zone provisioning with parent-delegation automation, secondary nameserver distribution, autonomous Let's Encrypt issuance for the daemon's own hostname. The new name reflects what the product actually does. The record editor is still here — it's one panel of many.
Shared-Key Split-Horizon
Both internal and external views of a split-horizon zone now share a single KSK by default. One key, one DS at the registrar, one rollover to coordinate — instead of two parallel DNSSEC chains. The shared-key setup is the new default for fresh splits and substantially reduces the operational complexity of running both views together.
Split-Horizon Hygiene
Splitting a zone with child delegations now correctly copies non-apex NS, DS, and in-bailiwick glue into the new internal view (previously the internal view had no NS/DS for delegated children, so internal clients couldn't resolve them). View-sync markers moved to a signable layout (<name>._sync.<zone>) that survives child delegations. New "records in the wrong zone" detection flags records that became occluded by a later delegation, with one-click migrate-to-child or remove-as-orphaned resolution.
Merge Split Zones Back to Single
The flip side of split-horizon conversion: collapse a split-horizon zone back into a single global zone with five merge strategies — keep external only, keep internal only, merge with external winning on conflicts, merge with internal winning, or manual per-hostname resolution. The merged zone preserves the established KSK so no DS update at the registrar is needed.
Type-Scoped Sync Markers
View-sync between split-horizon views can now scope to specific record types — "sync just the DS", "sync only LOC and A" — instead of blanket-per-name. The marker stores the type set, and toggling sync for a record updates the scope in place. NS records are deliberately never syncable: a split child's per-view NS structure must differ to keep internal clients from being referred to public nameservers (which would defeat the purpose of split-horizon).
Delegation-Teardown Delete Guard
Deleting the NS records of a child delegation now surfaces a warning in the bulk-delete confirmation: removing the last NS dissolves the delegation, and BIND will drop the orphaned DS as a side effect. The proper way to re-point a delegation is add-new-NS-first then delete-old, never delete-all-then-readd. Catches the footgun before it costs you a DNSSEC trust anchor.
Live Zone Refresh
Viewing a zone now watches its SOA serial in the background and auto-refreshes when the upstream changes — useful when a co-administrator is making edits or when external tooling bumps the zone. Refresh interval is configurable in settings; default 30 seconds. Toggle off entirely if you'd rather drive every refresh manually.
Global TLSA Scanner
The per-zone TLSA scanner now has a provider-wide counterpart that walks every zone in a configured provider in one pass. Foreground mode produces a consolidated report — every TLSA record across every zone, verified against the live cert at the host:port it pins. Background mode runs the same check on a schedule and surfaces drift via local notifications, so an auto-renewer that rotated a cert without also updating its TLSA record gets caught before resolvers start rejecting connections.
DS Scanner Improvements
The DS update scanner gained a Configure button on the results screen — jump back to zone selection without dismissing the sheet. Zone exclusion toggles now push to the daemon so its background scanner respects the same exclusions the app does; Done applies them. Mid-rollover classification was reworked so zones with pending DS publication no longer false-flag as "complete."
External-View checkds Stall Fix
Resolves a sticky bug where DNSKEY-PUBLICATION on split-horizon zones would stall forever. The daemon used to emit an explicit parental-agents block for every zone, but for split-view children with a sibling-view DS already at the parent, this caused BIND's checkds confirmation to fail repeatedly. The daemon now relies on BIND's implicit checkds (using the parent NS list directly) for split-view zones, which handles the union case correctly.
Per-View Key History
The DNSSEC Key History display now filters events by view at the daemon, so the internal view's history no longer leaks events from the external view (or vice versa). The mid-rollover classifier also reads lifecycle state more carefully — a zone with a freshly-published KSK that hasn't been confirmed at the parent is now correctly shown as "rollover in progress" instead of "complete."
Sheet UX Consistency
Twelve sheets across the app got their bottom-bar button placement standardized: the dismiss action (Done / Close) sits rightmost, and every other toolbar button clusters to its left. Predictable visual hierarchy across every sheet — no more hunting for the right button on a sheet you haven't opened in a while.