mutiny-rs 0.5.1

A Rust API wrapper for the Stoat chat platform.
Documentation
# cliff.toml
# Configuration for git-cliff

[changelog]
# A standard header for the top of the file
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""

# The Body Template (Jinja2)
# This handles the "Unreleased" vs "v0.1.0" logic automatically.
body = """
{% if version %}\
    ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
    ## [Unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
    ### {{ group | upper_first }}
    {% for commit in commits %}
        - {% if commit.scope %}**{{ commit.scope }}:** {% endif %}\
            {% if commit.breaking %}[**breaking**] {% endif %}\
            {{ commit.message | upper_first }} \
            ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/arsabutispik/mutiny-rs/commit/{{ commit.id }}))\
    {% endfor %}
{% endfor %}\n
"""
# Remove extra newlines
trim = true

[git]
# strictly follow Conventional Commits (e.g., "feat(user): add login")
conventional_commits = true
filter_unconventional = false
split_commits = false

# 1. Pre-processors: Regex magic to turn "#123" into a clickable GitHub link
commit_preprocessors = [
    { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/khaxy/mutiny-rs/issues/${2}))"},
]

# 2. Parsers: Classify commits into groups
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" },

    # EXCLUSIONS: These will NOT appear in the changelog
    { message = "^chore\\(release\\): prepare v", skip = true },
    { message = "^chore\\(deps.*\\)", skip = true },
    { message = "^chore\\(pr\\)", skip = true },
    { message = "^chore\\(pull\\)", skip = true },
    { message = "^chore|^ci", skip = true }, # Skip all other chores and CI commits

    # Fallback for security fixes
    { body = ".*security", group = "๐Ÿ›ก๏ธ Security" },
    # Fallback if any is missed
    { body = ".*", group = "๐Ÿ” Other Changes"}
]

# 3. Filtering
# Protect breaking changes from being skipped due to other filters
protect_breaking_commits = false
# Filter out tags that don't look like versions (e.g. "deployment-2023")
tag_pattern = "v[0-9].*"

# 4. Sorting
# Sort tags topologically (git history order)
topo_order = false
# Sort commits inside the version from oldest to newest
sort_commits = "oldest"