All Versions
Latest Version
Avg Release Cycle
73 days
Latest Release
1031 days ago

Changelog History
Page 1

  • v3.5.0 Changes

    December 07, 2020

    ๐Ÿš€ This release includes so many updates and fixes it is difficult to
    summarize them all!

    Major features:

    • ๐Ÿ†• NEW PROVIDER: HETZNER DNS Console (#904)
    • ๐Ÿ†• NEW FEATURE: You can now set variables through flags on the command line (#918) (#913)
    • ๐Ÿ’ฅ BREAKING CHANGE: Long TXT records require AUTOSPLIT to be split (#957) and are checked are check/preview time (#947) (See below)
    • โœจ ENHANCEMENT: "dnscontrol get-zones" now outputs the "orange cloud" flag for CloudFlare (#952)

    ๐Ÿ’ฅ BREAKING CHANGE: Previously different providers handled them differently; some gave an error and others split them silently into 255-octet chunks. This created unhappy surprises when switching providers. Now strings longer than 255-octet must be explictly split (manually or by using the AUTOSPLIT flag). See

    ๐Ÿ†• NEW AUTOMATED TESTING! Each PR now triggers a suite of automated tests. If you maintain a provider, you can "bring your own secrets" to activate testing in your fork. This should make it easier to contribute to the project! (thanks Max Horstmann, our GitHub Actions wizard!)

    Provider-specific changes:

    • ๐Ÿšš AZURE_DNS: Remove artificial delays (#943)
    • CLOUDFLAREAPI: get-zones now outputs "orange cloud" status (#952)
    • ๐Ÿ‘ CLOUDFLAREAPI: Support TXTMulti and empty TXT targets (#978)
    • DIGITALOCEAN: Abide by rate limits (#934)
    • ๐Ÿ‘ DIGITALOCEAN: Support TXTMulti with caveats (#949)
    • GCLOUD: Don't panic() on unknown domain name (#944)
    • GCLOUD: Retry on ratelimit (#946) and 502 (#984)
    • HETZNER: Allow TXTMulti (#963)
    • ๐Ÿ‘ HETZNER: better rate limit handling (#936) (#926)A
    • HETZNER: create and modify multiple records in batches (#925) (#789)
    • โšก๏ธ HEXONET: Add GHA tests. Update docs. (#942)
    • INWX: Guard against single-quote TXT targets (#971)
    • ๐Ÿ‘ INWX: enable multi txt support (#981)
    • ๐Ÿ“š POWERDNS: Fix documentation: config keys use camel case (#962)
    • ROUTE53: Fix R53_ALIAS creation failure (#938)

    ๐Ÿšง Code maintenance:

    • โœ… TESTING: Enable Bring-Your-Own-Secrets (#982) (#977)
    • โœ… TESTING: js_test.go now generates zonefiles and tests them (#986)
    • ๐Ÿ› BUG: Fix REV and PTR when used together or with D_EXTEND (#979)
    • ๐Ÿ› BUG: Refactored R53_ALIAS code to be more predictably correct, and fix many bugs along the way (#938)
    • ๐Ÿ› BUG: Unknown rtypes should return errors, not a panic (#945)
    • CODE HEALTH: Reduce the use of panic(): Unknown rtypes return errors, not panic (#945)
    • CODE HEALTH: Rename provider handles to *Provider (#914) (#911)
    • โšก๏ธ CODE HEALTH: deps updates and linting (#905)
    • ๐Ÿ“„ DOCS: Fix golint and vendoring notes (#948)
    • ๐Ÿ“„ DOCS: Update install instructions (#951)
    • MAINT: Add a .editorconfig file (#921)
    • โœ… MAINT: Fix parse_test numbering (#985)
    • โšก๏ธ MAINT: Many deps updated (#988)
    • MAINT: gofmt -s all the things! (#983)
  • v3.4.2 Changes

    October 12, 2020

    ๐Ÿš€ (Version 3.4.0 and 3.4.1 were skipped due to an issue while making the release.)

    ๐Ÿš€ This release includes 1 new Registrar, improvements to others (especially HEXONET), and dozens of other improvements. Thanks for all the contributors!

    Major new features:

    • ๐Ÿ†• New Registrar: CSC Global (#827)
    • ๐Ÿ†• New function: D_EXTEND adds records to an existing D(); possibly in a subdomain (#885) (thanks to @ad8-bdl!)
    • AUTODNSSEC is now AUTODNSSEC_ON (#863). If neither AUTODNSSEC_ON or AUTODNSSEC_OFF is included in a domain, AutoDNSSEC is left alone.
    • Errors in dnsconfig.js and subfiles now indicate the proper filename and line.
    • ๐Ÿ“„ DOCS: Better document nameserver scenarios (#868)
    • ๐Ÿ›  NAMESERVER() validity check fixed (#866)
    • ๐Ÿ›  Many other bug fixes and document improvements.

    Provider-specific changes:

    • HEXONET: Implement get-zones.
    • โฌ†๏ธ HEXONET: Upgraded to newest module.
    • ROUTE53: Documented but with legacy records (#901)
    • ๐Ÿ‘ INWX: Support creating domains (#855)
    • ๐Ÿ“š INWX: add additional documentation about 2FA (#865)
    • PowerDNS: Implemented AUTODNSSEC (#856)
    • โšก๏ธ VULTR: Update govultr to v1.0.0 (fixes #892) (#897)
    • ๐Ÿ‘ VULTR: Null MX records are not supported (#702) (#894)
    • GANDI_V5: Use, not (#883)

    Help wanted:

    • ๐Ÿšš #873: NS1 has no maintainer. Volunteer needed or we may have to remove this provider.
    • #874: Anyone interested in making a fmt tool for dnsconfig.js?
    • Requests for providers for RcodeZero #884, #854, Constellix (DNSMadeEasy) #842, and others.

    Project changes:

    • ๐Ÿš€ No "vendoring". Remove vendoring notes from release-engineering.
    • ๐Ÿ— Go modules now required. Remove support for pre-module builds.
  • v3.3.0 Changes

    September 04, 2020

    This release brings three new providers (DNS-over-HTTPS, Hurricane Electric DNS, INWX), the ability to send notifications to Microsoft Teams, new functions (require_glob(), IGNORE_TARGET(), IGNORE_LABEL(), DU_EXTEND()), plenty of bugfixes and updates for providers, plus a lot of cleanups and documentation improvements!

    Thanks to all the contributors!

    Major features:

    • ๐Ÿ†• NEW PROVIDER: DOH: Read-only Registrar that validates NS records (#840)
    • ๐Ÿ†• NEW PROVIDER: HEDNS: Hurricane Electric DNS ( (#822)
    • ๐Ÿ†• NEW PROVIDER: INWX (#808)
    • ๐Ÿ†• NEW NOTIFIER: Add support for Microsoft Teams (#812)
    • Validation: New rules for validiating labels with underbars (#830)
    • ๐Ÿ†• New feature: require_glob() (similar to require() but supports globs) (#804)
    • New feature: IGNORE_TARGET. Rename INGORE to IGNORE_NAME (#806)
    • ๐Ÿ†• New feature: IGNORE label renamed to IGNORE_LABEL (IGNORE still exists for compatibility) (#806)
    • ๐Ÿ†• New feature: New features: D_EXTEND() getConfiguredDomains() to assist modifying domains (#800)
    • โšก๏ธ SPF Optimizer: Enable the use of TXTMulti records to support longer SPF records (#794)
    • โšก๏ธ SPF Optimizer: Make it possible to disable the raw SPF optimizer debug record (#795)
    • โšก๏ธ SPF Optimizer: spf flattener can make first record extra short (#781)
    • ๐Ÿ’„ Long lists of adds/deletes are now sorted on some providers (for cosmetic reasons)
    • ๐Ÿ‘ Provider support for DS records as children only (#765)
    • correct flag names (#758)

    Provider-specific features:

    • AZURE: Cleanup: Errorf is a pure function but its return value is ignored #836 (#843)
    • ๐Ÿ›  AZURE: Fixed bug related to having >100 Zones (#816)
    • CLOUDFLARE: Set TTL to 1 for Cloudflare page rules (#828)
    • BIND: Add TTL to BIND SoaInfo struct (#820)
    • ๐Ÿ‘ deSEC: Supports PTR records out of the box (#801)
    • PowerDNS: Fix PowerDNS domain creation (#786)
    • ROUTE53: Route53 uses a custom record type for SPF (#787)
    • ๐Ÿ›  NS1: Fixed MX records on NS1 (#783)
    • ๐Ÿ‘ NS1: Added support for ALIAS, PTR, and TXTMuli (#776)

    Other cool stuff:

    • ๐Ÿ“„ Docs: Add a page about macros and loops (#832)
    • โš  print-ir: print validation warnings/errors to stderr (#841)
    • ๐Ÿšš Cleanup: Remove debug line left from development (#835) (#839)
    • โšก๏ธ Update dependencies (#838)
    • Cleanup: Fix many issues reported by (#837)
    • ๐Ÿ“„ Docs: Improve install instructions (#824)
    • Cleanup: Bubble errors up from diff instead of panic (#799) (#817)
  • v3.2.0 Changes

    June 02, 2020

    Lots of great new stuff! A new provider (PowerDNS), a new record type (DS), a new notification target (Slack), and "get-certs" now generates .PEM files.

    get-certs now generates one additional file: a .pem file, which is just .crt + "\n" + .key ). While not breaking change, it does contain secrets and therefore should be protected. If you encrypt or otherwise protect the .key file, you should take the same care with the .pem file.

    Major features:

    • ๐Ÿ†• NEW PROVIDER: PowerDNS
    • ๐Ÿ†• NEW RTYPE: DS (Thanks Robert and Nicolai!)
    • get-certs now generates .pem files (.crt + .key)
    • ๐Ÿ†• New notification target: Slack (Thanks Jan-Philipp!)

    Provider-specific changes:

    • ๐Ÿ‘ CLOUDFLAREAPI: Now supports DS records

    Other stuff:

    • Lists of adds/changes/deletes are now sorted (#755)
    • ๐Ÿ›  Fixed vendoring problem
    • _domainconnect is added to the whitelist
    • โšก๏ธ Update many dependencies.
  • v3.1.1 Changes

    May 23, 2020

    ๐Ÿ“š This release includes 3 new providers! deSEC (popular in Germany) NETCUP (popular in Russia), and AXFR+DNS (use the native DDNS protocol for updates). Plus many minor bug fixes, code cleanups, documentation improvements, and over course plenty of updated dependencies.

    ๐Ÿš€ NOTE: Version v3.1.0 was not released due to a technical issue.

    Major features:

    • ๐Ÿ†• NEW PROVIDER: AXFR+DDNS (#259) (#729)
    • ๐Ÿ†• NEW PROVIDER: deSEC (#725)
    • ๐Ÿ†• NEW PROVIDER: NETCUP (DNS) (#718)
    • ๐Ÿ“š Documentation: Clarify dev docs (#734)

    Provider-specific changes:

    • OCTODNS: constant 4294967295 overflows int (Issue #736) (#738)
    • ๐Ÿ‘ GCLOUD: SSHFP support for Google Cloud DNS #726
    • CLOUDFLAREAPI: CLOUDFLAREAPI now fails tests "IDNA:Internationalized_name" and "IDN_CNAME_AND_Target". These tests are skipped for now. Can I get a volunteer to help find and fix this issue?

    Other changes:

    • ๐Ÿ”’ Security: 'get-certs' permissions too open (#745)
    • get-zones: should comment out NAMESERVER() (#743)
    • get-zones: generate R53_ALIAS correctly (#721)
    • ๐Ÿ“š Documentation: Document IP() is IPv4 only (#744)
    • Cleanup: Fix GetNameserver() inconsistency on many providers (#491)
    • ๐Ÿ‘Œ Support RFC 7505 "null MX" (#702) (#703)
    • โšก๏ธ Update dependencies for: AWS (#731), Azure (#731), GCLOUD, digital * ocean (#723), urfav/cli, DNSimple, and more
  • v3.0.0 Changes

    March 22, 2020

    ๐Ÿš€ DNSControl 3.0.0 is a major release!

    โœ… Three new providers! Two new subcommands! Integration tests reworked! Tons of minor and major bug fixes, code cleanups, and more!

    ๐Ÿš€ This release focused on some major internal changes that might break providers or require updates. These were all internal changes that are invisible to the user. In fact, there were no breaking changes to your dnsconfig.js file!

    A special shout-out to all the providers that responded quickly to my many "call to action" requests. Thank you for all your help! We couldn't do it without you. Those requests were:

    • Providers should implement "get-zones" (#628)
    • โšก๏ธ Call to update dependencies (#619)
    • โšก๏ธ Call to update GetNameservers() to be more consistent (#491)
    • ๐Ÿ”จ Integration tests refactored, please test! (#684)

    Major features:

    • โฌ†๏ธ PROVIDER (UPGRADE): AZUREDNS is now officially supported!
    • PROVIDER (NEW): (#590)
    • PROVIDER (NEW): ClouDNS (#578)
    • ๐Ÿšš PROVIDER (REMOVED): GANDI/GANDI-LIVEDNS removed. Use GANDI_V5 instead. It is officially supported, 100% backwards compatible, plus the code is cleaner and more modern.
    • ๐Ÿ†• New subcommand: dnscontrol check-creds helps debug your creds.json file.
    • ๐Ÿ†• New subcommand: dnscontrol get-zones helps convert zones to DNSControl (#641) (#613)
    • Let's Encrypt now tries all cert renewals before returning error (#611)
    • ๐Ÿ‘ If your DNS provider supports AutoDNSSEC, DNSControl now has a way to interface with it.
    • ๐Ÿ”จ Integration Tests Refactored: Integration tests have been reimagined and reorganized. It is now easier to work around providers with missing/broken features (#684)
    • BIND's serial number and SOA handling is rewritten to be less complex, cleaning, and less buggy (#652)

    Provider-specific changes:

    • ๐Ÿ†• NEW PROVIDER: (#590)
    • ๐Ÿ†• NEW PROVIDER: ClouDNS (#578)
    • ๐Ÿ‘ AZUREDNS is now an officially supported provider (#653)
    • ๐Ÿ‘ AZUREDNS: Add support for Alias: AZURE_ALIAS() (#675)
    • โšก๏ธ AZUREDNS: Bug: Wrong domain updated in query (#615)
    • AZUREDNS: Do not warn about underscore for (#661)
    • BIND: Implement AutoDNSSEC (#648)
    • BIND: Simplify serial number generation (#652)
    • ๐Ÿ“š CLOUDFLARE: Correct redirect function documentation (#696)
    • DNSIMPLE: Add AUTODNSSEC, implement for DNSimple (#640)
    • ๐Ÿ‘ DNSIMPLE: bug-fix SSHFP, add multi TXT support (#639)
    • ๐Ÿ‘ DNSIMPLE: support NAPTR (#671)
    • ๐Ÿ‘ GANDI_V5: Fix/support ALIAS, SSHFP, TLSA (#673)
    • GANDI_V5: Recognize that CanUseTXTMulti is valid (#680)
    • ๐Ÿ›  SOFTLAYER: Fixed Lets Encrypt Certificate issue #668 (#669)
    • ๐Ÿ›  SOFTLAYER: Fixed Softlayer TXT Record existence Issue #583 (#659)
    • ๐Ÿ‘ NAMECHEAP: Add CAA support (#533)
    • ๐Ÿ‘ DIGITALOCEAN: CAA is supported with some caveats (#592)
    • Implement get-zones and/or check-creds (#628)
      • BIND: Implement get-zones (#642)
      • CLOUDFLARE: get-zones --ttl flag should handle CF's magic TTLs better (#657)
      • ClouDNS: Get zone records implemented (#681)
      • NAMEDOTCOM: Implement get-zones (#645)
      • OVH: Add get-zones to the OVH provider (#666)
      • VULTR: Implemented get-zones (#628) (#670)
      • ACTIVEDIRECTORY: Implement get-zones (#643)
      • ROUTE53: Fully implement get-zones (#638)
      • DNSimple: Implement GetZones and ListZones (#637)
      • DIGITALOCEAN: Do get zones (#635)
      • AZUREDNS: Implement Get Zone for Azure DNS (#631)
    • Clean up (standardize) GetNameservers:
      • OVH: convert the OVH provider to models.ToNameservers (#679)
    • โšก๏ธ Update dependencies (#619)
      • EXOSCALE: Update exoscale/egoscale client to v0.23.0 (#664)
      • HEXONET: Update hexonet-sdk to v2.2.3+incompatible (#662)
      • GANDI_V5: Upgrade to newest
      • AZUREDNS: Upgraded Azure SDK to 39.1.0 (#627)
      • VULTR: Updated govultr to v0.2.0 (#619) (#624)
      • Update (#623)
      • DIGITALOCEAN: Update digitalocean module (#622)
      • Update many modules (#620)
      • Upgrade urfave/cli to v2 (#614)
      • Update (#515)

    ๐Ÿ“š Minor changes, internal cleanups and documentation fixes:

    • ๐Ÿ†• New testing infrastructure for get-zones (#688)
    • GetNameservers is inconsistent across providers (#655)
    • โœ… Tests: ensure provider capabilities are checked (#650)
    • โšก๏ธ External dependencies updated (#691)
    • ๐Ÿ“š Documentation: Clarify require() name and usage (#690)
    • ๐Ÿšš Moved providers/diff to pkg/diff (#692)
    • โšก๏ธ Update (#689)
    • โฌ†๏ธ Upgrade go version to 1.14 (#676)
    • โœ‚ Remove unneeded SSHFP integration test (#677)
    • โšก๏ธ Update (#653)
    • ๐Ÿ‘• Linting (#647)
    • pretty helpers.js (#649)
    • โž• Add _mta-sts to labels allowed to have an underscore (#617)
    • LETS_ENCRYPT: Try all cert renewals before returning error. (#611)
    • LETS_ENCRYPT: get-certs: DNS01 challenge skipping preCheckDNS (#591)
    • RELENG: Doc should list correct version numbers (#607)
    • ๐Ÿ“„ DOCS: Explain nameservers vs ns (#608)
    • ๐Ÿ“„ DOCS: Clarify bug triage process (#606)
    • ๐Ÿ“„ DOCS: Improve Lets Encrypt docs (#594)
    • ๐Ÿ›  Fixed issues from go vet (#605)
    • Switch to Go 1.13 error wrapping (#604)
    • Internals: Switch to v2 go.mod, and fix Azure Pipelines (#595)
    • โœ… Integration test: Track providers that support null TXT (#597)

    ๐Ÿš€ For a complete list of bugs closed in this release please refer to this link.

  • v2.11 Changes

    February 14, 2020

    Big improvements for Gandi users, new providers (ClouDNS,
    ๐Ÿ“š, many code and documentation improvements including a
    ๐Ÿšš move to Go Modules.

    ๐Ÿ’ฅ BREAKING CHANGE: GANDI_V5 is a significant improvement over the GANDI
    ๐Ÿšš and GANDI-LIVEDNS providers, both of which will be removed in 3.0.
    Please migrate now.

    Let's Encrypt now tries all renewals even if an earlier one fails.

    Major changes:

    • ๐Ÿ†• NEW PROVIDER: GANDI_V5 (deprecates GANDI) (#572)
    • ๐Ÿ†• NEW PROVIDER: (#590)
    • ๐Ÿ†• NEW PROVIDER: ClouDNS (#578)
    • โž• Add _mta-sts to labels allowed to have an underscore (#617)

    Reliability improvements:

    • LETS_ENCRYPT: Try all cert renewals before returning error (#611)
    • LETS_ENCRYPT: DNS01 challenge no longer skips preCheckDNS (#591)

    Provider-specific changes:

    • AZURE: Alias records no longer break DNSControl (#616)
    • โšก๏ธ AZURE: Fixes a situation where, wrong domain was gets updated (#615)
    • ๐Ÿ‘ DIGITALOCEAN: CAA is supported with some caveats (#592)
    • ๐Ÿ‘ NAMECHEAP: Add CAA support (#533)

    ๐Ÿ“„ Docs and internal changes:

    • ๐Ÿ“„ DOCS: Updated release engineering process
    • ๐Ÿ“„ DOCS: Better explain NAMESERVER() vs NS() (#608)
    • ๐Ÿ“„ DOCS: Clarify bug triage process (#606)
    • ๐Ÿ“„ DOCS: Improve Lets Encrypt docs (#594)
    • โšก๏ธ Updated module: upgrade urfave/cli to v2 (#614)
    • โšก๏ธ Updated module: upgrade (#515)
    • โœ… Integration test: Add test for TXT with null string (#597)
    • ๐Ÿ‘• Many code cleanups, linting, vetting (#605)
  • v2.10.0 Changes

    January 20, 2020

    Major Changes:

    • ๐Ÿ†• New Provider: Azure DNS (#547)
    • Switched from govendor to go modules for dependencies (#587)
    • โฌ†๏ธ Upgraded to Go 1.13 (#550)

    Provider-specific changes:

    • ๐Ÿ‘ Gandi: Support for multi-TXT records (#545)
    • ๐Ÿ–จ Gandi: Print actual changes to be pushed (#546)
    • ๐Ÿ‘ Vultr: Added support for SSHFP records (#531)
    • CloudFlare: Add ability to manage UniversalSSL (#496)
    • ๐Ÿ‘ CloudFlare: Support API tokens (#555)
    • Route 53: Add AWS_PROFILE functionality (#567)

    Minor cleanups:

    Thanks to all contributors!

    ๐Ÿšฆ @signalwerk

  • v2.9 Changes

    May 27, 2019

    ๐Ÿš€ Its been a while since the last release! This release rolls up a number of big changes: IGNORE() now supports wildcards/globs, require() can be used to load JSON. New provider: Exoscale. New rTypes: SSHFP and NAPTR. The duplicate record check now happens in preview, not just in push. A new flag makes it easier to use dnscontrol in a CI/CD pipeline. Plus a lot, lot, more!

    Major features:

    • ๐Ÿ†• NEW PROVIDER: Exoscale (#390)
    • โž• Add SSHFP DNS record support. (#439)
    • โž• Add NAPTR support. (#461)
    • โž• Add --expect-no-changes flag to preview (#449)
    • ๐Ÿ‘ IGNORE() now supports glob pattern/wildcards (#463)
    • ๐Ÿ‘ require() now supports loading JSON too (#474)
    • ๐Ÿ‘ SPF_BUILDER() now supports setting the TTL (#476)
    • CAA_BUILDER() makes it easier to add CAA records (#478)
    • Check for duplicate records much earlier (#467)
    • โž• Add SIP/JABBER labels to underscore exception list (#453)
    • require() now handles paths as relative (like nodeJS) (#443)

    Provider-specific changes:

    • ๐Ÿ‘ ACTIVEDIRECTORY: Full support for managing NS records. (#450)
    • ๐Ÿ“„ NAMEDOTCOM: Improve error docs
    • ๐Ÿ‘ CLOUDFLARE: Added TLSA and SSHFP support (#484)
    • CLOUDFLARE: Added options to set the target account for new domains (#430)
    • โšก๏ธ CLOUDFLARE: Fix CF trying to update non-changeable TTL (#489)
    • ๐Ÿ›  CLOUDFLARE: SPF records should be converted to TXT Fixes #446 (#480)
    • ROUTE53/GCLOUD: Add Delegation/nameserver Sets (#448)
    • DIGITALOCEAN: Fix #479: Filter SOA records from Digitalocean (#485)
    • ๐Ÿ›  OVH: Fixed registrar ns correction (#486)
    • ๐Ÿ›  OVH: Fixed DKIM when having longer keys (#487) (#488)
    • โšก๏ธ OVH: Update to use newer client library (#445)
    • ๐Ÿ‘ OVH: Certify SSHFP support (#482)
    • ๐Ÿ‘ OVH: Certify that CAA support (#477)
    • ๐Ÿ“š OVH: Documentation: Fix OVH API First Steps link (#416)

    Minor cleanups:

    • ๐Ÿ“„ General docs improvements (#481)
    • DOC: Apply brand-preferred case (#429)
    • ๐Ÿ“š DOCUMENTATION: Document bugid 491 (#492)
    • ๐Ÿ“„ DOCS: Fix many spelling errors (#471)
  • v0.2.8 Changes

    December 19, 2018

    ๐Ÿ†• New features:

    • Warn (but don't fail) if creds.json file does not exist (#425)
    • ๐Ÿ“š Documentation: Added brew installation method to README (#426)
    • ๐Ÿ›  BUGFIX: Fix SRV record handling when target is shortname (#422)
    • ๐Ÿ”’ SECURITY: Many improvements related to LetsEncrypt (#406) (#411)
    • ๐Ÿ“ฆ Verbose debug logging via the ConsolePrinter and printer package. (#404)
    • ๐Ÿ’… Codestyle: Fix formatting on parse_test JSON (#427)
    • OVH: Fix caching issue (#412) (#417)
    • ๐Ÿ‘ GCLOUD: Support TXTMulti (#415)
    • BIND: Warn if output directory does not exist. (#424)
    • NAMEDOTCOM: Documented some error messages.
    • GANDI-LIVE: Document "no such zone" error.
    • โšก๏ธ DNSIMPLE: Update DNSimple-go to v0.20.0 and fix provider (#414)
    • DNSIMPLE: Fix DNSimple SRV and MX records (#413)