{% if version.tag -%}
    ## {{ version.tag }} - {{ date | date(format="%Y-%m-%d") }}
{% else -%}
    {% set from = commits | last -%}
    {% set to = version.id-%}
    {% set from_shorthand = from.id | truncate(length=7, end="") -%}
    {% set to_shorthand = to | truncate(length=7, end="") -%}
    ## Unreleased ({{ from_shorthand ~ ".." ~ to_shorthand }})
{% endif -%}

{% if package_lock -%}
### Packages
{% for package in packages -%}

{% if package.version.tag -%}
- {{ package.package_name }} locked to {{ package.version.tag }}
{% endif -%}

{% endfor -%}

{% else -%}
### Package updates
{% for package in packages -%}

{% if package.version.tag -%}
- {{ package.package_name }} bumped to {{ package.version.tag }}
{% endif -%}
{% endfor -%}
{%- endif -%}

### Global changes
{% for type, typed_commits in commits | sort(attribute="type")| group_by(attribute="type")-%}
#### {{ type | upper_first }}
{% for scope, scoped_commits in typed_commits | group_by(attribute="scope") -%}

{% for commit in scoped_commits | sort(attribute="scope") -%}

    {% if commit.author -%}
        {% set author = "*" ~ commit.author  ~ "*" -%}
    {% else -%}
        {% set author = commit.signature -%}
    {% endif -%}

    {% set shorthand = commit.id | truncate(length=7, end="") -%}
    - **({{ scope }})** {{ commit.summary }} - ({{shorthand}}) - {{ author }}
{% endfor -%}

{% endfor -%}

{%- for commit in typed_commits | unscoped -%}
    {% if commit.author -%}
        {% set author = commit.author -%}
    {% else -%}
        {% set author = commit.signature -%}
    {% endif -%}

    {% set shorthand = commit.id | truncate(length=7, end="") -%}
    - {{ commit.summary }} - ({{ shorthand }}) - {{ author }}
{% endfor -%}

{% endfor -%}