content: # git-cliff ~ configuration file
  # https://git-cliff.org/docs/configuration
  
  [changelog]
  # template for the changelog header
  header = """
  # Changelog\n
  All notable changes to this project will be documented in this file.\n
  """
  # template for the changelog body
  # https://keats.github.io/tera/docs/#introduction
  body = """
  {% if version %}\
      ## {{ version | trim_start_matches(pat="v") }} - {{ timestamp | date(format="%Y-%m-%d") }}
  {% else %}\
      ## Unreleased
  {% endif %}\
  {% if previous %}\
      {% if previous.commit_id and commit_id %}
          [{{ previous.commit_id | truncate(length=7, end="") }}]({{ previous.commit_id }})...\
              [{{ commit_id | truncate(length=7, end="") }}]({{ commit_id }})
      {% endif %}\
  {% endif %}\
  {% for group, commits in commits | group_by(attribute="group") %}
      ### {{ group | upper_first }}
      {% for commit in commits %}
          - {{ commit.message | split(pat="\n") | first | upper_first | trim }} ([{{ commit.id | truncate(length=7, end="") }}]({{ commit.id }}))\
            {% if commit.footers %}\
              {% for footer in commit.footers -%}
                  , {{ footer.token }}{{ footer.separator }}{{ footer.value }}\
              {% endfor %}\
            {% endif %}\
      {% endfor %}
  {% endfor %}\n
  """
  # template for the changelog footer
  footer = """
  <!-- generated by git-cliff -->
  """
  # remove the leading and trailing whitespace from the templates
  trim = true
  
  [git]
  # parse the commits based on https://www.conventionalcommits.org
  conventional_commits = true
  # filter out the commits that are not conventional
  filter_unconventional = false
  # regex for parsing and grouping commits
  commit_parsers = [
    { message = "^feat", group = "Features" },
    { message = "^fix", group = "Bug Fixes" },
    { message = "^doc", group = "Documentation" },
    { message = "^perf", group = "Performance" },
    { message = "^refactor", group = "Refactor" },
    { message = "^style", group = "Styling" },
    { message = "^test", group = "Testing" },
    { message = "^chore\\(deps.*\\)", skip = true },
    { message = "^chore\\(pr\\)", skip = true },
    { message = "^chore\\(pull\\)", skip = true },
    { message = "^chore\\(release\\): prepare for", skip = true },
    { message = "^chore|^ci", group = "Miscellaneous Tasks" },
    { body = ".*security", group = "Security" },
  ]
  # filter out the commits that are not matched by commit parsers
  filter_commits = false
  # sort the tags topologically
  topo_order = false
  # sort the commits inside sections by oldest/newest order
  sort_commits = "oldest"
  