moadim 0.19.0

Loop engine for AI agents — routines over REST, MCP, and a built-in web UI
name: GitHub Release

# Cut a GitHub Release for a version. Triggered two ways:
#   * `workflow_call` from auto-release.yml, right after it pushes the tag on a
#     version bump (the automated path — see auto-release.yml).
#   * a manual `v*` tag push (escape hatch for hotfixes cut by hand).
# Release notes are extracted from the matching version section in CHANGELOG.md
# so the published notes stay in sync with the changelog. Runs independently of
# publish.yml — neither blocks the other.

on:
  push:
    tags:
      - 'v*'
  workflow_call:
    inputs:
      tag:
        description: Tag to release (e.g. v0.14.0)
        required: true
        type: string

permissions:
  contents: write

jobs:
  release:
    name: Create GitHub Release
    runs-on: ubuntu-latest
    env:
      TAG: ${{ inputs.tag || github.ref_name }}
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

      - name: Extract changelog section for this tag
        id: notes
        run: |
          VERSION=${TAG#v}
          # Pull lines between '## [VERSION]' and the next '## [' heading.
          awk -v ver="$VERSION" '
            $0 ~ "^## \\[" ver "\\]" { capture=1; next }
            capture && /^## \[/ { exit }
            capture { print }
          ' CHANGELOG.md > release-notes.md
          if [ ! -s release-notes.md ]; then
            echo "No changelog section found for [$VERSION]" >&2
            exit 1
          fi
          echo "Release notes for $VERSION:"
          cat release-notes.md

      - name: Create release
        uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
        with:
          tag_name: ${{ env.TAG }}
          name: ${{ env.TAG }}
          body_path: release-notes.md