Compare commits

...

37 Commits

Author SHA1 Message Date
Arkadiusz Fal
e6a9f39477 Bump build number to 165 2023-10-15 00:46:59 +02:00
Arkadiusz Fal
ff4f80b7ef Update CHANGELOG 2023-10-15 00:46:59 +02:00
Arkadiusz Fal
7e1218ce13 Update packages 2023-10-15 00:46:59 +02:00
Arkadiusz Fal
4c707271c3 Add setting to disable chapters and related, add info section in
player settings
2023-10-15 00:46:59 +02:00
Arkadiusz Fal
04e56638ce Fix possible crash 2023-10-15 00:46:59 +02:00
Arkadiusz Fal
674269c4c1 Fix issue with tvOS screensaver 2023-10-15 00:46:58 +02:00
Arkadiusz Fal
2b4627c3d6 Fix lint 2023-10-15 00:46:58 +02:00
Arkadiusz Fal
4260c6d6b5 Merge pull request #539 from weblate/weblate-yattee-localizable-strings
Translations update from Hosted Weblate
2023-10-15 00:46:13 +02:00
maboroshin
4057021cb9 Translated using Weblate (Japanese)
Currently translated at 99.4% (530 of 533 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/ja/
2023-10-10 15:04:11 +00:00
gallegonovato
151a99c2a3 Translated using Weblate (Spanish)
Currently translated at 84.2% (449 of 533 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/es/
2023-10-08 12:03:32 +00:00
Radical
bd606a4cf8 Translated using Weblate (Norwegian Bokmål)
Currently translated at 59.6% (318 of 533 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/nb_NO/
2023-10-08 12:03:31 +00:00
Ophiushi
4dbf2551d9 Translated using Weblate (French)
Currently translated at 100.0% (533 of 533 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/fr/
2023-09-28 19:02:38 +02:00
Arkadiusz Fal
8fefbccc83 Bump build number to 164 2023-09-26 18:19:49 +02:00
Arkadiusz Fal
65bc1e4efe Update CHANGELOG 2023-09-26 18:19:27 +02:00
Arkadiusz Fal
9a257ec897 Fix quality profile form 2023-09-26 18:19:09 +02:00
Arkadiusz Fal
dd0a966a9f Bump build number to 163 2023-09-26 17:57:19 +02:00
Arkadiusz Fal
cec0327293 Update CHANGELOG 2023-09-26 17:47:18 +02:00
Arkadiusz Fal
5b2c94758b Set window min width on macOS 2023-09-26 17:47:00 +02:00
Arkadiusz Fal
2dd1d2ac56 Fix possible crash 2023-09-26 17:44:01 +02:00
Arkadiusz Fal
3be7a5a69f Fix issue with creating quality profile 2023-09-26 17:44:01 +02:00
Arkadiusz Fal
3e6ea2633e Remove unnecessary frameworks 2023-09-26 17:44:01 +02:00
Arkadiusz Fal
2ef692edb8 Migrate to SwiftUIIntrospect 2023-09-26 17:44:01 +02:00
Arkadiusz Fal
3edfa5dfe7 Set focus on search textfield on macOS
Fix #268
2023-09-26 17:44:01 +02:00
Arkadiusz Fal
8976ef04f6 Localization fix 2023-09-26 17:44:00 +02:00
Arkadiusz Fal
cf81aedb60 Merge pull request #538 from weblate/weblate-yattee-localizable-strings
Translations update from Hosted Weblate
2023-09-26 17:43:48 +02:00
joaooliva
78a225cde4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (533 of 533 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/pt_BR/
2023-09-26 17:43:26 +02:00
Arkadiusz Fal
efdbbbc1f4 Translated using Weblate (Polish)
Currently translated at 100.0% (533 of 533 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/pl/
2023-09-26 17:43:26 +02:00
Anonymous
f82056a358 Translated using Weblate (English)
Currently translated at 100.0% (533 of 533 strings)

Translation: Yattee/Localizable.strings
Translate-URL: https://hosted.weblate.org/projects/yattee/localizable-strings/en/
2023-09-26 17:43:26 +02:00
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
29 changed files with 193 additions and 116 deletions

View File

@@ -1,16 +1,24 @@
## Build 160 ## Build 165
* Added button in Location settings to add current used public location to "Custom Locations" * Added Info section in Player settings
* Updated mpv and dependencies (using mpvkit library, mpv 0.36.0, ffmpeg 6.0) Added option to hide chapters
* Fixed handling playlist links Added option to hide related videos
Moved other previous Info section settings
* Fixed issue where screensaver would turn on while playing video with AVPlayer on tvOS
* Fixed reported crashes * Fixed reported crashes
* Other minor fixes and improvements
## Previous builds ## Previous builds
* Added support for "Podcasts" and "Releases" channel tabs (Invidious)
* Added button in Location settings to add current used public location to "Custom Locations"
* Search text field focuses automatically (macOS)
* 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

@@ -8,16 +8,16 @@ GEM
artifactory (3.0.15) artifactory (3.0.15)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.2.0) aws-eventstream (1.2.0)
aws-partitions (1.827.0) aws-partitions (1.835.0)
aws-sdk-core (3.183.0) aws-sdk-core (3.185.1)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1) jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0) aws-sdk-kms (1.72.0)
aws-sdk-core (~> 3, >= 3.177.0) aws-sdk-core (~> 3, >= 3.184.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.135.0) aws-sdk-s3 (1.136.0)
aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6) aws-sigv4 (~> 1.6)
@@ -36,7 +36,7 @@ GEM
unf (>= 0.0.5, < 1.0.0) unf (>= 0.0.5, < 1.0.0)
dotenv (2.8.1) dotenv (2.8.1)
emoji_regex (3.2.3) emoji_regex (3.2.3)
excon (0.103.0) excon (0.104.0)
faraday (1.10.3) faraday (1.10.3)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0) faraday-em_synchrony (~> 1.0)
@@ -107,7 +107,7 @@ GEM
xcpretty (~> 0.3.0) xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3) xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3) gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.49.0) google-apis-androidpublisher_v3 (0.50.0)
google-apis-core (>= 0.11.0, < 2.a) google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.1) google-apis-core (0.11.1)
addressable (~> 2.5, >= 2.5.1) addressable (~> 2.5, >= 2.5.1)
@@ -192,7 +192,7 @@ GEM
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.8.2) unf_ext (0.0.8.2)
unicode-display_width (2.4.2) unicode-display_width (2.5.0)
webrick (1.8.1) webrick (1.8.1)
word_wrap (1.0.0) word_wrap (1.0.0)
xcodeproj (1.23.0) xcodeproj (1.23.0)

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

