Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
462b6f0
Add dark mode checker depending on Qt version
ann0see Jun 30, 2025
4fde19a
Merge pull request #3507 from ann0see/bug/windowsDarkMode
ann0see Jul 23, 2025
042f435
Move Qt installation to ~/qt to re-enable caching
ann0see Aug 3, 2025
823289b
Merge pull request #3512 from ann0see/autobuild/FixGtarPermissionIssue
pljones Aug 8, 2025
bb47f4f
Build: Bump Qt6 from 6.8.1 to 6.9.1
actions-user Aug 8, 2025
ecb3bcf
Revert Qt version for iOS
ann0see Aug 9, 2025
4992d47
Merge pull request #3407 from jamulussoftware/ci/bump-dependencies/Qt6
pljones Aug 9, 2025
157cc00
Switch create-dmg to github download
ann0see Aug 3, 2025
19a0498
Merge pull request #3511 from ann0see/autobuild/reAddCreateDmgPin
pljones Aug 10, 2025
c03b79f
Set ann0see as german app translator
ann0see Aug 31, 2025
ba07f4e
Fix bugs in translation issue creation script
ann0see Aug 31, 2025
a0f38c9
3532: Add jamulusserver/setDirectory request
pljones Sep 7, 2025
659a8ba
Merge pull request #3533 from pljones/feature/3532-rpc-setdirectory
pljones Sep 13, 2025
179f0ff
beta2 ChangeLog
pljones Sep 14, 2025
0a6ea39
Update version to 3.12.0beta2 for release
pljones Sep 14, 2025
e4ff7e4
Revert version to 3.11.0dev for development
pljones Sep 14, 2025
8d525b2
Translated using Weblate (Italian)
diegoberaldin Dec 29, 2024
b61131e
Translated using Weblate (German)
Jan 8, 2025
76409e5
Translated using Weblate (Portuguese (Brazil))
IguJl15 Jan 16, 2025
9e38f17
Translated using Weblate (Portuguese (Brazil))
Jan 16, 2025
eb4c5ab
Translated using Weblate (Korean)
MarongHappy Feb 2, 2025
83d23c2
Translated using Weblate (Portuguese (Portugal))
mansil Mar 29, 2025
c241a8a
Translated using Weblate (Swedish)
May 5, 2025
91836ec
Translated using Weblate (Polish)
mrpiotr-dev May 10, 2025
811f172
Translated using Weblate (Polish)
May 19, 2025
fe78a21
Translated using Weblate (Portuguese (Portugal))
mansil May 19, 2025
471aa53
Translated using Weblate (Chinese (Simplified Han script))
May 24, 2025
7ec092d
Translated using Weblate (French)
trebmuh May 29, 2025
25ed9eb
Translated using Weblate (Portuguese (Portugal))
mansil May 30, 2025
f3cd2f7
Translated using Weblate (Portuguese (Portugal))
mansil Jun 2, 2025
a18df4d
Translated using Weblate (Portuguese (Portugal))
mansil Jul 2, 2025
f0d0048
Translated using Weblate (Chinese (Simplified Han script))
Jul 11, 2025
31c45c8
Translated using Weblate (Dutch)
michteting Jul 24, 2025
b16557b
Translated using Weblate (Swedish)
genesisproject2020 Aug 9, 2025
9c62eaf
Translated using Weblate (German)
ann0see Aug 31, 2025
519b631
Translated using Weblate (Swedish)
genesisproject2020 Sep 1, 2025
de021a1
Translated using Weblate (Dutch)
Sep 2, 2025
a7b3100
Translated using Weblate (Polish)
ann0see Sep 14, 2025
121cec5
Translated using Weblate (Portuguese (Portugal))
ann0see Sep 14, 2025
810c312
Merge pull request #3453 from weblate/weblate-jamulus-jamulus-app
ann0see Sep 14, 2025
cd41921
Update version to 3.12.0beta3 for release
pljones Sep 16, 2025
8eb6f81
Revert version to 3.11.0dev for development
pljones Sep 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/autobuild/mac.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

set -eu

