Prepare release 3.12.0
Target timeline
| Phase | Date |
|---|---|
| Scheduled feature freeze / Start of translation process | 06.07.2025 |
| Targeted translation completion date: | Early 2025 |
| Approximate release date: | Early 2025 |
| Current state: | Code freeze (rc) |
Release aims
We're currently looking forwards to Jamulus 4, which will make some larger scale changes to parts of Jamulus than previous releases have. So we're aiming to fix as many known issues as we can in this coming release, so there's a stable version of Jamulus available whilst work progresses on the changes.
Checklist
- [ ] Assign this issue to the release shepherd who is in charge of managing this checklist.
- [x] Make sure
ChangeLoghas the agreed next release version number. - [x] Pin this issue
- [x] Ensure that all issues/PR targeted for this release are done by checking the Project board with the appropriate filter for this release. Remind main developers to review entries in Waiting on team state.
- [x] Agree to de-tag unfinished Issues/PRs.
- [x] Declare a freeze for code and website by updating this Issue and adding a comment. PRs can still be worked on and may get reviewed, but must not be merged unless agreed explicitly.
- [x] Check the
needs documentationlabel for any outstanding PRs flagged for this release and remove that label if done. - [x] Check ./Jamulus -h output against the Include-Client/Server-Commands.md pages and [man page (distributions/Jamulus.1)[(https://github.com/jamulussoftware/jamulus/blob/main/distributions/Jamulus.1). Update if necessary.
- [x] Start Website translations
- [x] Check for broken links
- [x] Open a Pull Request from
next-releaseto release, set it as "Draft", sanity check for conflicts and any obvious problems. - [x] Declare a full freeze of the
next-releaseandreleasebranch. No changes should be made from now on to ensure translators don't have to work twice. - [ ] Check if the list of translators in
tools/create-translation-issues.sh. Make sure issue text is up-to-date. Add any URLs that will need localisation into the "New/Changed screenshots" section. - [x] Create a translation issue for each language with
tools/create-translation-issues.shusingwebargument (see notes in script). - [x] If anyone finds critical issues now, all translators must be made aware of them and all languages should be updated.
- [x] Start App translations
- [x] Generate
.tsfiles in main vialupdate - [ ] Check if the list of translators in
tools/create-translation-issues.shis up-to-date - [x] Create a translation issue for each language with
tools/create-translation-issues.shusingappargument.
- [x] Generate
- [x] Update the Changelog
- [x] Tag a beta release
- [x] Finish App translations
- [x] Review translation PRs according to release process checklist
- [ ] Wait for all PRs to be merged (missing translations will revert to English automatically).
- [x] Check for conflicting accelerator keys (see
tools/checkkeys.pl)
- [x] Finish Website translations
- [x] Wait for all PRs to be merged (missing translations will revert to English automatically)
- [x] Check for broken links
- [ ] Check the milestone for mergable stuff again
- [ ] Update the Changelog
- [ ] Tag a release candidate (inform emlynmac for signing on macOS and upload signed binary from his repo to ours).
- [ ] Announce the release candidate on Github Discussions. Pin the thread. Unpin and lock the beta thread.
- [ ] Draft an announcement, include all contributors via
tools/get_release_contributors.py
- [ ] Update the version number in
Jamulus.proand add the release date to the Changelog header and commit - [ ] Update the Changelog
- [ ] Tag this commit as
r3_y_z- [ ] Wait for the build to complete
- [ ] Contact emlynmac for signing on macOS and upload signed binary from his repo to ours.
- [ ] Do a smoke test for Windows/Mac/Linux -- Do the binaries start/connect properly? Can earlier Jamulus versions properly connect to a server based on the new release?
- [ ] Force tag that tag as
latestand push. - [ ] Upload the artifacts to SourceForge and set defaults.
- [ ] Update download links on the website by editing
_config.ymlinnext-release - [ ] Disable branch protection rule of the
releasebranch by clicking on "Edit" on the Branches page and adding a_behindrelease. - [ ] Publish Website release by squashing and merging
next-releaseintorelease - [ ] Enable branch protection rule of the
releasebranch after the site and the.pofiles are published by removing the_from the branch protection rule you edited on the Branches page.
- [ ] Announce the new release with a summary of changes (+ link to the changelog for details) and a link to the download page
- [ ] On Github Discussions in the Announcements section. Lock the announcement thread. Pin the thread. Unpin and lock release candidate thread.
- [ ] On Facebook in the group "Jamulus (official group)". Turn off replies.
- [ ] Trigger the update notification by updating both Update Check Servers with the new version (@pljones for update02, email corrados for update01)
- [ ] [Prepare
Jamulus.pro(devsuffix) and ChangeLog (add a header) for the next release - [ ] Check that all Issues and PRs tagged for this release are in Done/Closed state.
- [ ] Close the release milestone in both jamulus and jamuluswebsite repos
- [ ] Create a milestone for the next minor release in jamulus and jamuluswebsite repos
- [ ] Update this template in https://jamulus.io/contribute/Release-Process with any improvements if needed.
- [ ] Unpin and close this issue
- [ ] Determine if a release retrospective is needed, create on Discussions if required
@pljones Could you please verify you sent a mail about discord a few minutes ago?
Yes. I've got to check a gew other places too see where else I did it, too.
Ok. Verified. @gilgongo should be able to help you.
I'd say the goal here is to have a stable 3.12.0 (@pljones already said something like that somewhere). Afterwards for 4.0 we start potential larger restructurings.
I would like to declare a feature freeze this weekend: 05.07.25.
Ho,
What you mean this. Jamulus down?
Sent: Monday, June 30, 2025 at 6:31 PM From: "ann0see" @.> To: "jamulussoftware/jamulus" @.> Cc: "anprdev" @.>, "Comment" @.> Subject: Re: [jamulussoftware/jamulus] Prepare release 3.12.0 (Issue #3443)
ann0see left a comment (jamulussoftware/jamulus#3443)
I would like to declare a feature freeze this weekend: 05.07.25.
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>
@anprdev No. This means that from this date no new features for the upcoming version should be worked on. Every new feature worked on would need to be in a later version.
Thanks for answering. Cheers Roland
Sent: Tuesday, July 01, 2025 at 7:27 AM From: "ann0see" @.> To: "jamulussoftware/jamulus" @.> Cc: "anprdev" @.>, "Mention" @.> Subject: Re: [jamulussoftware/jamulus] Prepare release 3.12.0 (Issue #3443)
ann0see left a comment (jamulussoftware/jamulus#3443)
@anprdev No. This means that from this date no new features for the upcoming version should be worked on. Every new feature worked on would need to be in a later version.
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
I am declaring a tag freeze now. No new Issues should be tagged unless explicitly agreed. Everything that is tagged for the upcoming release now should be worked on with priority.
Top good to do that. Can we also do something about to tell the server to go private with RPC? Maybe wrong place to ask.
Maybe wrong place to ask.
Unfortunately yes. This issue is only for handling the release process. Any issues/feature requests should go through the Discussions or issues.
Have a look at this document about contributing: https://github.com/jamulussoftware/jamulus/blob/main/CONTRIBUTING.md
Concerning signing on macOS, I will probably need to renew my certificate - but before doing that, I would like to have an unsigned beta.
Concerning signing on macOS, I will probably need to renew my certificate - but before doing that, I would like to have an unsigned beta.
If you like I can help with testing have macOS on a virtual Machine
@jamulussoftware/maindevelopers
I am planning to push the release forward and soon start the translation process.
The only important outstanding issue is about accessibility: https://github.com/jamulussoftware/jamulus/issues/490
IMO we need to build a modified version for this, so it's not strictly speaking a blocker but needs to be done soon.
Nice step by step.
@softins I don't think that the lupdate step is needed? For me, it seems as if there is nothing changing if I run it.
TODO: Add step for checklist to set note for translation process on weblate.
Can't wait for this. Good job
Some items to pick up when reviewing the release process:
- [x] Check ./Jamulus -h output against the Include-Client/Server-Commands.md pages and [man page (distributions/Jamulus.1)[(https://github.com/jamulussoftware/jamulus/blob/main/distributions/Jamulus.1). Update if necessary.
"https://github.com/jamulussoftware/jamuluswebsite/blob/next-release/wiki/en/Include-Server-Commands.md" -- this does not exist, unfortunately. There's some more detailed, scattered, information on what the options mean in the "Running a Server" document but not just the list of options. I've marked it done on the basis of my attempt to check that everything matched but ... well, I couldn't say for certain.
https://github.com/jamulussoftware/jamulus/issues/3537
- [ ] Start Website translations
I got as far as bundle exec jekyll serve but linkcheck --no-warnings http://localhost:4000 > linkcheck.log fails -- there doesn't appear to be a --no-warnings option. I tried using the docker version and that didn't work, so I gave up at that point.
https://github.com/jamulussoftware/jamulus/issues/3538
Another change request for the changelog-helper:
$ grep SKIP ./tools/changelog-helper.sh
if [[ "${title_suggestion_in_pr}" == "SKIP" ]]; then
Could do with this issuing a message. I got
Checking if all PR references in git log since r3_11_0 are included for 3.12.0 based on ref origin/main...
-> Ignoring PR #3512, which was mentioned in 'git log r3_11_0..HEAD', but already has milestone 'Release 3.11.0'
on the first pass. I checked #3512 and it was mis-tagged, so I fixed it. When I reran, I didn't see it mentioned. That caused me to restore the updated ChangeLog and start again. It still didn't appear -- so then I checked the PR and it was tagged "SKIP". Having
-> Skipping PR #3512 (...title...)
would have been more reassuring.
https://github.com/jamulussoftware/jamulus/issues/3536
@jamulussoftware/translators please recheck your translations. I plan to merge translations this evening.
Translations are now merged. Website needs to be updated with screenshots. Maybe we tag a new beta tomorrow?
- [ ] Finish App translations
- [ ] Review translation PRs according to release process checklist
- [ ] Wait for all PRs to be merged (missing translations will revert to English automatically).
- [ ] Check for conflicting accelerator keys (see tools/checkkeys.pl)
- [ ] Finish Website translations
- [ ] Wait for all PRs to be merged (missing translations will revert to English automatically)
- [ ] Check for broken links
OK, so another thing we need to fix in the release process template is cutting another beta between Finish App translations and Finish Website translations so that the beta can be used for the screenshots.
https://github.com/jamulussoftware/jamulus/issues/3535
@pljones Good Job.
beta3, with the update translations, is building and will be available from https://github.com/jamulussoftware/jamulus/releases/tag/r3_12_0beta3
I think there is a small issue with setDirectory.
When I set the server to None on the server itself. So Directory ComboBox value is None. I set the Directory with RPC to Any Genre 1 all is working perfect. But when I reboot the Server PI5 and Start the Jamulus Server the directory is back to None and Directory is not registered even I have set the Directory to Any Genre 1.
It is not a big deal if you know that.
How are you starting the server? If you're not using the GUI, the persisted settings will not be loaded.
I always start the Server with GUI. Always like to see what is happening on the screen. Its not a issue for me. Only like to report this.
OK, the problem, then, is likely that the RPC setting doesn't get to the UI and then when the system shuts down, the UI setting gets sent to the main program and then on to be stored. So all part of the same issue with the RPC/<->/core/<->/UI interfaces.
(Persistence only happens at shutdown and it's only read at start up.)
Again no issue for me when you know it.