mmdflux 2.0.2

Render Mermaid diagrams as Unicode text, ASCII, SVG, and MMDS JSON.
Documentation
from_latest_tag = true
ignore_merge_commits = true
ignore_fixup_commits = false
disable_changelog = false
disable_bump_commit = false
generate_mono_repository_global_tag = false
generate_mono_repository_package_tags = true
branch_whitelist = []
pre = "alpha.*"
skip_ci = "[skip ci]"
skip_untracked = false
tag_prefix = "v"

# Scopes map to monorepo packages. Unscoped commits apply to the root crate.
scopes = ["version", "wasm", "xtask", "web", "mmds-core", "mmds-excalidraw", "mmds-tldraw"]

pre_bump_hooks = []
post_bump_hooks = []
pre_package_bump_hooks = []
post_package_bump_hooks = [
    "git push",
    "git push origin {{package}}-v{{version}}",
]

[git_hooks.commit-msg]
script = '''#!/bin/sh
set -e
cog verify --file $1

# Enforce header max 100 characters
header=$(head -1 "$1")
if [ ${#header} -gt 100 ]; then
    echo "error: commit header exceeds 100 characters (${#header})"
    exit 1
fi

# Enforce lowercase first letter in subject (strip type and optional scope)
subject=$(echo "$header" | sed 's/^[a-z]*([^)]*): //' | sed 's/^[a-z]*: //')
first_char=$(printf '%.1s' "$subject")
if echo "$first_char" | grep -q '^[A-Z]'; then
    echo "error: commit subject must start with a lowercase letter"
    exit 1
fi

# Enforce no trailing period in subject
if echo "$header" | grep -q '\.$'; then
    echo "error: commit subject must not end with a period"
    exit 1
fi
'''

[git_hooks.pre-push]
script = '''#!/bin/sh
branch=$(git rev-parse --abbrev-ref HEAD)

# Allow main and detached HEAD
case "$branch" in
    main|HEAD) exit 0 ;;
esac

# Enforce conventional branch format: type/description
if ! echo "$branch" | grep -qE '^(feat|fix|hotfix|release|chore)/[a-z0-9][a-z0-9.-]*[a-z0-9]$'; then
    echo "error: branch name '$branch' does not follow Conventional Branch format"
    echo "  expected: <type>/<description>"
    echo "  types: feat, fix, hotfix, release, chore"
    echo "  description: lowercase letters, numbers, and hyphens only"
    exit 1
fi
'''

[commit_types]
feat = { changelog_title = "Features", bump_minor = true, order = 1 }
fix = { changelog_title = "Bug Fixes", bump_patch = true, order = 2 }
perf = { changelog_title = "Performance Improvements", order = 3 }
revert = { changelog_title = "Revert", order = 4 }
docs = { changelog_title = "Documentation", order = 5 }
test = { changelog_title = "Tests", omit_from_changelog = true, order = 6 }
build = { changelog_title = "Build system", omit_from_changelog = true, order = 7 }
ci = { changelog_title = "Continuous Integration", omit_from_changelog = true, order = 8 }
refactor = { changelog_title = "Refactoring", order = 9 }
chore = { changelog_title = "Miscellaneous Chores", omit_from_changelog = true, order = 10 }
style = { changelog_title = "Style", omit_from_changelog = true, order = 11 }

[changelog]
path = "CHANGELOG.md"
template = "remote"
remote = "github.com"
repository = "mmdflux"
owner = "kevinswiber"
authors = []

[monorepo.packages.mmdflux]
path = "."
include = ["**"]
ignore = ["crates/mmdflux-wasm/**", "xtask/**", "packages/mmds-core/**", "packages/mmds-excalidraw/**", "packages/mmds-tldraw/**"]
public_api = true
pre_bump_hooks = [
    "just lint",
    "just test",
    "cargo set-version {{version}}",
    "cargo set-version --manifest-path crates/mmdflux-wasm/Cargo.toml {{version}}",
    "cargo set-version --manifest-path xtask/Cargo.toml {{version}}",
]

[monorepo.packages.mmdflux-wasm]
path = "crates/mmdflux-wasm"
public_api = false

[monorepo.packages.xtask]
path = "xtask"
public_api = false

[monorepo.packages.mmds-core]
path = "packages/mmds-core"
public_api = true
pre_bump_hooks = [
    "npm version {{version}} --no-git-tag-version",
]
bump_order = 1

[monorepo.packages.mmds-excalidraw]
path = "packages/mmds-excalidraw"
public_api = true
pre_bump_hooks = [
    "npm version {{version}} --no-git-tag-version",
]
bump_order = 2

[monorepo.packages.mmds-tldraw]
path = "packages/mmds-tldraw"
public_api = true
pre_bump_hooks = [
    "npm version {{version}} --no-git-tag-version",
]
bump_order = 2