Skip to content

Commit a93edf7

Browse files
committed
AI ReleaseAnnouncement.md maintenance
1 parent 6516459 commit a93edf7

60 files changed

Lines changed: 11467 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Jamulus Next Release — Working Announcement Draft
2+
3+
> **Note for maintainers:** This is a working draft, automatically updated by GitHub Copilot
4+
> as PRs are merged to `main`. Please review, polish, and publish to
5+
> [GitHub Discussions (Announcements)](https://github.com/orgs/jamulussoftware/discussions)
6+
> and other channels when the release is ready.
7+
>
8+
> Run [`tools/get_release_contributors.py`](tools/get_release_contributors.py) to compile
9+
> the full contributor list before publishing.
10+
>
11+
> See the [ChangeLog](ChangeLog) for the complete technical record of all changes.
12+
13+
Here's what's new in the next release of Jamulus:
14+
15+
<!-- Changes will appear here automatically as pull requests are merged -->
16+
17+
## For everyone
18+
19+
## For Windows users
20+
21+
## For macOS users
22+
23+
## For mobile users (iOS & Android)
24+
25+
## For server operators
26+
27+
## Translations
28+
29+
---
30+
31+
As always, all feedback on the new version is welcome. Please raise any problems in a new bug report or discussion topic.
32+
33+
---
34+
35+
**REMINDER:** Those of you with virus checkers are likely to find the Windows installer incorrectly flagged as a virus. This is because the installer is open source and virus checkers cannot be bothered to check what it installs, so assume that it's going to be malign. If you download the installer *only from the official release*, you should be safe to ignore any warning.
36+
37+
---
38+
39+
*A big thanks to all contributors who made this release possible.*
40+
41+
*This draft is automatically maintained by the [Update Release Announcement](.github/workflows/update-release-announcement.yml) workflow.*
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
name: Backfill Release Announcement
2+
run-name: Backfill from ${{ inputs.since_tag || 'r3_11_0' }}${{ inputs.dry_run == 'true' && ' (dry run)' || '' }}
3+
4+
# This workflow runs the release_announcement Python package to populate
5+
# ReleaseAnnouncement.md with every merged PR since a given release tag.
6+
#
7+
# Trigger it once after a release tag is cut (e.g. r3_11_0) and this workflow
8+
# file is merged to main. It processes PRs in chronological order, calling
9+
# the GitHub Models API (openai/gpt-4o) for each one so the announcement builds
10+
# up exactly as it would have done if the per-PR workflow had been running all
11+
# along.
12+
#
13+
# The script commits one separate commit per PR that produced a user-relevant
14+
# change, then those commits are pushed back to the branch for review via PR.
15+
# Run this workflow from a non-main branch; the push step will update that branch.
16+
17+
on:
18+
workflow_dispatch:
19+
inputs:
20+
since_tag:
21+
description: >-
22+
**Git release tag** to backfill from.
23+
PRs merged *after* this tag will be processed.
24+
(default: r3_11_0)
25+
required: false
26+
default: 'r3_11_0'
27+
dry_run:
28+
description: >-
29+
**Dry run**: commit changes locally but do not push; attach
30+
ReleaseAnnouncement.md as a workflow artifact for review.
31+
required: false
32+
default: 'false'
33+
type: choice
34+
options:
35+
- 'false'
36+
- 'true'
37+
allow_repo_override:
38+
description: >-
39+
**Allow non-jamulussoftware repositories**: set to 'true' to run this workflow
40+
outside the canonical repository owner.
41+
required: false
42+
default: 'false'
43+
type: choice
44+
options:
45+
- 'false'
46+
- 'true'
47+
48+
permissions: {}
49+
50+
jobs:
51+
backfill:
52+
name: Backfill release announcement
53+
# Default safety behavior limits execution to the canonical owner.
54+
# Set workflow_dispatch input allow_repo_override=true to bypass this.
55+
if: github.repository_owner == 'jamulussoftware' || inputs.allow_repo_override == 'true'
56+
runs-on: ubuntu-latest
57+
env:
58+
SINCE_TAG: ${{ inputs.since_tag || 'r3_11_0' }}
59+
DRY_RUN: ${{ inputs.dry_run || 'false' }}
60+
permissions:
61+
contents: write
62+
models: read
63+
64+
steps:
65+
- name: Refuse to run on main
66+
if: github.ref == 'refs/heads/main'
67+
run: |
68+
echo "::error::Backfill must not run directly on main. Trigger this workflow from a non-main branch and merge via PR."
69+
exit 1
70+
71+
- uses: actions/checkout@v6
72+
with:
73+
fetch-depth: 0
74+
75+
- name: Fetch tags
76+
run: |
77+
git fetch --force --tags "https://github.com/${{ github.repository }}.git"
78+
79+
- name: Configure git identity
80+
run: |
81+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
82+
git config user.name "github-actions[bot]"
83+
84+
- name: Install release announcement package
85+
run: |
86+
python3 -m pip install --user ./tools/release_announcement
87+
88+
- name: Record baseline commit
89+
id: baseline
90+
run: |
91+
echo "commit=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
92+
93+
- name: Run backfill script
94+
env:
95+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
96+
run: |
97+
DRY_RUN_FLAG=""
98+
[[ "$DRY_RUN" == "true" ]] && DRY_RUN_FLAG="--dry-run"
99+
python3 -m release_announcement \
100+
"$SINCE_TAG" \
101+
"HEAD" \
102+
--file ReleaseAnnouncement.md \
103+
--backend actions \
104+
--delay-secs 5 \
105+
$DRY_RUN_FLAG
106+
107+
- name: Check if backfill created commits
108+
id: check-updated
109+
run: |
110+
current_commit=$(git rev-parse HEAD)
111+
if [[ "$current_commit" == "${{ steps.baseline.outputs.commit }}" ]]; then
112+
echo "updated=false" >> "$GITHUB_OUTPUT"
113+
else
114+
echo "updated=true" >> "$GITHUB_OUTPUT"
115+
fi
116+
117+
- name: Push commits
118+
if: env.DRY_RUN != 'true'
119+
env:
120+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
121+
run: |
122+
git push
123+
124+
- name: Upload updated announcement
125+
if: steps.check-updated.outputs.updated == 'true'
126+
uses: actions/upload-artifact@v7
127+
with:
128+
name: ReleaseAnnouncement-updated
129+
path: ReleaseAnnouncement.md
130+

.github/workflows/coding-style-check.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ jobs:
5858
steps:
5959
- uses: actions/checkout@v6
6060
- name: Install pylint
61-
run: pip install --user "pylint < 3.0"
61+
# Keep pylint >= 3.0: pylint<3.0 can crash with Python 3.12 (astroid visit_typealias error).
62+
run: pip install --user "pylint >= 3.0"
6263
- name: Check Python files with pylint
6364
run: find ./tools -name '*.py' -print -exec pylint {} +

0 commit comments

Comments
 (0)