ci: add contributors and commit groups to the release notes (#108)

Drew Smirnoff and Copilot created

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

Change summary

.goreleaser.yml | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)

Detailed changes

.goreleaser.yml 🔗

@@ -58,13 +58,41 @@ checksum:
 
 # 'changelog' configures the automatic generation of release notes.
 changelog:
+  # Use 'github' to fetch additional metadata like PR authors and linked issues.
+  use: github
   sort: asc
+  # Group commits by category based on conventional commit prefixes.
+  groups:
+    - title: "New Features"
+      regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$'
+      order: 0
+    - title: "Bug Fixes"
+      regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$'
+      order: 1
+    - title: "Performance Improvements"
+      regexp: '^.*?perf(\([[:word:]]+\))??!?:.+$'
+      order: 2
+    - title: "Refactoring"
+      regexp: '^.*?refactor(\([[:word:]]+\))??!?:.+$'
+      order: 3
+    - title: "Build & CI"
+      regexp: '^.*?(build|ci)(\([[:word:]]+\))??!?:.+$'
+      order: 4
+    - title: "Dependencies"
+      regexp: '^.*?chore\(deps\).*$'
+      order: 5
+    - title: "Other Changes"
+      order: 999
   filters:
     # Exclude commit messages that match these patterns from the changelog.
     exclude:
       - "^docs:"
       - "^test:"
+      - "^chore:"
       - "Merge branch"
+      - "Merge pull request"
+  # Include contributor info and abbreviate commit hashes.
+  abbrev: 7
 
 # 'release' configures the GitHub Release creation.
 release:
@@ -73,6 +101,19 @@ release:
   draft: false
   # If set to true, will mark the release as a pre-release.
   prerelease: auto
+  # Add a footer to the release notes featuring contributors.
+  footer: |
+    ---
+
+    ## Contributors
+
+    Thanks to all the contributors who made this release possible!
+
+    {{ range .Contributors }}
+    - @{{ .Name }}
+    {{- end }}
+
+    **Full Changelog**: https://github.com/floatpane/matcha/compare/{{ .PreviousTag }}...{{ .Tag }}
 
 # 'brews' configures the Homebrew tap integration.
 brews: