From ef372b65d94c76422c8212237b083eaa9b07eb46 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Mon, 19 Oct 2026 21:43:46 +0200 Subject: [PATCH] Keep Settings in the tvOS sidebar (#986) tvOS has no other route to Settings, so unchecking it in Sidebar settings locked users out. Treat Settings as a required sidebar item on tvOS; an already-stored hidden value is ignored because required items bypass the visibility map. --- Yattee/Models/Navigation/SidebarMainItem.swift | 7 +++++++ Yattee/Views/Settings/SidebarSettingsView.swift | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Yattee/Models/Navigation/SidebarMainItem.swift b/Yattee/Models/Navigation/SidebarMainItem.swift index 3a9850d9..09968e95 100644 --- a/Yattee/Models/Navigation/SidebarMainItem.swift +++ b/Yattee/Models/Navigation/SidebarMainItem.swift @@ -110,6 +110,13 @@ enum SidebarMainItem: String, CaseIterable, Codable, Identifiable, Sendable { switch self { case .search, .home: return true + case .settings: + // tvOS has no other route to Settings, so hiding it would lock the user out. + #if os(tvOS) + return true + #else + return false + #endif default: return false } diff --git a/Yattee/Views/Settings/SidebarSettingsView.swift b/Yattee/Views/Settings/SidebarSettingsView.swift index 59b5c76a..b10b306a 100644 --- a/Yattee/Views/Settings/SidebarSettingsView.swift +++ b/Yattee/Views/Settings/SidebarSettingsView.swift @@ -260,7 +260,7 @@ struct SidebarSettingsView: View { private func mainItemBinding(for item: SidebarMainItem) -> Binding { Binding( - get: { mainItemVisibility[item] ?? true }, + get: { item.isRequired || (mainItemVisibility[item] ?? true) }, set: { newValue in mainItemVisibility[item] = newValue saveMainNavigationSettings()