• v0.3.0 436cd79ec9

    Jarl v0.3.0
    release / release (push) Successful in 1m49s
    Stable

    adam released this 2026-10-09 23:39:15 +00:00 | 91 commits to main since this release

    Added

    • Disabled records: a record can be disabled instead of deleted. It stays
      in Jarl with its ID, TTL and comment but is left out of the zone (the
      zone file lists it as a comment), and enabling it puts it back exactly
      as it was. Web UI: a Disable/Enable button on each record, disabled
      records greyed out with a badge, a filter for them, and a count in the
      zone list. CLI: jarl record disable|enable (by ID or by name, type and
      data, --ptr for the PTR record, --missing-ok), record list --disabled, and disable:/enable: entries for jarl apply -f. API:
      POST /records/{id}/disable|enable, POST /zones/{zone}/records/disable|enable, a disabled field on records,
      ?disabled= on record lists and record.disable|enable operations.
      Validation checks the zone as it is served: the last NS record can't be
      disabled, enabling a record is checked like adding it, and a disabled
      record that a CNAME now blocks gets a warning. Database schema 5.

    • DNSSEC for a zone whose parent zone is in Jarl: the DNSSEC tab gives the
      jarl record add PARENT NAME DS ... command to copy and an "Add to
      PARENT" button (staged like any change), links to the parent zone, and
      says when the parent has the DS record. jarl zone dnssec status prints
      the command too, and turning signing off gives the matching jarl record delete.

    • CLI output for scripts: -o id prints just the IDs of what a command
      shows or lists (jarl zone show adbraun.lol -o id), -o field=view,soa.serial just those fields, tab separated. -q on show
      and list prints the IDs too. With a change (jarl record add ... -o id) they apply to the changed object.

    • Statistics: client lists (busiest and refused clients, in the web UI,
      jarl stats top clients|refused and jarl stats summary) show the host
      name Jarl's records have for each address: the PTR record's target, or
      else the name of an A/AAAA record. Looked up in Jarl's own data, so no
      DNS queries; an address without a record shows as before.

    • Zones list: a padlock after each signed zone's name, linking to its
      DNSSEC tab (open and amber while signing is being turned off).

    Changed

    • The web UI and API can listen on ports below 1024, such as 443:
      jarl.service now gives jarld the CAP_NET_BIND_SERVICE capability
      (and only that). With a unit that doesn't, jarld's error says what's
      missing. See docs/configuration.md, "HTTPS on port 443".
    • Records table: names are no longer greyed out when they repeat the row
      above (it made those records look inactive). Records of the same name
      are separated by a faint line instead, and a full line marks where the
      next name starts.

    Fixed

    • jarl record list: one long value (a DKIM key) padded every row to its
      length, so on a terminal each row wrapped onto a second, blank-looking
      line. Long data is now shortened to fit the terminal; --wide shows it
      in full, as does output to a pipe or file.
    Downloads