Skip to content

Bump Transmission from 2.4.5 to 2.8.2 & Workaround for Player Rotation#1957

Closed
JPKribs wants to merge 4 commits intojellyfin:mainfrom
JPKribs:Tranmission-2.8.2
Closed

Bump Transmission from 2.4.5 to 2.8.2 & Workaround for Player Rotation#1957
JPKribs wants to merge 4 commits intojellyfin:mainfrom
JPKribs:Tranmission-2.8.2

Conversation

@JPKribs
Copy link
Copy Markdown
Member

@JPKribs JPKribs commented Mar 30, 2026

Summary

Workaround for: #1709

Xcode 26.4 breaks our current version of Transmission. I've updated Transmission to 2.8.2 which has a fix for Xcode 26.4 but that now breaks our Video Player when rotating. Doing some troubleshooting and I found removing the .zoom transition from our FullScreen presentation resolves this.

This animation is worse but this resolves the rotation issue in 2.6.X Transmission. I've commented out the code so we can go back to it. I've opened an issue here to hopefully resolve this: nathantannar4/Transmission#117


Lastly, on 2.8.2, I would get the following crash on transitions:

Thread 1: Fatal error: No ObservableObject of type RootCoordinator found. A View.environmentObject(_:) for RootCoordinator may be missing as an ancestor of this view.

So to resolve that I added .environmentObject(rootCoordinator) to the navigation stacks to ensure that was there. Please let me know if that was not the correct way to do this.

Breaking Issue Before

Issue.mov

Solution/Video After

Screen.Recording.2026-03-30.at.15.34.56.mov

Fix for #1709

Leaving the player you can re-enter now and it can still rotate which resolves #1709.

Simulator.Screen.Recording.-.iPhone.-.2026-03-30.at.15.37.16.mov

New Full Screen Transiion

Boo.

Simulator.Screen.Recording.-.iPhone.-.2026-03-30.at.15.35.29.mov

…RootCoordinator found. A View.environmentObject(_:) for RootCoordinator may be missing as an ancestor of this view.`
@JPKribs JPKribs added bug Something isn't working iOS Impacts iOS or iPadOS labels Mar 30, 2026
@JPKribs JPKribs changed the title 2.8.2 & Resolve: `Thread 1: Fatal error: No ObservableObject of type … Bump Transmission from 2.4.5 to 2.8.2 & Workaround for Player Rotation Mar 30, 2026
@JPKribs
Copy link
Copy Markdown
Member Author

JPKribs commented Mar 30, 2026

Removing #1709 as a close since this is a workaround. This also unpins our version so that might be unadvised.


Edit it doesn't want to let me remove #1709...

@JPKribs JPKribs marked this pull request as draft March 30, 2026 21:52
@JPKribs JPKribs marked this pull request as ready for review March 30, 2026 21:57
@JPKribs
Copy link
Copy Markdown
Member Author

JPKribs commented Mar 30, 2026

ugh okay. So, tvOS cannot use Transmission because there is a UIKit call that works for iOS and not for tvOS:

DropShadowView.swift > ShadowOptions.feather.apply(to: self)

The full context of this:

import UIKit

@available(iOS 14.0, *)
open class DropShadowView: UIView {

    public override init(frame: CGRect = .zero) {
        super.init(frame: frame)

        isUserInteractionEnabled = false
        ShadowOptions.feather.apply(to: self)
    }

    public required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    open override func layoutSubviews() {
        super.layoutSubviews()
        layer.shadowPath = CGPath(rect: bounds, transform: nil)
    }
}

For this PR, I've removed Transmission for tvOS since we are not using it for tvOS. Instead, I manually package Engine in for the StateAdapters we have been using. This resolves the issue and allows tvOS to build again. I don't see any issues in removing Transmission from tvOS in my testing and all StateAdapters continue working as expected.

For shared usages, I am now using:

#if os(iOS)
import Transmission
#endif

This is getting a lot messier than I had hoped but this all works as expected in testing...

@JPKribs JPKribs requested a review from LePips March 30, 2026 22:14
@LePips
Copy link
Copy Markdown
Member

LePips commented Apr 1, 2026

When there are issues with new Xcode versions, the solution for some time is to just not use/deploy with that version of Xcode until possible fixes. A lot of development doesn't use the latest Xcode version due to reasons like this. In fact, I'll be holding out on Sequoia for as long as I can as 26.3 is just fine.

While changing to a slide transition works around #1898, the fix for determining orientation when foregrounding is done in #1959.

tvOS cannot use Transmission because there is a UIKit call that works for iOS and not for tvOS:

This seems to an issue as DropShadowView should be #if os(iOS)-d out, like ShadowOptions. You can/should report that too.

I'm going to close this as we can update Transmission when the rotation issue is fixed there.

@LePips LePips closed this Apr 1, 2026
@JPKribs JPKribs deleted the Tranmission-2.8.2 branch April 1, 2026 03:28
@JPKribs
Copy link
Copy Markdown
Member Author

JPKribs commented Apr 1, 2026

When there are issues with new Xcode versions, the solution for some time is to just not use/deploy with that version of Xcode until possible fixes. A lot of development doesn't use the latest Xcode version due to reasons like this. In fact, I'll be holding out on Sequoia for as long as I can as 26.3 is just fine.

My primary reason for this move was that 26.4 is specifically patched for 2.8.2. The assumption is that regardless, we would need this for 26.4+ but your reasoning makes sense.

@JPKribs
Copy link
Copy Markdown
Member Author

JPKribs commented Apr 4, 2026

This seems to an issue as DropShadowView should be #if os(iOS)-d out, like ShadowOptions. You can/should report that too.

I've made an issue for this item here: nathantannar4/Transmission#118

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working iOS Impacts iOS or iPadOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[iOS] Rotation doesn't work in new media player

2 participants