gitprint 0.4.0

Convert git repositories into beautifully formatted, printer-friendly PDFs
Documentation
[changelog]
header = "# Changelog\n\n"
body = """
{%- set host     = "https://github.com" -%}
{%- set repo_url = host ~ "/" ~ remote.github.owner ~ "/" ~ remote.github.repo -%}
{% if version -%}
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% if previous.version %}[`{{ previous.version }}...{{ version }}`]({{ repo_url }}/compare/{{ previous.version }}...{{ version }})
{% endif %}
{% else -%}
## [unreleased]
{% endif -%}
{% for group, commits in commits | group_by(attribute="group") -%}
### {{ group | upper_first }}
{% for commit in commits -%}
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }} — {{ commit.author.timestamp | date(format="%Y-%m-%d") }} by {% if commit.github.username %}[@{{ commit.github.username }}]({{ host }}/{{ commit.github.username }}){% else %}{{ commit.author.name }}{% endif %} ([`{{ commit.id | truncate(length=7, end="") }}`]({{ repo_url }}/commit/{{ commit.id }}))
{% endfor %}
{% endfor %}\
"""
footer = ""
trim = true

[git]
conventional_commits = true
filter_unconventional = true
split_commits = false
commit_parsers = [
    { message = "^feat",     group = "Features" },
    { message = "^fix",      group = "Bug Fixes" },
    { message = "^perf",     group = "Performance" },
    { message = "^refactor", group = "Refactoring" },
    { message = "^docs?",    group = "Documentation" },
    { message = "^chore",    skip = true },
    { message = "^ci",       skip = true },
    { message = "^test",     skip = true },
    { message = "^build",    skip = true },
]
filter_commits = true
tag_pattern = "v[0-9].*"
skip_tags = "nightly"
topo_order = false
sort_commits = "oldest"

# ── Hosting configuration ──────────────────────────────────────────────────────
# git-cliff reads `owner` and `repo` from this section and exposes them as
# `remote.github.owner` / `remote.github.repo` in the body template above.
# Both values are auto-detected from `git remote get-url origin` when omitted.
#
# To switch providers:
#   1. Rename the section heading below (e.g. [remote.gitlab])
#   2. Update `host` in the body template to match the provider base URL
#   3. If needed, adjust URL path segments in the template:
#        GitLab    /compare/ → /-/compare/    /commit/ → /-/commit/
#        Bitbucket /compare/ → /branches/compare/  /commit/ → /commits/
#
# Provider section names git-cliff understands:
#   [remote.github]    — github.com
#   [remote.gitlab]    — gitlab.com  (or self-hosted GitLab)
#   [remote.gitea]     — gitea.io    (or self-hosted Gitea)
#   [remote.forgejo]   — forgejo.org (or self-hosted Forgejo)
#   [remote.bitbucket] — bitbucket.org
[remote.github]
owner = "izelnakri"
repo  = "gitprint"