@@ -666,6 +666,10 @@ final class AVPlayerBackend: PlayerBackend {
} else { } else {
ScreenSaverManager.shared.enable() ScreenSaverManager.shared.enable()
} }
#else
DispatchQueue.main.async {
UIApplication.shared.isIdleTimerDisabled = self.model.presentingPlayer && self.isPlaying
}
#endif #endif
self.timeObserverThrottle.execute { self.timeObserverThrottle.execute {

View File

@@ -18,6 +18,12 @@ final class SearchModel: ObservableObject {
@Published var focused = false @Published var focused = false
#if os(iOS)
var textField: UITextField!
#elseif os(macOS)
var textField: NSTextField!
#endif
var accounts: AccountsModel { .shared } var accounts: AccountsModel { .shared }
private var resource: Resource! private var resource: Resource!

View File

@@ -290,8 +290,8 @@ struct Video: Identifiable, Equatable, Hashable {
} }
var localStreamIsFile: Bool { var localStreamIsFile: Bool {
guard let localStream else { return false } guard let url = localStream?.localURL else { return false }
return localStream.localURL.isFileURL return url.isFileURL
} }
var localStreamIsRemoteURL: Bool { var localStreamIsRemoteURL: Bool {

View File

@@ -263,6 +263,8 @@ extension Defaults.Keys {
static let hideShorts = Key<Bool>("hideShorts", default: false) static let hideShorts = Key<Bool>("hideShorts", default: false)
static let hideWatched = Key<Bool>("hideWatched", default: false) static let hideWatched = Key<Bool>("hideWatched", default: false)
static let showInspector = Key<ShowInspectorSetting>("showInspector", default: .onlyLocal) static let showInspector = Key<ShowInspectorSetting>("showInspector", default: .onlyLocal)
static let showChapters = Key<Bool>("showChapters", default: true)
static let showRelated = Key<Bool>("showRelated", default: true)
static let widgetsSettings = Key<[WidgetSettings]>("widgetsSettings", default: []) static let widgetsSettings = Key<[WidgetSettings]>("widgetsSettings", default: [])
} }

View File

@@ -1,7 +1,7 @@
import Defaults import Defaults
import SwiftUI import SwiftUI
#if os(iOS) #if os(iOS)
import Introspect import SwiftUIIntrospect
#endif #endif
struct AppSidebarNavigation: View { struct AppSidebarNavigation: View {
@@ -15,7 +15,7 @@ struct AppSidebarNavigation: View {
var body: some View { var body: some View {
#if os(iOS) #if os(iOS)
content.introspectViewController { viewController in content.introspect(.viewController, on: .iOS(.v15, .v16, .v17)) { viewController in
// workaround for an empty supplementary view on launch // workaround for an empty supplementary view on launch
// the supplementary view is determined by the default selection inside the // the supplementary view is determined by the default selection inside the
// primary view, but the primary view is not loaded so its selection is not read // primary view, but the primary view is not loaded so its selection is not read

View File

@@ -167,6 +167,9 @@ struct ContentView: View {
#if os(iOS) #if os(iOS)
.statusBarHidden(player.playingFullScreen) .statusBarHidden(player.playingFullScreen)
#endif #endif
#if os(macOS)
.frame(minWidth: 1200)
#endif
} }
@ViewBuilder var videoPlayer: some View { @ViewBuilder var videoPlayer: some View {

View File

@@ -35,7 +35,9 @@ struct Sidebar: View {
} }
} }
.onChange(of: navigation.sidebarSectionChanged) { _ in .onChange(of: navigation.sidebarSectionChanged) { _ in
scrollScrollViewToItem(scrollView: scrollView, for: navigation.tabSelection) if let tabSelection = navigation.tabSelection {
scrollScrollViewToItem(scrollView: scrollView, for: navigation.tabSelection)
}
} }
.listStyle(.sidebar) .listStyle(.sidebar)
} }

View File

@@ -184,6 +184,8 @@ struct VideoDetails: View {
@Default(.enableReturnYouTubeDislike) private var enableReturnYouTubeDislike @Default(.enableReturnYouTubeDislike) private var enableReturnYouTubeDislike
@Default(.playerSidebar) private var playerSidebar @Default(.playerSidebar) private var playerSidebar
@Default(.showInspector) private var showInspector @Default(.showInspector) private var showInspector
@Default(.showChapters) private var showChapters
@Default(.showRelated) private var showRelated
#if !os(tvOS) #if !os(tvOS)
@Default(.showScrollToTopInComments) private var showScrollToTopInComments @Default(.showScrollToTopInComments) private var showScrollToTopInComments
#endif #endif
@@ -309,29 +311,29 @@ struct VideoDetails: View {
.padding(.horizontal) .padding(.horizontal)
} }
if player.videoBeingOpened.isNil, if player.videoBeingOpened.isNil {
!video.isLocal, if showChapters,
!video.chapters.isEmpty !video.isLocal,
{ !video.chapters.isEmpty
Section(header: chaptersHeader) { {
ChaptersView() Section(header: chaptersHeader) {
ChaptersView()
}
} }
}
if player.videoBeingOpened.isNil, if showInspector == .always || video.isLocal {
video.isLocal || showInspector == .always InspectorView(video: player.videoForDisplay)
{ .padding(.horizontal)
InspectorView(video: player.videoForDisplay) }
.padding(.horizontal)
}
if player.videoBeingOpened.isNil, if showRelated,
!sidebarQueue, !sidebarQueue,
!(player.videoForDisplay?.related.isEmpty ?? true) !(player.videoForDisplay?.related.isEmpty ?? true)
{ {
RelatedView() RelatedView()
.padding(.horizontal) .padding(.horizontal)
.padding(.top, 20) .padding(.top, 20)
}
} }
} }
} }

View File

@@ -1,24 +1,27 @@
import Introspect
import Repeat import Repeat
import SwiftUI import SwiftUI
import SwiftUIIntrospect
struct FocusableSearchTextField: View { struct FocusableSearchTextField: View {
@ObservedObject private var state = SearchModel.shared @ObservedObject private var state = SearchModel.shared
#if os(iOS)
@State private var textField: UITextField?
#elseif os(macOS)
@State private var textField: NSTextField?
#endif
var body: some View { var body: some View {
SearchTextField() SearchTextField()
#if os(iOS) #if os(macOS)
.introspectTextField { field in .introspect(.textField, on: .macOS(.v12, .v13, .v14)) { textField in
textField = field state.textField = textField
}
.onAppear {
DispatchQueue.main.async {
state.textField?.becomeFirstResponder()
}
}
#elseif os(iOS)
.introspect(.textField, on: .iOS(.v15, .v16, .v17)) { textField in
state.textField = textField
} }
.onChange(of: state.focused) { newValue in .onChange(of: state.focused) { newValue in
if newValue, let textField, !textField.isFirstResponder { if newValue, let textField = state.textField, !textField.isFirstResponder {
textField.becomeFirstResponder() textField.becomeFirstResponder()
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument) textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
} }

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

@@ -11,7 +11,7 @@ struct AddPublicInstanceButton: View {
_ = InstancesModel.shared.add(app: app, name: "", url: account.urlString) _ = InstancesModel.shared.add(app: app, name: "", url: account.urlString)
regenerateID() regenerateID()
} label: { } label: {
Label("Add \(account.urlString)", systemImage: "plus") Label(String(format: "Add %@", account.urlString), systemImage: "plus")
} }
.id(id) .id(id)
} }

View File

@@ -30,6 +30,8 @@ struct PlayerSettings: View {
@Default(.enableReturnYouTubeDislike) private var enableReturnYouTubeDislike @Default(.enableReturnYouTubeDislike) private var enableReturnYouTubeDislike
@Default(.showInspector) private var showInspector @Default(.showInspector) private var showInspector
@Default(.showChapters) private var showChapters
@Default(.showRelated) private var showRelated
@ObservedObject private var accounts = AccountsModel.shared @ObservedObject private var accounts = AccountsModel.shared
@@ -73,8 +75,19 @@ struct PlayerSettings: View {
} }
#if !os(tvOS) #if !os(tvOS)
Section(header: SettingsHeader(text: "Inspector".localized())) { Section(header: SettingsHeader(text: "Info".localized())) {
inspectorVisibilityPicker expandVideoDescriptionToggle
showChaptersToggle
showRelatedToggle
#if os(macOS)
HStack {
Text("Inspector")
inspectorVisibilityPicker
}
.padding(.leading, 20)
#else
inspectorVisibilityPicker
#endif
} }
#endif #endif
@@ -96,9 +109,6 @@ struct PlayerSettings: View {
showScrollToTopInCommentsToggle showScrollToTopInCommentsToggle
#endif #endif
#if !os(tvOS)
expandVideoDescriptionToggle
#endif
returnYouTubeDislikeToggle returnYouTubeDislikeToggle
} }
} }
@@ -240,15 +250,25 @@ struct PlayerSettings: View {
} }
#endif #endif
private var inspectorVisibilityPicker: some View { #if !os(tvOS)
Picker("Visibility", selection: $showInspector) { private var inspectorVisibilityPicker: some View {
Text("Always").tag(ShowInspectorSetting.always) Picker("Inspector", selection: $showInspector) {
Text("Only for local files and URLs").tag(ShowInspectorSetting.onlyLocal) Text("Always").tag(ShowInspectorSetting.always)
Text("Only for local files and URLs").tag(ShowInspectorSetting.onlyLocal)
}
#if os(macOS)
.labelsHidden()
#endif
} }
#if os(macOS)
.labelsHidden() private var showChaptersToggle: some View {
#endif Toggle("Chapters", isOn: $showChapters)
} }
private var showRelatedToggle: some View {
Toggle("Related", isOn: $showRelated)
}
#endif
} }
struct PlayerSettings_Previews: PreviewProvider { struct PlayerSettings_Previews: PreviewProvider {

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 || qualityProfile.isNil ? 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

@@ -266,7 +266,7 @@ struct SettingsView: View {
case .browsing: case .browsing:
return 800 return 800
case .player: case .player:
return 480 return 500
case .controls: case .controls:
return 920 return 920
case .quality: case .quality:

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

@@ -595,3 +595,6 @@
"Play Now in AVPlayer" = "Play Now in AVPlayer"; "Play Now in AVPlayer" = "Play Now in AVPlayer";
"Show channel avatars in videos lists" = "Show channel avatars in videos lists"; "Show channel avatars in videos lists" = "Show channel avatars in videos lists";
"Show channel avatars in channels lists" = "Show channel avatars in channels lists"; "Show channel avatars in channels lists" = "Show channel avatars in channels lists";
"Podcasts" = "Podcasts";
"Releases" = "Releases";
"Add %@" = "Add %@";

View File

@@ -116,7 +116,7 @@
"Decrease rate" = "Tasa de disminución"; "Decrease rate" = "Tasa de disminución";
"Decreased opacity" = "Opacidad disminuida"; "Decreased opacity" = "Opacidad disminuida";
"High" = "Alto"; "High" = "Alto";
"%lld videos" = "%lld videos"; "%lld videos" = "%lld vídeos";
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Recordatorios explícitos para marquen \"me gusta\", se suscriban o interactúen con ellos en cualquier plataforma de pago o gratuita (por ejemplo, haciendo clic en un vídeo)."; "Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Recordatorios explícitos para marquen \"me gusta\", se suscriban o interactúen con ellos en cualquier plataforma de pago o gratuita (por ejemplo, haciendo clic en un vídeo).";
"Formats will be selected in order as listed.\nHLS is an adaptive format (resolution setting does not apply)." = "Los formatos se seleccionarán en orden como se indica.\nHLS es un formato adaptable (no aplica la configuración de resolución)."; "Formats will be selected in order as listed.\nHLS is an adaptive format (resolution setting does not apply)." = "Los formatos se seleccionarán en orden como se indica.\nHLS es un formato adaptable (no aplica la configuración de resolución).";
"Fullscreen size" = "Tamaño de pantalla completa"; "Fullscreen size" = "Tamaño de pantalla completa";
@@ -331,7 +331,7 @@
"Replies" = "Respuestas"; "Replies" = "Respuestas";
"Reset" = "Reiniciar"; "Reset" = "Reiniciar";
"Save history of searches, channels and playlists" = "Guardar historial de búsquedas, canales y listas de reproducción"; "Save history of searches, channels and playlists" = "Guardar historial de búsquedas, canales y listas de reproducción";
"Search" = "Buscar; "Search" = "Buscar";
"Seek gesture sensitivity" = "Buscar sensibilidad en los gestos"; "Seek gesture sensitivity" = "Buscar sensibilidad en los gestos";
"Select location closest to you:" = "Seleccione la ubicación más cercana:"; "Select location closest to you:" = "Seleccione la ubicación más cercana:";
@@ -502,3 +502,17 @@
"Playback history is empty" = "El historial de reproducción está vacío"; "Playback history is empty" = "El historial de reproducción está vacío";
"Copy%@link" = "Copiar%@enlace"; "Copy%@link" = "Copiar%@enlace";
"Share%@link" = "Compartir%@enlace"; "Share%@link" = "Compartir%@enlace";
"Open expanded" = "Abrir maximizada";
"Single tap gesture" = "Gesto con un solo toque";
"Right click channel thumbnail to open context menu with more actions" = "Haz clic con el botón derecho en la miniatura del canal para abrir el menú contextual con más acciones";
"Short videos: visible" = "Vídeos cortos: visibles";
"Tap and hold channel thumbnail to open context menu with more actions" = "Mantén pulsada la miniatura del canal para abrir el menú contextual con más acciones";
"Maximum width expanded" = "Ancho máximo ampliado";
"Short videos: hidden" = "Vídeos cortos: ocultos";
"Clear all" = "Borrar todo";
"Always show controls buttons" = "Mostrar siempre los botones de control";
"Mark channel feed as unwatched" = "Marcar el canal como no visto";
"Play all unwatched" = "Reproducir todo lo no visto";
"Mark channel feed as watched" = "Marcar el canal como visto";
"Double tap gesture" = "Doble toque";
"Player Bar" = "Barra del reproductor";

View File

@@ -597,3 +597,6 @@
"Play Now in MPV" = "Lire maintenant dans MPV"; "Play Now in MPV" = "Lire maintenant dans MPV";
"Show channel avatars in videos lists" = "Afficher les avatars des chaînes dans les listes de vidéos"; "Show channel avatars in videos lists" = "Afficher les avatars des chaînes dans les listes de vidéos";
"Show channel avatars in channels lists" = "Afficher les avatars des chaînes dans les listes de chaînes"; "Show channel avatars in channels lists" = "Afficher les avatars des chaînes dans les listes de chaînes";
"Podcasts" = "Podcasts";
"Releases" = "Sorties";
"Add %@" = "Ajouter %@";

View File

@@ -597,3 +597,6 @@
"Landscape right" = "右を下に横長"; "Landscape right" = "右を下に横長";
"Show channel avatars in channels lists" = "チャンネル一覧にチャンネルのアイコンを表示"; "Show channel avatars in channels lists" = "チャンネル一覧にチャンネルのアイコンを表示";
"Show channel avatars in videos lists" = "動画一覧にチャンネルのアイコンを表示"; "Show channel avatars in videos lists" = "動画一覧にチャンネルのアイコンを表示";
"Podcasts" = "ポッドキャスト";
"Releases" = "リリース";
"Add %@" = "追加 %@";

View File

@@ -271,7 +271,7 @@
"Popular" = "Populært"; "Popular" = "Populært";
"Connection failed" = "Kunne ikke koble til"; "Connection failed" = "Kunne ikke koble til";
"Add Location" = "Legg til sted"; "Add Location" = "Legg til sted";
"Always use AVPlayer for live videos" = "AVPlayer for direkte-videoer"; "Always use AVPlayer for live videos" = "Alltid bruk AVPlayer for direktesendinger";
"Apply to all" = "Bruk for alle"; "Apply to all" = "Bruk for alle";
"Automatic" = "Automatisk"; "Automatic" = "Automatisk";
"Autoplaying Next" = "Spiller neste også"; "Autoplaying Next" = "Spiller neste også";

View File

@@ -598,3 +598,6 @@
"Show video context menu options to force selected backend" = "Pokaż opcje menu kontekstowego wideo, aby wymusić wybrany silnik"; "Show video context menu options to force selected backend" = "Pokaż opcje menu kontekstowego wideo, aby wymusić wybrany silnik";
"Show channel avatars in videos lists" = "Pokaż awatary kanałów na listach wideo"; "Show channel avatars in videos lists" = "Pokaż awatary kanałów na listach wideo";
"Show channel avatars in channels lists" = "Pokaż awatary kanałów na listach kanałów"; "Show channel avatars in channels lists" = "Pokaż awatary kanałów na listach kanałów";
"Podcasts" = "Podkasty";
"Releases" = "Wydania";
"Add %@" = "Dodaj %@";

View File

@@ -597,3 +597,6 @@
"Play Now in MPV" = "Tocar Agora em MPV"; "Play Now in MPV" = "Tocar Agora em MPV";
"Show channel avatars in videos lists" = "Mostrar avatares de canais em listas de vídeos"; "Show channel avatars in videos lists" = "Mostrar avatares de canais em listas de vídeos";
"Show channel avatars in channels lists" = "Mostrar avatares de canais em listas de canais"; "Show channel avatars in channels lists" = "Mostrar avatares de canais em listas de canais";
"Podcasts" = "Podcasts";
"Releases" = "Lançamentos";
"Add %@" = "Adicionar %@";

View File

@@ -601,7 +601,6 @@
379DC3D328BA4EB400B09677 /* Seek.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379DC3D028BA4EB400B09677 /* Seek.swift */; }; 379DC3D328BA4EB400B09677 /* Seek.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379DC3D028BA4EB400B09677 /* Seek.swift */; };
379E7C332A20FE3900AF8118 /* FocusableSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379E7C322A20FE3900AF8118 /* FocusableSearchTextField.swift */; }; 379E7C332A20FE3900AF8118 /* FocusableSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379E7C322A20FE3900AF8118 /* FocusableSearchTextField.swift */; };
379E7C342A20FE3900AF8118 /* FocusableSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379E7C322A20FE3900AF8118 /* FocusableSearchTextField.swift */; }; 379E7C342A20FE3900AF8118 /* FocusableSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379E7C322A20FE3900AF8118 /* FocusableSearchTextField.swift */; };
379E7C362A2105B900AF8118 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 379E7C352A2105B900AF8118 /* Introspect */; };
379EF9E029AA585F009FE6C6 /* HideShortsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379EF9DF29AA585F009FE6C6 /* HideShortsButtons.swift */; }; 379EF9E029AA585F009FE6C6 /* HideShortsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379EF9DF29AA585F009FE6C6 /* HideShortsButtons.swift */; };
379EF9E129AA585F009FE6C6 /* HideShortsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379EF9DF29AA585F009FE6C6 /* HideShortsButtons.swift */; }; 379EF9E129AA585F009FE6C6 /* HideShortsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379EF9DF29AA585F009FE6C6 /* HideShortsButtons.swift */; };
379EF9E229AA585F009FE6C6 /* HideShortsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379EF9DF29AA585F009FE6C6 /* HideShortsButtons.swift */; }; 379EF9E229AA585F009FE6C6 /* HideShortsButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 379EF9DF29AA585F009FE6C6 /* HideShortsButtons.swift */; };
@@ -698,7 +697,6 @@
37BD07BC2698AB60003EBB87 /* AppSidebarNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BD07BA2698AB60003EBB87 /* AppSidebarNavigation.swift */; }; 37BD07BC2698AB60003EBB87 /* AppSidebarNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BD07BA2698AB60003EBB87 /* AppSidebarNavigation.swift */; };
37BD07C12698AD3B003EBB87 /* TrendingCountry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3705B17F267B4DFB00704544 /* TrendingCountry.swift */; }; 37BD07C12698AD3B003EBB87 /* TrendingCountry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3705B17F267B4DFB00704544 /* TrendingCountry.swift */; };
37BD07C32698AD4F003EBB87 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BD07B42698AA4D003EBB87 /* ContentView.swift */; }; 37BD07C32698AD4F003EBB87 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BD07B42698AA4D003EBB87 /* ContentView.swift */; };
37BD07C72698B27B003EBB87 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 37BD07C62698B27B003EBB87 /* Introspect */; };
37BD07C82698B71C003EBB87 /* AppTabNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37D4B0C32671614700C925CA /* AppTabNavigation.swift */; }; 37BD07C82698B71C003EBB87 /* AppTabNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37D4B0C32671614700C925CA /* AppTabNavigation.swift */; };
37BD07C92698FBDB003EBB87 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BD07B42698AA4D003EBB87 /* ContentView.swift */; }; 37BD07C92698FBDB003EBB87 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BD07B42698AA4D003EBB87 /* ContentView.swift */; };
37BD672426F13D65004BE0C1 /* AppSidebarPlaylists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BA794A26DC30EC002A0235 /* AppSidebarPlaylists.swift */; }; 37BD672426F13D65004BE0C1 /* AppSidebarPlaylists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BA794A26DC30EC002A0235 /* AppSidebarPlaylists.swift */; };
@@ -729,9 +727,6 @@
37C194C726F6A9C8005D3B96 /* RecentsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C194C626F6A9C8005D3B96 /* RecentsModel.swift */; }; 37C194C726F6A9C8005D3B96 /* RecentsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C194C626F6A9C8005D3B96 /* RecentsModel.swift */; };
37C194C826F6A9C8005D3B96 /* RecentsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C194C626F6A9C8005D3B96 /* RecentsModel.swift */; }; 37C194C826F6A9C8005D3B96 /* RecentsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C194C626F6A9C8005D3B96 /* RecentsModel.swift */; };
37C2211D27ADA33300305B41 /* MPVViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C2211C27ADA33300305B41 /* MPVViewController.swift */; }; 37C2211D27ADA33300305B41 /* MPVViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C2211C27ADA33300305B41 /* MPVViewController.swift */; };
37C2211F27ADA3A200305B41 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2211E27ADA3A200305B41 /* libz.tbd */; };
37C2212127ADA3A600305B41 /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212027ADA3A600305B41 /* libbz2.tbd */; };
37C2212327ADA3F200305B41 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212227ADA3F200305B41 /* libiconv.tbd */; };
37C2212527ADA40A00305B41 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212427ADA40A00305B41 /* AudioToolbox.framework */; }; 37C2212527ADA40A00305B41 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212427ADA40A00305B41 /* AudioToolbox.framework */; };
37C2212727ADA41000305B41 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212627ADA41000305B41 /* CoreFoundation.framework */; }; 37C2212727ADA41000305B41 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212627ADA41000305B41 /* CoreFoundation.framework */; };
37C2212927ADA41400305B41 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212827ADA41400305B41 /* CoreMedia.framework */; }; 37C2212927ADA41400305B41 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2212827ADA41400305B41 /* CoreMedia.framework */; };
@@ -751,6 +746,8 @@
37C3A251272366440087A57A /* ChannelPlaylistView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C3A250272366440087A57A /* ChannelPlaylistView.swift */; }; 37C3A251272366440087A57A /* ChannelPlaylistView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C3A250272366440087A57A /* ChannelPlaylistView.swift */; };
37C3A252272366440087A57A /* ChannelPlaylistView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C3A250272366440087A57A /* ChannelPlaylistView.swift */; }; 37C3A252272366440087A57A /* ChannelPlaylistView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C3A250272366440087A57A /* ChannelPlaylistView.swift */; };
37C3A253272366440087A57A /* ChannelPlaylistView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C3A250272366440087A57A /* ChannelPlaylistView.swift */; }; 37C3A253272366440087A57A /* ChannelPlaylistView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C3A250272366440087A57A /* ChannelPlaylistView.swift */; };
37C736782AC32B28007630E1 /* SwiftUIIntrospect in Frameworks */ = {isa = PBXBuildFile; productRef = 37C736772AC32B28007630E1 /* SwiftUIIntrospect */; };
37C7367A2AC33010007630E1 /* SwiftUIIntrospect in Frameworks */ = {isa = PBXBuildFile; productRef = 37C736792AC33010007630E1 /* SwiftUIIntrospect */; };
37C7A1D5267BFD9D0010EAD6 /* SponsorBlockSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C7A1D4267BFD9D0010EAD6 /* SponsorBlockSegment.swift */; }; 37C7A1D5267BFD9D0010EAD6 /* SponsorBlockSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C7A1D4267BFD9D0010EAD6 /* SponsorBlockSegment.swift */; };
37C7A1D6267BFD9D0010EAD6 /* SponsorBlockSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C7A1D4267BFD9D0010EAD6 /* SponsorBlockSegment.swift */; }; 37C7A1D6267BFD9D0010EAD6 /* SponsorBlockSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C7A1D4267BFD9D0010EAD6 /* SponsorBlockSegment.swift */; };
37C7A1D7267BFD9D0010EAD6 /* SponsorBlockSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C7A1D4267BFD9D0010EAD6 /* SponsorBlockSegment.swift */; }; 37C7A1D7267BFD9D0010EAD6 /* SponsorBlockSegment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37C7A1D4267BFD9D0010EAD6 /* SponsorBlockSegment.swift */; };
@@ -1406,11 +1403,8 @@
37C2212727ADA41000305B41 /* CoreFoundation.framework in Frameworks */, 37C2212727ADA41000305B41 /* CoreFoundation.framework in Frameworks */,
37C2212527ADA40A00305B41 /* AudioToolbox.framework in Frameworks */, 37C2212527ADA40A00305B41 /* AudioToolbox.framework in Frameworks */,
372AA410286D067B0000B1DC /* Repeat in Frameworks */, 372AA410286D067B0000B1DC /* Repeat in Frameworks */,
37C2212327ADA3F200305B41 /* libiconv.tbd in Frameworks */,
379325D529A265A300181CF1 /* Logging in Frameworks */, 379325D529A265A300181CF1 /* Logging in Frameworks */,
37C2212127ADA3A600305B41 /* libbz2.tbd in Frameworks */,
37EE6DC528A305AD00BFD632 /* Reachability in Frameworks */, 37EE6DC528A305AD00BFD632 /* Reachability in Frameworks */,
37C2211F27ADA3A200305B41 /* libz.tbd in Frameworks */,
375B8AB128B57F4200397B31 /* KeychainAccess in Frameworks */, 375B8AB128B57F4200397B31 /* KeychainAccess in Frameworks */,
3765917C27237D21009F956E /* PINCache in Frameworks */, 3765917C27237D21009F956E /* PINCache in Frameworks */,
37BD07B72698AB2E003EBB87 /* Defaults in Frameworks */, 37BD07B72698AB2E003EBB87 /* Defaults in Frameworks */,
@@ -1421,9 +1415,9 @@
3797104928D3D10600D5F53C /* SDWebImageSwiftUI in Frameworks */, 3797104928D3D10600D5F53C /* SDWebImageSwiftUI in Frameworks */,
FA97174C2A494700001FF53D /* MPVKit in Frameworks */, FA97174C2A494700001FF53D /* MPVKit in Frameworks */,
37BD07B92698AB2E003EBB87 /* Siesta in Frameworks */, 37BD07B92698AB2E003EBB87 /* Siesta in Frameworks */,
37BD07C72698B27B003EBB87 /* Introspect in Frameworks */,
37FB284D2722099E00A57617 /* SDWebImageWebPCoder in Frameworks */, 37FB284D2722099E00A57617 /* SDWebImageWebPCoder in Frameworks */,
37CF8B8428535E4F00B71E37 /* SDWebImage in Frameworks */, 37CF8B8428535E4F00B71E37 /* SDWebImage in Frameworks */,
37C7367A2AC33010007630E1 /* SwiftUIIntrospect in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -1434,12 +1428,12 @@
379325D729A265AE00181CF1 /* Logging in Frameworks */, 379325D729A265AE00181CF1 /* Logging in Frameworks */,
372AA414286D06A10000B1DC /* Repeat in Frameworks */, 372AA414286D06A10000B1DC /* Repeat in Frameworks */,
37F7AB5228A94EB900FB46B5 /* IOKit.framework in Frameworks */, 37F7AB5228A94EB900FB46B5 /* IOKit.framework in Frameworks */,
379E7C362A2105B900AF8118 /* Introspect in Frameworks */,
3703205827D2BAE4007A0CB8 /* Siesta in Frameworks */, 3703205827D2BAE4007A0CB8 /* Siesta in Frameworks */,
3703206827D2BB45007A0CB8 /* Defaults in Frameworks */, 3703206827D2BB45007A0CB8 /* Defaults in Frameworks */,
3703206A27D2BB49007A0CB8 /* Alamofire in Frameworks */, 3703206A27D2BB49007A0CB8 /* Alamofire in Frameworks */,
374D11E72943C56300CB4350 /* Cache in Frameworks */, 374D11E72943C56300CB4350 /* Cache in Frameworks */,
3797104B28D3D18800D5F53C /* SDWebImageSwiftUI in Frameworks */, 3797104B28D3D18800D5F53C /* SDWebImageSwiftUI in Frameworks */,
37C736782AC32B28007630E1 /* SwiftUIIntrospect in Frameworks */,
3703206227D2BB1B007A0CB8 /* SDWebImagePINPlugin in Frameworks */, 3703206227D2BB1B007A0CB8 /* SDWebImagePINPlugin in Frameworks */,
371AC0B2294D1C230085989E /* CachedAsyncImage in Frameworks */, 371AC0B2294D1C230085989E /* CachedAsyncImage in Frameworks */,
3703206627D2BB35007A0CB8 /* PINCache in Frameworks */, 3703206627D2BB35007A0CB8 /* PINCache in Frameworks */,
@@ -2280,7 +2274,6 @@
377FC7D4267A080300A6BBAF /* SwiftyJSON */, 377FC7D4267A080300A6BBAF /* SwiftyJSON */,
37BD07B62698AB2E003EBB87 /* Defaults */, 37BD07B62698AB2E003EBB87 /* Defaults */,
37BD07B82698AB2E003EBB87 /* Siesta */, 37BD07B82698AB2E003EBB87 /* Siesta */,
37BD07C62698B27B003EBB87 /* Introspect */,
37BADCA42699FB72009BE4FB /* Alamofire */, 37BADCA42699FB72009BE4FB /* Alamofire */,
37FB284C2722099E00A57617 /* SDWebImageWebPCoder */, 37FB284C2722099E00A57617 /* SDWebImageWebPCoder */,
37FB285527220D9000A57617 /* SDWebImagePINPlugin */, 37FB285527220D9000A57617 /* SDWebImagePINPlugin */,
@@ -2295,6 +2288,7 @@
371AC0AB294D1A490085989E /* CachedAsyncImage */, 371AC0AB294D1A490085989E /* CachedAsyncImage */,
379325D429A265A300181CF1 /* Logging */, 379325D429A265A300181CF1 /* Logging */,
FA97174B2A494700001FF53D /* MPVKit */, FA97174B2A494700001FF53D /* MPVKit */,
37C736792AC33010007630E1 /* SwiftUIIntrospect */,
); );
productName = "Yattee (iOS)"; productName = "Yattee (iOS)";
productReference = 37D4B0C92671614900C925CA /* Yattee.app */; productReference = 37D4B0C92671614900C925CA /* Yattee.app */;
@@ -2332,8 +2326,8 @@
374D11E62943C56300CB4350 /* Cache */, 374D11E62943C56300CB4350 /* Cache */,
371AC0B1294D1C230085989E /* CachedAsyncImage */, 371AC0B1294D1C230085989E /* CachedAsyncImage */,
379325D629A265AE00181CF1 /* Logging */, 379325D629A265AE00181CF1 /* Logging */,
379E7C352A2105B900AF8118 /* Introspect */,
3704BDFE2ABF260C00370FF7 /* MPVKit */, 3704BDFE2ABF260C00370FF7 /* MPVKit */,
37C736772AC32B28007630E1 /* SwiftUIIntrospect */,
); );
productName = "Yattee (macOS)"; productName = "Yattee (macOS)";
productReference = 37D4B0CF2671614900C925CA /* Yattee.app */; productReference = 37D4B0CF2671614900C925CA /* Yattee.app */;
@@ -3673,7 +3667,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 = 165;
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 +3698,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 = 165;
"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 +3729,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 = 165;
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 +3749,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 = 165;
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 +3913,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 = 165;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1", "DEBUG=1",
@@ -3972,7 +3966,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 = 165;
"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 +4018,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 = 165;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
ENABLE_APP_SANDBOX = YES; ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES; ENABLE_HARDENED_RUNTIME = YES;
@@ -4038,9 +4032,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = "$(inherited)";
"$(inherited)",
);
MACOSX_DEPLOYMENT_TARGET = 12.0; MACOSX_DEPLOYMENT_TARGET = 12.0;
MARKETING_VERSION = 1.5; MARKETING_VERSION = 1.5;
OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
@@ -4065,7 +4057,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 = 165;
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;
@@ -4080,9 +4072,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = "$(inherited)";
"$(inherited)",
);
MACOSX_DEPLOYMENT_TARGET = 12.0; MACOSX_DEPLOYMENT_TARGET = 12.0;
MARKETING_VERSION = 1.5; MARKETING_VERSION = 1.5;
OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
@@ -4102,7 +4092,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 = 165;
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 +4116,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 = 165;
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 +4142,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 = 165;
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 +4167,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 = 165;
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 +4193,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 = 165;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
@@ -4243,7 +4233,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 = 165;
DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_ASSET_PATHS = "";
"DEVELOPMENT_TEAM[sdk=appletvos*]" = 78Z5H3M6RJ; "DEVELOPMENT_TEAM[sdk=appletvos*]" = 78Z5H3M6RJ;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
@@ -4284,7 +4274,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 = 165;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -4308,7 +4298,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 = 165;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -4825,11 +4815,6 @@
package = 3799AC0728B03CEC001376F9 /* XCRemoteSwiftPackageReference "ActiveLabel.swift" */; package = 3799AC0728B03CEC001376F9 /* XCRemoteSwiftPackageReference "ActiveLabel.swift" */;
productName = ActiveLabel; productName = ActiveLabel;
}; };
379E7C352A2105B900AF8118 /* Introspect */ = {
isa = XCSwiftPackageProductDependency;
package = 37BD07C52698B27B003EBB87 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */;
productName = Introspect;
};
37BADCA42699FB72009BE4FB /* Alamofire */ = { 37BADCA42699FB72009BE4FB /* Alamofire */ = {
isa = XCSwiftPackageProductDependency; isa = XCSwiftPackageProductDependency;
package = 37BADCA32699FB72009BE4FB /* XCRemoteSwiftPackageReference "Alamofire" */; package = 37BADCA32699FB72009BE4FB /* XCRemoteSwiftPackageReference "Alamofire" */;
@@ -4850,10 +4835,15 @@
package = 3797757B268922D100DD52A8 /* XCRemoteSwiftPackageReference "siesta" */; package = 3797757B268922D100DD52A8 /* XCRemoteSwiftPackageReference "siesta" */;
productName = Siesta; productName = Siesta;
}; };
37BD07C62698B27B003EBB87 /* Introspect */ = { 37C736772AC32B28007630E1 /* SwiftUIIntrospect */ = {
isa = XCSwiftPackageProductDependency; isa = XCSwiftPackageProductDependency;
package = 37BD07C52698B27B003EBB87 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */; package = 37BD07C52698B27B003EBB87 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */;
productName = Introspect; productName = SwiftUIIntrospect;
};
37C736792AC33010007630E1 /* SwiftUIIntrospect */ = {
isa = XCSwiftPackageProductDependency;
package = 37BD07C52698B27B003EBB87 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */;
productName = SwiftUIIntrospect;
}; };
37CF8B8328535E4F00B71E37 /* SDWebImage */ = { 37CF8B8328535E4F00B71E37 /* SDWebImage */ = {
isa = XCSwiftPackageProductDependency; isa = XCSwiftPackageProductDependency;

View File

@@ -105,7 +105,7 @@
"location" : "https://github.com/SDWebImage/SDWebImage", "location" : "https://github.com/SDWebImage/SDWebImage",
"state" : { "state" : {
"branch" : "master", "branch" : "master",
"revision" : "936f1c7067728d16c362ba4fb93c17df78b5fd79" "revision" : "1f06ef5007b6a580b3873ed2adee19e05d3b215a"
} }
}, },
{ {
@@ -131,8 +131,8 @@
"kind" : "remoteSourceControl", "kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/SDWebImageWebPCoder.git", "location" : "https://github.com/SDWebImage/SDWebImageWebPCoder.git",
"state" : { "state" : {
"revision" : "3819cb70faa2454b54d8364779bfacd8c216a6e2", "revision" : "b442fafefeee8d3f489e33e69e0bb9407deb4757",
"version" : "0.13.0" "version" : "0.14.0"
} }
}, },
{ {