Compare commits

...

9 Commits

Author SHA1 Message Date
Arkadiusz Fal
983b9c4ddc Bump build number to 162 2023-09-25 21:39:12 +02:00
Arkadiusz Fal
7a96312a83 Update CHANGELOG 2023-09-25 21:38:54 +02:00
Arkadiusz Fal
9d49f3dd68 Add podcasts and releases tabs for channels in Invidious 2023-09-25 21:37:30 +02:00
Arkadiusz Fal
a1e8a50aaf Bump build number to 161 2023-09-24 17:23:48 +02:00
Arkadiusz Fal
35d895d562 Update CHANGELOG 2023-09-24 17:23:48 +02:00
Arkadiusz Fal
be2d21384d Fix selection of formats in quality profile 2023-09-24 17:23:03 +02:00
Arkadiusz Fal
74917a482e Fix url parsing 2023-09-24 11:49:26 +02:00
Arkadiusz Fal
e5f49fda5e Fix tab selection bugfix 2023-09-24 11:14:24 +02:00
Arkadiusz Fal
e556dac871 Fix search suggestions whitespace 2023-09-24 11:14:11 +02:00
8 changed files with 36 additions and 27 deletions

View File

@@ -1,16 +1,17 @@
## Build 160 ## Build 162
* Added button in Location settings to add current used public location to "Custom Locations" * Added support for "Podcasts" and "Releases" channel tabs (Invidious)
* Updated mpv and dependencies (using mpvkit library, mpv 0.36.0, ffmpeg 6.0)
* Fixed handling playlist links
* Fixed reported crashes
* Other minor fixes and improvements
## Previous builds ## Previous builds
* Added button in Location settings to add current used public location to "Custom Locations"
* Updated mpv and dependencies (using mpvkit library, mpv 0.36.0, ffmpeg 6.0)
* Increased controls timeline/scrubber gesture area for easier handling * Increased controls timeline/scrubber gesture area for easier handling
* Fixed handling playlist links
* Fixed issue where Piped videos would use audio for other language version * Fixed issue where Piped videos would use audio for other language version
* Fixed issue with handling opening URLs on macOS * Fixed issue with handling opening URLs on macOS
* Fixed issue with "Keep channels with unwatched videos on top of subscriptions list" setting not honored in sidebar * Fixed issue with "Keep channels with unwatched videos on top of subscriptions list" setting not honored in sidebar
* Fixed performance issues with accounts with large amount of subscribed channels * Fixed performance issues with accounts with large amount of subscribed channels
* Fixed regression with opening videos links
* Fixed issue with deselecting formats in Quality profiles
* Fixed compatibility with iOS 17, macOS 14 and tvOS 17 * Fixed compatibility with iOS 17, macOS 14 and tvOS 17
* Dropped support for iOS 14 and macOS 11 * Dropped support for iOS 14 and macOS 11
* Fixed reported crashes * Fixed reported crashes

View File

