Jellyfin 12 removed the GET route for /QuickConnect/Initiate and answers it
with 405, so Quick Connect could not start on 12.x servers. SDK 0.4.0's
QuickConnect controller only sends GET. 1.0.0's controller sends POST,
which every server from 10.9 accepts, and keeps the same public API
(ObservableObject, State, QuickConnectError, start/stop), so the view model
and its tests need no changes.
The requirement stays up-to-next-major, now 1.0.0..<2.0.0, which keeps out
2.x and its swift-nio dependencies. Only the JellyfinAPI pin changes in
Package.resolved.
1.0.0 deprecates passing the access token to the JellyfinClient
initializer; it now goes in JellyfinClient.Configuration. BookPlayer only
reads the client's token, so nothing else changes. 1.0.0 still has no
"Narrator" person kind (added in 3.0), so the lenient People decode stays;
its comments now say so.
Fixes #1598.
What was wrong
Jellyfin 12 removed the GET route for
/QuickConnect/Initiate; 12.0 and 12.1 only accept POST and answer GET with405 Method Not Allowed. jellyfin-sdk-swift 0.4.0'sQuickConnectcontroller starts the flow with GET (Paths.initiate), so Quick Connect fails before it shows a code on any 12.x server.With #1603 (download auth) and #1604 (Narrator decoding) merged, this is the last part of #1598.
/QuickConnect/Initiate/QuickConnect/Initiate(From the server's
QuickConnectControllerat each tag; 12.1.0 and 10.10.7 also checked live.)Change
Paths.initiateQuickConnect) and keeps the same public API:ObservableObject,@Published state,State,QuickConnectError,init(client:pollInterval:maxPolls:),start()/stop(). The view model and its tests don't change. The requirement stays up-to-next-major, now1.0.0..<2.0.0, which keeps out 2.x and its swift-nio dependencies. InPackage.resolvedonly the JellyfinAPI pin changes; Get 2.2.1 and URLQueryEncoder 0.2.1 stay.JellyfinClient.Configuration. 1.0.0 deprecates passing it to theJellyfinClientinitializer. BookPlayer only readsclient.accessToken, so nothing else changes.CLAUDE.md. 1.0.0 still has nonarratorPersonKind(it arrives in 3.0.0), so Decode Jellyfin items with unknown person kinds #1604's lenient decode stays. Its two comments now say "before SDK 3.0" instead of "SDK 0.4". The dependency list inCLAUDE.mdsays~1.0.1.0.0 also includes the 0.5.3 fix for a retain cycle that leaked every
JellyfinClient.Older servers: 10.8 was already unsupported (0.4.0 needs
/UserViewsand/Items/{id}, which arrived in 10.9), and 1.0.0 calls the same routes.Verification
Unit Testsplan on an iPhone 17 simulator (iOS 27.0): 554/554 pass, noJellyfinClientdeprecation warnings left.JellyfinConnectionViewModelandJellyfinConnectionService. It connected to the server, started Quick Connect and got a code, approved the code as the server admin, waited for sign-in, checked the saved connection's user, and loaded the libraries with the new token. It passed on both servers. On 0.4.0 the same start request gets405on 12.1.