diff --git a/.commitlintrc.json b/.commitlintrc.json
new file mode 100644
index 0000000..c30e5a9
--- /dev/null
+++ b/.commitlintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": ["@commitlint/config-conventional"]
+}
diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml
new file mode 100644
index 0000000..b23f498
--- /dev/null
+++ b/.github/workflows/commitlint.yml
@@ -0,0 +1,27 @@
+name: Commitlint
+
+on:
+ pull_request:
+ branches:
+ - main
+ - development
+
+permissions:
+ contents: read
+ pull-requests: read
+
+jobs:
+ lint:
+ name: Lint commit messages
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 0
+
+ - name: Lint commits
+ uses: wagoid/commitlint-github-action@v6
+ with:
+ configFile: .commitlintrc.json
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 575ed5c..045a5c8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -337,3 +337,15 @@ jobs:
version="${{ steps.version.outputs.value }}"
gh release create "${version}" "${{ steps.version.outputs.archive }}" --title "${version}" --notes-file "${{ steps.notes.outputs.file }}" --target "${GITHUB_SHA}"
+
+ - name: Back-merge main into development
+ shell: bash
+ run: |
+ set -euo pipefail
+
+ version="${{ steps.version.outputs.value }}"
+ pr_url="$(gh pr list --head main --base development --state open --json url --jq '.[0].url')"
+ if [[ -z "${pr_url}" || "${pr_url}" == "null" ]]; then
+ pr_url="$(gh pr create --base development --head main --title "chore: sync main into development after ${version}" --body "Automated back-merge of \`main\` into \`development\` following the ${version} release.")"
+ fi
+ echo "Back-merge PR: ${pr_url}" >> "$GITHUB_STEP_SUMMARY"
diff --git a/README.md b/README.md
index 4422571..bbcef53 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ This is a macOS screen saver based on the iconic rain of characters and symbols
```
4. In the opened Wallpaper settings, switch to **Screen Saver** and select **MatrixScreenSaver**.
-5. Enjoy and donate
+5. Enjoy and donate — so I can invest in a developer license for signing the screen saver and make it installable with a double-click (Thanks Apple 😐)