@@ -123,7 +123,7 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
content.json.dictionaryValue["videos"]?.arrayValue.map(self.extractVideo) ?? [] content.json.dictionaryValue["videos"]?.arrayValue.map(self.extractVideo) ?? []
} }
["latest", "playlists", "streams", "shorts", "channels", "videos"].forEach { type in ["latest", "playlists", "streams", "shorts", "channels", "videos", "releases", "podcasts"].forEach { type in
configureTransformer(pathPattern("channels/*/\(type)"), requestMethods: [.get]) { (content: Entity<JSON>) -> ChannelPage in configureTransformer(pathPattern("channels/*/\(type)"), requestMethods: [.get]) { (content: Entity<JSON>) -> ChannelPage in
self.extractChannelPage(from: content.json) self.extractChannelPage(from: content.json)
} }

View File

@@ -10,6 +10,8 @@ struct Channel: Identifiable, Hashable {
case livestreams case livestreams
case shorts case shorts
case channels case channels
case releases
case podcasts
static func from(_ name: String) -> Self? { static func from(_ name: String) -> Self? {
let rawValueMatch = allCases.first { $0.rawValue == name } let rawValueMatch = allCases.first { $0.rawValue == name }
@@ -45,6 +47,10 @@ struct Channel: Identifiable, Hashable {
return "1.square" return "1.square"
case .channels: case .channels:
return "person.3" return "person.3"
case .releases:
return "square.stack"
case .podcasts:
return "radio"
} }
} }

View File

@@ -66,7 +66,7 @@ final class NavigationModel: ObservableObject {
@Published var tabSelection: TabSelection! { didSet { @Published var tabSelection: TabSelection! { didSet {
if oldValue == tabSelection { multipleTapHandler() } if oldValue == tabSelection { multipleTapHandler() }
if tabSelection == nil, let item = recents.presentedItem { if tabSelection == nil, let item = recents.presentedItem {
DispatchQueue.main.async { [weak self] in Delay.by(0.2) { [weak self] in
self?.tabSelection = .recentlyOpened(item.tag) self?.tabSelection = .recentlyOpened(item.tag)
} }
} }

View File

@@ -11,7 +11,7 @@ struct SearchSuggestions: View {
} label: { } label: {
HStack { HStack {
Image(systemName: "magnifyingglass") Image(systemName: "magnifyingglass")
Text(state.queryText) Text(state.queryText.trimmingCharacters(in: .whitespacesAndNewlines))
.lineLimit(1) .lineLimit(1)
} }
} }

View File

@@ -10,6 +10,7 @@ struct QualityProfileForm: View {
@State private var valid = false @State private var valid = false
@State private var initialized = false
@State private var name = "" @State private var name = ""
@State private var backend = PlayerBackendType.mpv @State private var backend = PlayerBackendType.mpv
@State private var resolution = ResolutionSetting.hd1080p60 @State private var resolution = ResolutionSetting.hd1080p60
@@ -226,7 +227,7 @@ struct QualityProfileForm: View {
} }
func isFormatSelected(_ format: QualityProfile.Format) -> Bool { func isFormatSelected(_ format: QualityProfile.Format) -> Bool {
(editing && formats.isEmpty ? qualityProfile.formats : formats).contains(format) (initialized ? formats : qualityProfile.formats).contains(format)
} }
func toggleFormat(_ format: QualityProfile.Format, value: Bool) { func toggleFormat(_ format: QualityProfile.Format, value: Bool) {
@@ -282,6 +283,7 @@ struct QualityProfileForm: View {
self.backend = qualityProfile.backend self.backend = qualityProfile.backend
self.resolution = qualityProfile.resolution self.resolution = qualityProfile.resolution
self.formats = .init(qualityProfile.formats) self.formats = .init(qualityProfile.formats)
self.initialized = true
} }
validate() validate()

View File

@@ -41,7 +41,7 @@ struct URLParser {
if hasAnyOfPrefixes(path, Self.prefixes[.playlist]!) || if hasAnyOfPrefixes(path, Self.prefixes[.playlist]!) ||
queryItemValue("v") == "playlist" || queryItemValue("v") == "playlist" ||
!(queryItemValue("list")?.isEmpty ?? false) (queryItemValue("list") ?? "").count > 3
{ {
return .playlist return .playlist
} }

View File

@@ -3673,7 +3673,7 @@
CODE_SIGN_ENTITLEMENTS = "Open in Yattee/Open in Yattee.entitlements"; CODE_SIGN_ENTITLEMENTS = "Open in Yattee/Open in Yattee.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Open in Yattee/Info.plist"; INFOPLIST_FILE = "Open in Yattee/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "Open in Yattee"; INFOPLIST_KEY_CFBundleDisplayName = "Open in Yattee";
@@ -3704,7 +3704,7 @@
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "Open in Yattee/Info.plist"; INFOPLIST_FILE = "Open in Yattee/Info.plist";
@@ -3735,7 +3735,7 @@
buildSettings = { buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MACOSX_DEPLOYMENT_TARGET = 11.0; MACOSX_DEPLOYMENT_TARGET = 11.0;
@@ -3755,7 +3755,7 @@
buildSettings = { buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.0; IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MACOSX_DEPLOYMENT_TARGET = 11.0; MACOSX_DEPLOYMENT_TARGET = 11.0;
@@ -3919,7 +3919,7 @@
CODE_SIGN_ENTITLEMENTS = "iOS/Yattee (iOS).entitlements"; CODE_SIGN_ENTITLEMENTS = "iOS/Yattee (iOS).entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1", "DEBUG=1",
@@ -3972,7 +3972,7 @@
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GCC_PREPROCESSOR_DEFINITIONS = "GLES_SILENCE_DEPRECATION=1"; GCC_PREPROCESSOR_DEFINITIONS = "GLES_SILENCE_DEPRECATION=1";
@@ -4024,7 +4024,7 @@
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
ENABLE_APP_SANDBOX = YES; ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
@@ -4065,7 +4065,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
"DEVELOPMENT_TEAM[sdk=macosx*]" = 78Z5H3M6RJ; "DEVELOPMENT_TEAM[sdk=macosx*]" = 78Z5H3M6RJ;
ENABLE_APP_SANDBOX = YES; ENABLE_APP_SANDBOX = YES;
@@ -4102,7 +4102,7 @@
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
@@ -4126,7 +4126,7 @@
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
@@ -4152,7 +4152,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
@@ -4177,7 +4177,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
@@ -4203,7 +4203,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@@ -4243,7 +4243,7 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
"DEVELOPMENT_TEAM[sdk=appletvos*]" = 78Z5H3M6RJ; "DEVELOPMENT_TEAM[sdk=appletvos*]" = 78Z5H3M6RJ;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
@@ -4284,7 +4284,7 @@
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -4308,7 +4308,7 @@
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 160; CURRENT_PROJECT_VERSION = 162;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",