QT_DIR=/opt/qt
QT_DIR=~/qt
# The following version pinnings are semi-automatically checked for
# updates. Verify .github/workflows/bump-dependencies.yaml when changing those manually:
AQTINSTALL_VERSION=3.1.21
Expand Down
2 changes: 1 addition & 1 deletion .github/autobuild/windows.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ $DownloadCacheDir = 'C:\AutobuildCache'
# The following version pinnings are semi-automatically checked for
# updates. Verify .github/workflows/bump-dependencies.yaml when changing those manually:
$Qt32Version = "5.15.2"
$Qt64Version = "6.8.1"
$Qt64Version = "6.9.1"
$AqtinstallVersion = "3.1.21"
$JackVersion = "1.9.22"
$Msvc32Version = "win32_msvc2019"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/autobuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ jobs:
- config_name: MacOS (artifacts)
target_os: macos
building_on_os: macos-14
base_command: QT_VERSION=6.8.1 SIGN_IF_POSSIBLE=1 TARGET_ARCHS="x86_64 arm64" ./.github/autobuild/mac.sh
base_command: QT_VERSION=6.9.1 SIGN_IF_POSSIBLE=1 TARGET_ARCHS="x86_64 arm64" ./.github/autobuild/mac.sh
# Disable CodeQL on mac as it interferes with signing the binaries (signing hangs, see #2563 and #2564)
run_codeql: false
# Latest Xcode which runs on macos-14:
Expand Down Expand Up @@ -321,8 +321,8 @@ jobs:
uses: actions/cache@v4
with:
path: |
/opt/qt
~/Library/Cache/jamulus-homebrew-bottles
~/qt
~/Library/Cache/jamulus-dependencies
key: ${{ matrix.config.target_os }}-${{ hashFiles('.github/workflows/autobuild.yml', '.github/autobuild/mac.sh', 'mac/deploy_mac.sh') }}-${{ matrix.config.base_command }}

- name: Cache Windows dependencies
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/bump-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ jobs:
get_upstream_version: GH_REPO=miurahr/aqtinstall gh release view --json tagName --jq .tagName | sed -re 's/^v//'
# The following regexps capture both the *nix and the Windows variable syntax (different case, underscore):
local_version_regex: (.*AQTINSTALL_?VERSION\s*=\s*"?)([0-9.]*)("?.*)

