diff --git a/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt
index a20a6743619edcce1924f4a638e72215907649c4..36041919c9ec33dc98ce653a61735d698d5fca9e 100644
--- a/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt
+++ b/app/src/main/java/com/futo/platformplayer/activities/LoginActivity.kt
@@ -10,6 +10,7 @@ import android.widget.TextView
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.lifecycleScope
 import com.futo.platformplayer.R
+import com.futo.platformplayer.UIDialogs
 import com.futo.platformplayer.api.media.platforms.js.SourceAuth
 import com.futo.platformplayer.api.media.platforms.js.SourcePluginAuthConfig
 import com.futo.platformplayer.api.media.platforms.js.SourcePluginConfig
@@ -39,6 +40,7 @@ class LoginActivity : AppCompatActivity() {
         _textUrl = findViewById(R.id.text_url);
         _buttonClose = findViewById(R.id.button_close);
         _buttonClose.setOnClickListener {
+            UIDialogs.toast("Login cancelled", false);
             finish();
         }
 
diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt
index 69abaa0bd998e1bc6bcfd416d76032b2a0afefb8..439e8d82cb8f6625e41977c2165632bd4c9f5b7f 100644
--- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt
+++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/SourcePluginAuthConfig.kt
@@ -11,4 +11,5 @@ class SourcePluginAuthConfig(
     val userAgent: String? = null,
     val loginButton: String? = null,
     val domainHeadersToFind: Map<String, List<String>>? = null,
+    val loginWarning: String? = null
 ) { }
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt
index 6a743d4e59b82e6a598e78ffdbe56829e8f0b02b..c9b784fbbe7f8e19504dbf7688a3bfbdde76d791 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SourceDetailFragment.kt
@@ -354,11 +354,22 @@ class SourceDetailFragment : MainFragment() {
             if(config.authentication == null)
                 return;
 
-            LoginActivity.showLogin(StateApp.instance.context, config) {
-                StatePlugins.instance.setPluginAuth(config.id, it);
-
-                reloadSource(config.id);
-            };
+            if(config.authentication.loginWarning != null) {
+                UIDialogs.showDialog(context, R.drawable.ic_warning_yellow, "Login Warning",
+                    config.authentication.loginWarning, null, 0,
+                    UIDialogs.Action("Cancel", {}, UIDialogs.ActionStyle.NONE),
+                    UIDialogs.Action("Login", {
+                        LoginActivity.showLogin(StateApp.instance.context, config) {
+                            StatePlugins.instance.setPluginAuth(config.id, it);
+                            reloadSource(config.id);
+                        };
+                    }, UIDialogs.ActionStyle.PRIMARY))
+            }
+            else
+                LoginActivity.showLogin(StateApp.instance.context, config) {
+                    StatePlugins.instance.setPluginAuth(config.id, it);
+                    reloadSource(config.id);
+                };
         }
         private fun logoutSource(clear: Boolean = true) {
             val config = _config ?: return;
diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt
index 88fc76dc6382c7f6ea39558967de533a74a2ef39..bf6ba06f937eba5f8f72bd6fc1d9a193efb9d5a3 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt
@@ -109,16 +109,6 @@ class SubscriptionsFeedFragment : MainFragment() {
 
         constructor(fragment: SubscriptionsFeedFragment, inflater: LayoutInflater, cachedRecyclerData: RecyclerData<InsertedViewAdapterWithLoader<ContentPreviewViewHolder>, LinearLayoutManager, IPager<IPlatformContent>, IPlatformContent, IPlatformContent, InsertedViewHolder<ContentPreviewViewHolder>>? = null) : super(fragment, inflater, cachedRecyclerData) {
             Logger.i(TAG, "SubscriptionsFeedFragment constructor()");
-            StateSubscriptions.instance.onFeedProgress.subscribe(this) { id, progress, total ->
-                if(subGroup?.id == id)
-                    fragment.lifecycleScope.launch(Dispatchers.Main) {
-                        try {
-                            setProgress(progress, total);
-                        } catch (e: Throwable) {
-                            Logger.e(TAG, "Failed to set progress", e);
-                        }
-                    }
-            }
             StateSubscriptions.instance.global.onUpdateProgress.subscribe(this) { progress, total ->
             };
 
@@ -174,12 +164,24 @@ class SubscriptionsFeedFragment : MainFragment() {
             if (!StateSubscriptions.instance.global.isGlobalUpdating) {
                 finishRefreshLayoutLoader();
             }
+
+            StateSubscriptions.instance.onFeedProgress.subscribe(this) { id, progress, total ->
+                if(subGroup?.id == id)
+                    fragment.lifecycleScope.launch(Dispatchers.Main) {
+                        try {
+                            setProgress(progress, total);
+                        } catch (e: Throwable) {
+                            Logger.e(TAG, "Failed to set progress", e);
+                        }
+                    }
+            }
         }
 
         override fun cleanup() {
             super.cleanup()
             StateSubscriptions.instance.global.onUpdateProgress.remove(this);
             StateSubscriptions.instance.onSubscriptionsChanged.remove(this);
+            StateSubscriptions.instance.onFeedProgress.remove(this);
         }
 
         override val feedStyle: FeedStyle get() = Settings.instance.subscriptions.getSubscriptionsFeedStyle();
diff --git a/app/src/main/res/layout/dialog_multi_button.xml b/app/src/main/res/layout/dialog_multi_button.xml
index 786a7cce538c4f2771b2543ff28d0627fbe7114c..69441641326753e59e94b1da16c0510d99fa5565 100644
--- a/app/src/main/res/layout/dialog_multi_button.xml
+++ b/app/src/main/res/layout/dialog_multi_button.xml
@@ -38,12 +38,12 @@
             android:id="@+id/dialog_text_details"
             android:layout_width="match_parent"
             android:textColor="#AAAAAA"
-            android:fontFamily="@font/inter_regular"
+            android:fontFamily="@font/inter_light"
             android:text=""
             android:textAlignment="center"
             android:layout_marginStart="30dp"
             android:layout_marginEnd="30dp"
-            android:textSize="11dp"
+            android:textSize="13dp"
             android:layout_height="wrap_content" />
         <TextView
             android:id="@+id/dialog_text_code"
diff --git a/app/src/stable/assets/sources/youtube b/app/src/stable/assets/sources/youtube
index c3e21983564fce43d8c0b9aa96ee97b47fd7353f..b7864b910172659d29602f05d968427bffcc95f0 160000
--- a/app/src/stable/assets/sources/youtube
+++ b/app/src/stable/assets/sources/youtube
@@ -1 +1 @@
-Subproject commit c3e21983564fce43d8c0b9aa96ee97b47fd7353f
+Subproject commit b7864b910172659d29602f05d968427bffcc95f0
diff --git a/app/src/unstable/assets/sources/youtube b/app/src/unstable/assets/sources/youtube
index c3e21983564fce43d8c0b9aa96ee97b47fd7353f..b7864b910172659d29602f05d968427bffcc95f0 160000
--- a/app/src/unstable/assets/sources/youtube
+++ b/app/src/unstable/assets/sources/youtube
@@ -1 +1 @@
-Subproject commit c3e21983564fce43d8c0b9aa96ee97b47fd7353f
+Subproject commit b7864b910172659d29602f05d968427bffcc95f0