Add Jellyfin 12.0 release build alongside 10.11
Multi-target the plugin against net9.0 (Jellyfin 10.11.x) and net10.0 (Jellyfin 12.0.x), with per-framework Jellyfin.Controller/Model references. Jellyfin 12 added a controlling-session parameter to ISessionManager.ReportCapabilities; an empty value skips the AssertCanControl check, which is what a server-side registration needs. Each release now ships two packages, jellylms_<version>_jf11.zip and jellylms_<version>_jf12.zip, with a manifest entry each. Jellyfin filters by targetAbi, so both can share a version number. Also corrects the manifest targetAbi for new releases from 10.10.0.0 to 10.11.0.0 - the plugin has referenced 10.11 packages since 1.0.0. jprm only reads ./build.yaml, so build-plugin.sh swaps targetAbi/framework per variant and restores the file afterwards. The builder image moves to the .NET 10 SDK, which targets both frameworks. CA1873 (new in that SDK) is disabled alongside CA1848, same rationale. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -76,10 +76,19 @@ Create and manage synchronized playback groups for multi-room audio:
|
||||
|
||||
## Requirements
|
||||
|
||||
- Jellyfin Server 10.10.0 or later
|
||||
- .NET 9.0 Runtime
|
||||
- Jellyfin Server 10.11.x or 12.0.x
|
||||
- Logitech Media Server (LMS) with JSON-RPC API enabled (default on port 9000)
|
||||
|
||||
Each release ships two packages, one per Jellyfin generation:
|
||||
|
||||
| Package | Jellyfin | targetAbi | Runtime |
|
||||
| --- | --- | --- | --- |
|
||||
| `jellylms_<version>_jf11.zip` | 10.11.x | `10.11.0.0` | .NET 9.0 |
|
||||
| `jellylms_<version>_jf12.zip` | 12.0.x | `12.0.0.0` | .NET 10.0 |
|
||||
|
||||
If you install through the plugin repository, Jellyfin picks the matching
|
||||
package automatically. For manual installs, download the one for your server.
|
||||
|
||||
## Playback Architecture
|
||||
|
||||
JellyLMS uses Jellyfin's native "Play On" (cast) interface to control LMS players. When you select an LMS player from Jellyfin's cast menu, playback is managed through a robust state machine that ensures reliable operation.
|
||||
@@ -151,13 +160,20 @@ The state machine includes automatic retry with exponential backoff:
|
||||
git clone https://gitea.tourolle.paris/dtourolle/jellyLMS.git
|
||||
cd jellyLMS
|
||||
|
||||
# Build
|
||||
# Build both target frameworks
|
||||
dotnet build Jellyfin.Plugin.JellyLMS.sln -c Release
|
||||
|
||||
# The DLL will be in:
|
||||
# Jellyfin.Plugin.JellyLMS/bin/Release/net9.0/
|
||||
# The DLLs will be in:
|
||||
# Jellyfin.Plugin.JellyLMS/bin/Release/net9.0/ (Jellyfin 10.11.x)
|
||||
# Jellyfin.Plugin.JellyLMS/bin/Release/net10.0/ (Jellyfin 12.0.x)
|
||||
|
||||
# Or produce installable plugin packages (requires jprm)
|
||||
./build-plugin.sh jf11
|
||||
./build-plugin.sh jf12
|
||||
```
|
||||
|
||||
Building requires the .NET 10 SDK, which can target both `net9.0` and `net10.0`.
|
||||
|
||||
## Configuration
|
||||
|
||||
1. Navigate to Jellyfin Dashboard → Plugins → JellyLMS
|
||||
@@ -293,8 +309,8 @@ Jellyfin.Plugin.JellyLMS/
|
||||
### Building for Development
|
||||
|
||||
```bash
|
||||
# Build in debug mode
|
||||
dotnet build Jellyfin.Plugin.JellyLMS.sln
|
||||
# Build in debug mode (use -f net10.0 for a Jellyfin 12 server)
|
||||
dotnet build Jellyfin.Plugin.JellyLMS.sln -f net9.0
|
||||
|
||||
# Copy to Jellyfin plugins directory
|
||||
cp Jellyfin.Plugin.JellyLMS/bin/Debug/net9.0/Jellyfin.Plugin.JellyLMS.dll \
|
||||
|
||||
Reference in New Issue
Block a user