- name: create-dmg
changelog_name: create-dmg (macOS)
get_upstream_version: GH_REPO=create-dmg/create-dmg gh release view --json tagName --jq .tagName | sed -re 's/^v//'
local_version_regex: (.*CREATEDMG_VERSION\s*=\s*"?)([0-9.]*)("?.*)
- name: Qt6
changelog_name: bundled Qt6
get_upstream_version: |
Expand Down Expand Up @@ -88,7 +91,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -eu
files=( .github/{autobuild,workflows}/* windows/*.ps1 )
files=( .github/{autobuild,workflows}/* windows/*.ps1 mac/*.sh )
upstream_version="$(${{ matrix.components.get_upstream_version }})"
local_version="$(perl -nle 'print "$2" if /${{ matrix.components.local_version_regex }}/i' "${files[@]}" | sort --reverse --version-sort | head -n1)"
if [[ -z "$upstream_version" ]]; then
Expand Down
39 changes: 36 additions & 3 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
### 3.11.0dev <- NOTE: the release version number will be 3.12.0 ###

- Translations updated from Hosted Weblate (#3441, #3388).
(contributed by @weblate)

- Client: Display version for each server in the Connect dialog (#3416).
(contributed by @softins)

Expand All @@ -15,17 +18,29 @@
- Client: Added native MIDI support to the ASIO (non-Jack) Windows build (#3431).
(contributed by @softins)

- Client RPC: Added jamulusclient/pollServerList methods and jamulusclient/receivedServerList notification to JSON-RPC interface (#3479).
(contributed by @ann0see)

- Server: Disabled swap memory usage on Linux (#3381).
(contributed by @dtinth)

- Server: The `-m`/`--htmlstatus` option is considered deprecated and has been replaced by JSON RPC's `jamulusserver/getClients` method. The `-m` option will be removed in future (#3398).
(contributed by @ann0see)

- Server RPC: Added jamulusserver/setDirectory request (#3533).
(contributed by @pljones)

- Windows: Avoid screensaver or sleeping if connected to a server (#3498).
(contributed by @ann0see)

- Linux: Reorder service initialization to wait for network interface before starting the Server (#3440).
(contributed by @rdica)
- iOS: Fixed GUI issue preventing the connect dialog to show correctly (#3343).
(contributed by @ann0see)

- iOS: Upgrade build to Qt 6 (#3445).
(contributed by @ann0see)

- iOS: Return correct operating system version if run as server (#3360).
(contributed by @ann0see)

Expand All @@ -38,21 +53,39 @@
- iOS: Fix crash on Qt6 after closing the chat window (#3413).
(contributed by @ann0see)

- Translations updated from Hosted Weblate (#3388).
(contributed by @weblate)

- Dependencies: Updated Opus library to v1.5.2 (#3409).
(contributed by @softins)

- Build: Updated bundled Qt6 to version 6.9.1 (#3407).
(contributed by @app/github-actions)

- Build: Updated bundled Qt6 to version 6.7.3 (#3262).
(contributed by @app/github-actions)

- Build: Updated Windows Installer base (NSIS) to version 3.11 (#3483).
(contributed by @app/github-actions)

- Build: Upgrade Android Runner to Ubuntu 22.04 (#3444).
(contributed by @ann0see)

- Build: Switch Linux ARM builds to be built on arm runners (#3470).
(contributed by @ann0see)

- Build: Bump DoozyX/clang-format-lint-action from 0.18.2 to 0.20 (#3490).
(contributed by @app/dependabot)

- Build: Bump DoozyX/clang-format-lint-action from 11b773b1598aa4ae3b32f023701bca5201c3817d to c71d0bf4e21876ebec3e5647491186f8797fde31 (#3368).
(contributed by @app/dependabot)

- Build: Updated the Github build runner for MacOS Legacy to macos-13 (#3436).
(contributed by @softins)

- Internal: added improvements to changelog-helper.sh (#3459).
(contributed by @softins)

- Internal: Added missing Makefile.in files to Opus 1.5.2 distro (#3488).
(contributed by @softins)


### 3.11.0 (2024-09-21) ###

Expand Down
20 changes: 20 additions & 0 deletions docs/JSON-RPC.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,8 @@ Results:
| result.city | string | The server city. |
| result.countryId | number | The server country ID (see QLocale::Country). |
| result.welcomeMessage | string | The server welcome message. |
| result.directoryType | string | The directory type as a string (see EDirectoryType and SerializeDirectoryType). |
| result.directoryAddress | string | The string used to look up the directory address (only assume valid if directoryType is "custom" and registrationStatus is "registered"). |
| result.directory | string | The directory with which this server requested registration, or blank if none. |
| result.registrationStatus | string | The server registration status as string (see ESvrRegStatus and SerializeRegistrationStatus). |

Expand All @@ -342,6 +344,24 @@ Results:
| result | string | Always "acknowledged". To check if the recording was restarted or if there is any error, call `jamulusserver/getRecorderStatus` again. |


### jamulusserver/setDirectory

Set the directory type and, for custom, the directory address.

Parameters:

| Name | Type | Description |
| --- | --- | --- |
| params.directoryType | string | The directory type as a string (see EDirectoryType and DeserializeDirectoryType). |
| [params.directoryAddress] | string | (optional) The directory address, required if `directoryType` is "custom". |

Results:

| Name | Type | Description |
| --- | --- | --- |
| result | string | Always "ok". |


### jamulusserver/setRecordingDirectory

Sets the server recording directory.
Expand Down
47 changes: 22 additions & 25 deletions mac/deploy_mac.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
#!/bin/bash
set -eu -o pipefail

# Dependency versions
CREATEDMG_VERSION="1.2.2"

root_path=$(pwd)
project_path="${root_path}/Jamulus.pro"
resources_path="${root_path}/src/res"
Expand Down Expand Up @@ -138,12 +141,8 @@ build_installer_image() {
local client_target_name="${1}"
local server_target_name="${2}"

# Install create-dmg via brew. brew needs to be installed first.
# Download and later install. This is done to make caching possible
# brew_install_pinned "create-dmg" "1.1.0"

# FIXME: Currently caching is disabled due to an error in the extract step
brew install create-dmg
# Install create-dmg
github_install_dependency "create-dmg/create-dmg" "v${CREATEDMG_VERSION}"

# Build installer image

Expand Down Expand Up @@ -193,26 +192,24 @@ build_storesign_pkg() {
# productbuild --sign "${macinst_cert_name}" --keychain build.keychain --component "${macapp_deploy_path}/${server_target_name}.app" /Applications "${deploy_path}/${server_target_name}_${JAMULUS_BUILD_VERSION}.pkg"
}

brew_install_pinned() {
local pkg="$1"
local version="$2"
local pkg_version="${pkg}@${version}"
local brew_bottle_dir="${HOME}/Library/Cache/jamulus-homebrew-bottles"
local formula="/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/${pkg_version}.rb"
echo "Installing ${pkg_version}"
mkdir -p "${brew_bottle_dir}"
pushd "${brew_bottle_dir}"
if ! find . | grep -qF "${pkg_version}--"; then
echo "Building fresh ${pkg_version} package"
brew developer on # avoids a warning
brew extract --version="${version}" "${pkg}" homebrew/cask
brew install --build-bottle --formula "${formula}"
brew bottle "${formula}"
# In order to keep the result the same, we uninstall and re-install without --build-bottle later
# (--build-bottle is documented to change behavior, e.g. by not running postinst scripts).
brew uninstall "${pkg_version}"
github_install_dependency() {
local repository="${1}"
local version="${2}"
dependency_root_folder="${HOME}/Library/Cache/jamulus-dependencies/${repository}/${version}"
if [[ ! -d "${dependency_root_folder}" ]]; then
TMPDOWNLOADDIR=$(mktemp -d '/tmp/ghdep.XXXXXX')
# Download release
mkdir -p "${dependency_root_folder}"
wget "https://github.com/${repository}/archive/refs/tags/${version}.tar.gz" -O "${TMPDOWNLOADDIR}/dep.tar.gz"

# Unpack release and clean up
tar -xvzf "${TMPDOWNLOADDIR}/dep.tar.gz" -C "${TMPDOWNLOADDIR}/"
rm "${TMPDOWNLOADDIR}/dep.tar.gz"
# Since github creates a folder with the version number in the tar, copy all contents from this folder into ${dependency_root_folder}
mv "${TMPDOWNLOADDIR}"/*/* "${dependency_root_folder}/"
fi
brew install "${pkg_version}--"*
pushd "${dependency_root_folder}"
sudo make install
popd
}

