Skip to content

sync with dev#2903

Merged
bradkeifer merged 274 commits into4484-airplay-2-not-pairingfrom
dev
Dec 31, 2025
Merged

sync with dev#2903
bradkeifer merged 274 commits into4484-airplay-2-not-pairingfrom
dev

Conversation

@bradkeifer
Copy link
Contributor

No description provided.

music-assistant-machine and others added 30 commits December 7, 2025 01:56
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
…2767)

`Dockerfile.base` still used the old package name `aioresonate` instead
of `aiosendspin`.

Since no `PyAV` updates were released since then, we don't need to
rebuild the base image.
Potential fix for code scanning in github action

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Small fix for HAOS running as add-on to allow api connection when server still needs to be onboarded
Bumps [orjson](https://github.com/ijl/orjson) from 3.11.4 to 3.11.5.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](ijl/orjson@3.11.4...3.11.5)

---
updated-dependencies:
- dependency-name: orjson
  dependency-version: 3.11.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Bumps [podcastparser](https://github.com/gpodder/podcastparser) from 0.6.10 to 0.6.11.
- [Commits](gpodder/podcastparser@0.6.10...0.6.11)

---
updated-dependencies:
- dependency-name: podcastparser
  dependency-version: 0.6.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
marcelveldt and others added 28 commits December 20, 2025 22:29
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
* Fix OpenSubsonic ReplayGain loudness calculation

The OpenSubsonic provider was passing raw ReplayGain gain values
(in dB) directly to set_loudness(), but set_loudness() expects
integrated loudness values (in LUFS).

This caused tracks with ReplayGain tags to show incorrect loudness
values when accessed via OpenSubsonic/Navidrome. For example, a
quiet track with +0.39 dB gain was being stored as 0.39 LUFS
instead of -18.39 LUFS, resulting in massive gain reduction
(-17.39 dB) instead of a small boost.

Fixed by converting ReplayGain values to loudness before storing:
  Loudness (LUFS) = -18 - Gain (dB)

This matches the ReplayGain 2.0 specification and how the
filesystem provider handles ReplayGain tags.

Only affects users connecting to Navidrome/Subsonic servers.
Users with local filesystem music were not affected.

* Remove unnecessary comment

---------

Co-authored-by: Claude <noreply@anthropic.com>
Fix Plex Connect timeline reporting

Use queue.corrected_elapsed_time instead of player.corrected_elapsed_time
to accurately track current track position. This fixes issues where:
- Timeline reported incorrect elapsed time when playing multiple tracks
- Huge time values were sent after track transitions
- Step forward/back commands used wrong elapsed time reference

The queue tracks per-track elapsed time while player tracks total session time.
* Chore(deps): Bump deno from 2.5.6 to 2.6.3

Bumps deno from 2.5.6 to 2.6.3.

---
updated-dependencies:
- dependency-name: deno
  dependency-version: 2.6.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Also bump provider manifest

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
* Chore(deps): Bump websocket-client from 1.8.0 to 1.9.0

Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/websocket-client/websocket-client/releases)
- [Changelog](https://github.com/websocket-client/websocket-client/blob/master/ChangeLog)
- [Commits](websocket-client/websocket-client@v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: websocket-client
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Also bump provider manifest

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
Allow users to add multiple Audible provider instances with separate
logins. The provider implementation already supports this - just needed
to add the multi_instance flag to the manifest.

Fixes: music-assistant/discussions#862
* Fix Spotify podcast thumbnail image quality

* Remove debug line

* Simplify
* Fix Audible authentication for new API token format

- Add compatible token refresh handling for new actor_access_token format
- Validate signing auth availability (preferred, stable auth method)
- Accept multiple authorization code parameter names in callback URL
- Improve error handling and diagnostic messages

* Use shared http_session instead of creating new client

- Modify refresh_access_token_compat to accept http_session parameter
- Update to use aiohttp ClientSession (from mass.http_session)
- Remove unnecessary httpx.AsyncClient creation

---------

Co-authored-by: Ztripez von Matérn <ztripez@bobby.se>
Update to include bugfix for get_playlists endpoint.

Signed-off-by: Eric B Munson <eric@munsonfam.org>
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Comment on lines 49 to -67
@@ -64,32 +64,26 @@ jobs:
echo "Using dev branch for $CHANNEL release"
fi

- name: Trigger test workflow
uses: convictional/trigger-workflow-and-wait@v1.6.5
with:
owner: ${{ github.repository_owner }}
repo: server
github_token: ${{ secrets.PRIVILEGED_GITHUB_TOKEN }}
workflow_file_name: test.yml
ref: ${{ steps.branch.outputs.branch }}
wait_interval: 10
propagate_failure: true
trigger_workflow: true
wait_workflow: true
preflight-checks:
name: Run tests and linting before release
needs: determine-branch
uses: ./.github/workflows/test.yml
with:
ref: ${{ needs.determine-branch.outputs.branch }}

validate-and-build:
name: Validate version and build Python artifact
runs-on: ubuntu-latest
needs: preflight-checks

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}

Copilot Autofix

AI 3 months ago

In general, the problem is fixed by explicitly declaring permissions: in the workflow so the GITHUB_TOKEN is granted only the minimal scopes needed. When added at the top level of the workflow (same level as on: and env:), those permissions apply to all jobs that do not override them individually. For most workflows that only need to check out code and read repository contents, contents: read is a sensible default.

For this specific file, the least intrusive and safest fix—without changing current behavior—is:

  1. Add a workflow‑level permissions: block right after the on: section and before env: (lines around 41).
  2. Set contents: read as a minimal starting point, which still allows actions/checkout to function while preventing unintended write operations by default.
  3. Because we are not shown any job steps that require write permissions (e.g., creating releases, pushing tags) in the visible region, we will not add any broader permissions. If other jobs (such as create-release) below the truncated region need writes, they can later declare job-specific permissions: blocks.

Concretely, in .github/workflows/release.yml, insert:

permissions:
  contents: read

between the workflow_call block (ending at line 39–40) and the existing env: block (starting at line 41).

Suggested changeset 1
.github/workflows/release.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -38,6 +38,9 @@
       PRIVILEGED_GITHUB_TOKEN:
         required: true
 
+permissions:
+  contents: read
+
 env:
   PYTHON_VERSION: "3.12"
   BASE_IMAGE_VERSION_STABLE: "1.4.10"
EOF
@@ -38,6 +38,9 @@
PRIVILEGED_GITHUB_TOKEN:
required: true

permissions:
contents: read

env:
PYTHON_VERSION: "3.12"
BASE_IMAGE_VERSION_STABLE: "1.4.10"
Copilot is powered by AI and may make mistakes. Always verify output.
Unable to commit as this autofix suggestion is now outdated
@bradkeifer bradkeifer merged commit 9f4c309 into 4484-airplay-2-not-pairing Dec 31, 2025
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.