{{/* This template is used to render the set of changes in the changelog page. It expects to find a directory "changelogs" containing a subdirectory for each of the 5 APIs in the specification. Inside each of these directories it expects to find newsfragments describing changes to that API. If the `version.status` setting in config.toml is anything other than "unstable", then it also expects to find a "release.yaml" file in /changelogs, which contains: - `tag`: Git tag for this release - `date`: date of this release It then renders this info a table, before the list of changes. */}} {{ $path := path.Join "changelogs" }} {{ $status := .Site.Params.version.status }} {{ if ne $status "unstable" }} {{ $release_info := readFile (path.Join $path "release.yaml") | transform.Unmarshal }}

Git commit | https://github.com/matrix-org/matrix-doc/tree/{{ $release_info.tag }}
Release date | {{ $release_info.date }}

{{ end }}

## Changes since last release

{{ partial "render-api-changes" (dict "title" "Client-Server API" "id" "client-server-api" "path" (path.Join $path "client_server")) }} {{ partial "render-api-changes" (dict "title" "Server-Server API" "id" "server-server-api" "path" (path.Join $path "server_server")) }} {{ partial "render-api-changes" (dict "title" "Application Service API" "id" "application-service-api" "path" (path.Join $path "application_service")) }} {{ partial "render-api-changes" (dict "title" "Identity Service API" "id" "identity-service-api" "path" (path.Join $path "identity_service")) }} {{ partial "render-api-changes" (dict "title" "Push Gateway API" "id" "push-gateway-api" "path" (path.Join $path "push_gateway")) }} {{ define "partials/render-api-changes" }}

### {{ .title }}

{{ $api_path := .path }} {{ $config_file := path.Join $api_path "pyproject.toml" }} {{ $config := readFile $config_file | transform.Unmarshal }} {{ $news_path := path.Join $api_path "newsfragments" }} {{ partial "render-newsfragments" (dict "config" $config "news_path" $news_path )}} {{ end }} {{ define "partials/render-newsfragments" }} {{ $config := .config }} {{ $news_path := .news_path }} {{ $types := dict }} {{ range $config.tool.towncrier.type }} {{ $types = merge $types (dict .directory (slice)) }} {{ end }} {{ range (readDir $news_path) }} {{ $pieces := split .Name "." }} {{ $ticket := index $pieces 0 }} {{ $description := readFile (path.Join $news_path .Name ) }} {{ $change_info := (dict "ticket" $ticket "description" $description )}} {{ $type := index $pieces 1 }} {{ $instances := index $types $type }} {{ $instances = $instances | append $change_info }} {{ $types = merge $types (dict $type $instances) }} {{ end }}

{{ range $config.tool.towncrier.type }} {{ $changes_of_type := (index $types .directory) }} {{ if $changes_of_type }}
- {{.name}}

  {{ range $changes_of_type }}
  - {{ .ticket }}: {{ .description | markdownify }}
  {{ end }}
{{ end }} {{ end }}

{{ end }}