Expand Down
11 changes: 9 additions & 2 deletions src/clientdlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1479,9 +1479,16 @@ void CClientDlg::SetMixerBoardDeco ( const ERecorderState newRecorderState, cons
}
else
{
if ( palette().color ( QPalette::Window ) == QColor::fromRgbF ( 0.196078, 0.196078, 0.196078, 1 ) )
#if QT_VERSION >= QT_VERSION_CHECK( 6, 5, 0 )
// for Qt 6.5.0 or later, we use the inbuilt cross platform color scheme picker.
if ( QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark )
#else
// for earlier versions, check darkmode as proposed in https://www.qt.io/blog/dark-mode-on-windows-11-with-qt-6.5
const QPalette defaultPalette;
if ( defaultPalette.color ( QPalette::WindowText ).lightness() > defaultPalette.color ( QPalette::Window ).lightness() )
#endif
{
// Dark mode on macOS/Linux needs a light color
// Dark mode needs a light color

sTitleStyle += "color: rgb(220,220,220); }";
}
Expand Down
3 changes: 3 additions & 0 deletions src/clientdlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@
#if QT_VERSION >= QT_VERSION_CHECK( 5, 6, 0 )
# include <QVersionNumber>
#endif
#if QT_VERSION >= QT_VERSION_CHECK( 6, 5, 0 )
# include <QStyleHints>
#endif
#include "global.h"
#include "util.h"
#include "client.h"
Expand Down
Loading