mirror of
https://github.com/yattee/yattee.git
synced 2025-12-13 19:48:14 +00:00
Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2efb3ec334 | ||
|
|
16c580b1f3 | ||
|
|
5cef7d40ff | ||
|
|
7b9aa8ce99 | ||
|
|
a83657b8c6 | ||
|
|
287bd25360 | ||
|
|
7c45f3286b | ||
|
|
a9e3e81567 | ||
|
|
f45001da78 | ||
|
|
3779b7ed1f | ||
|
|
55517fd44d | ||
|
|
77c40226eb | ||
|
|
5424d5168a | ||
|
|
2c7fce011f | ||
|
|
6911fb8e08 | ||
|
|
a73a030d92 | ||
|
|
930cefc29e | ||
|
|
02d9b34fb0 | ||
|
|
0a8d9dfceb |
43
CHANGELOG.md
43
CHANGELOG.md
@@ -1,41 +1,4 @@
|
||||
## Build 142
|
||||
* Fixed chapters layout when there are no images available
|
||||
## Build 144
|
||||
* Added button to scroll to top in comments and setting to toggle it
|
||||
* Switch seek duration +/- buttons in controls settings
|
||||
* Other minor fixes
|
||||
|
||||
### Previous Builds
|
||||
* Improved player layout
|
||||
- Video titles can now span multiple lines for readability
|
||||
- Channel details and video dates/likes/dislikes displayed below title
|
||||
- Segmented picker between Info page and Comments
|
||||
- Info page combines description, chapters, inspector, and related
|
||||
- Description is collapsed by default, tap to expand
|
||||
- Chapters are displayed in horizontal scroll view
|
||||
- Gesture to toggle fullscreen size of details is changed to double tap above action buttons
|
||||
* Opening channel from current video, related or from comments will open it in sheet above player instead of in browser (iOS)
|
||||
* Added settings toggles for enabling more action buttons:
|
||||
- Toggle fullscreen
|
||||
- Toggle PiP
|
||||
- Lock orientation
|
||||
- Restart video
|
||||
- Play next video
|
||||
- Music mode
|
||||
* Added browsing setting to toggle visibility of button to change video watch status
|
||||
* Added player setting to show Inspector always or only for local videos
|
||||
* Added player setting to show video descriptions expanded (now gets collapsed by default)
|
||||
* Added playback mode menu to Playback Settings
|
||||
* Changed layout to vertical and added configuration buttons for remaining views on tvOS (Popular, Trending, Playlists, Search)
|
||||
* Simplified animation on closing player
|
||||
* Removed "Watch Next" view
|
||||
* Added pagination/infinite scroll for channel contents (Invidious and Piped)
|
||||
* Added support for channel tabs for Invidious (previously available only for Piped)
|
||||
* Added filter to hide Short videos, available via view menu/toolbar button
|
||||
* Added localizations: Arabic, Japanese, Portugese, Portuguese (Brazil)
|
||||
* Added browsing setting: "Show unwatched feed badges"
|
||||
* Fixed reported crashes
|
||||
* Fixed issue where channels in Favorites would not refresh contents
|
||||
* Fixed issues with opening channel URLs
|
||||
* Fixed issue where account username would get truncated
|
||||
* Fixed issue where marking all feed videos as watched/unwatched would not refresh actions in Subscriptions menu
|
||||
* Fixed issue where closing channel would require multiple back presses
|
||||
* Fixed issue with controls being clipped (regression from build 140)
|
||||
* Other minor changes and improvements
|
||||
|
||||
@@ -280,7 +280,7 @@ final class MPVBackend: PlayerBackend {
|
||||
self.stop()
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self else {
|
||||
guard let self, let client = self.client else {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -296,7 +296,7 @@ final class MPVBackend: PlayerBackend {
|
||||
}
|
||||
}
|
||||
|
||||
self.client.loadFile(url, sub: captions?.url, time: time, forceSeekable: stream.kind == .hls) { [weak self] _ in
|
||||
client.loadFile(url, sub: captions?.url, time: time, forceSeekable: stream.kind == .hls) { [weak self] _ in
|
||||
self?.isLoadingVideo = true
|
||||
}
|
||||
} else {
|
||||
@@ -308,7 +308,7 @@ final class MPVBackend: PlayerBackend {
|
||||
let fileToLoad = self.model.musicMode ? stream.audioAsset.url : stream.videoAsset.url
|
||||
let audioTrack = self.model.musicMode ? nil : stream.audioAsset.url
|
||||
|
||||
self.client?.loadFile(fileToLoad, audio: audioTrack, sub: captions?.url, time: time, forceSeekable: stream.kind == .hls) { [weak self] _ in
|
||||
client.loadFile(fileToLoad, audio: audioTrack, sub: captions?.url, time: time, forceSeekable: stream.kind == .hls) { [weak self] _ in
|
||||
self?.isLoadingVideo = true
|
||||
self?.pause()
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ struct ChannelPlaylistView: View {
|
||||
#if os(iOS)
|
||||
.navigationBarTrailing
|
||||
#else
|
||||
.automatic
|
||||
.automatic
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -136,6 +136,10 @@ extension Defaults.Keys {
|
||||
static let seekGestureSpeed = Key<Double>("seekGestureSpeed", default: 0.5)
|
||||
static let seekGestureSensitivity = Key<Double>("seekGestureSensitivity", default: 30.0)
|
||||
static let showKeywords = Key<Bool>("showKeywords", default: false)
|
||||
#if !os(tvOS)
|
||||
static let showScrollToTopInComments = Key<Bool>("showScrollToTopInComments", default: true)
|
||||
#endif
|
||||
|
||||
#if os(iOS)
|
||||
static let expandVideoDescriptionDefault = Constants.isIPad
|
||||
#else
|
||||
@@ -287,7 +291,7 @@ enum PlayerSidebarSetting: String, CaseIterable, Defaults.Serializable {
|
||||
#if os(macOS)
|
||||
.always
|
||||
#else
|
||||
.whenFits
|
||||
.whenFits
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ struct PlayerControls: View {
|
||||
}
|
||||
}
|
||||
#else
|
||||
.offset(y: 2)
|
||||
.offset(y: 2)
|
||||
#endif
|
||||
|
||||
VStack {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import SwiftUI
|
||||
|
||||
struct CommentsView: View {
|
||||
var embedInScrollView = false
|
||||
@State private var repliesID: Comment.ID?
|
||||
|
||||
@ObservedObject private var comments = CommentsModel.shared
|
||||
@@ -16,7 +15,7 @@ struct CommentsView: View {
|
||||
PlaceholderProgressView()
|
||||
} else {
|
||||
let last = comments.all.last
|
||||
let commentsStack = LazyVStack {
|
||||
LazyVStack {
|
||||
ForEach(comments.all) { comment in
|
||||
CommentView(comment: comment, repliesID: $repliesID)
|
||||
.onAppear {
|
||||
@@ -25,15 +24,6 @@ struct CommentsView: View {
|
||||
.borderBottom(height: comment != last ? 0.5 : 0, color: Color("ControlsBorderColor"))
|
||||
}
|
||||
}
|
||||
|
||||
if embedInScrollView {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
commentsStack
|
||||
Color.clear.frame(height: 50)
|
||||
}
|
||||
} else {
|
||||
commentsStack
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.horizontal)
|
||||
|
||||
@@ -4,6 +4,8 @@ import SDWebImageSwiftUI
|
||||
import SwiftUI
|
||||
|
||||
struct VideoDetails: View {
|
||||
static let pageMenuID = "pageMenu"
|
||||
|
||||
struct TitleView: View {
|
||||
@ObservedObject private var model = PlayerModel.shared
|
||||
@State private var titleSize = CGSize.zero
|
||||
@@ -170,12 +172,15 @@ struct VideoDetails: View {
|
||||
@Environment(\.colorScheme) private var colorScheme
|
||||
|
||||
@ObservedObject private var accounts = AccountsModel.shared
|
||||
let comments = CommentsModel.shared
|
||||
@ObservedObject private var comments = CommentsModel.shared
|
||||
@ObservedObject private var player = PlayerModel.shared
|
||||
|
||||
@Default(.enableReturnYouTubeDislike) private var enableReturnYouTubeDislike
|
||||
@Default(.playerSidebar) private var playerSidebar
|
||||
@Default(.showInspector) private var showInspector
|
||||
#if !os(tvOS)
|
||||
@Default(.showScrollToTopInComments) private var showScrollToTopInComments
|
||||
#endif
|
||||
@Default(.expandVideoDescription) private var expandVideoDescription
|
||||
|
||||
var body: some View {
|
||||
@@ -211,7 +216,10 @@ struct VideoDetails: View {
|
||||
.animation(nil, value: player.currentItem)
|
||||
.frame(minWidth: 0, maxWidth: .infinity)
|
||||
|
||||
pageView
|
||||
ScrollViewReader { proxy in
|
||||
pageView
|
||||
.overlay(scrollToTopButton(proxy), alignment: .bottomTrailing)
|
||||
}
|
||||
#if os(iOS)
|
||||
.opacity(detailsVisibility ? 1 : 0)
|
||||
#endif
|
||||
@@ -266,9 +274,10 @@ struct VideoDetails: View {
|
||||
}
|
||||
|
||||
var pageView: some View {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
ScrollView(.vertical) {
|
||||
LazyVStack {
|
||||
pageMenu
|
||||
.id(Self.pageMenuID)
|
||||
.padding(5)
|
||||
|
||||
switch page {
|
||||
@@ -319,7 +328,6 @@ struct VideoDetails: View {
|
||||
.padding(.top, 20)
|
||||
}
|
||||
}
|
||||
.padding(.bottom, 60)
|
||||
}
|
||||
}
|
||||
.onAppear {
|
||||
@@ -338,12 +346,13 @@ struct VideoDetails: View {
|
||||
.padding(.horizontal)
|
||||
|
||||
case .comments:
|
||||
CommentsView(embedInScrollView: false)
|
||||
CommentsView()
|
||||
.onAppear {
|
||||
comments.loadIfNeeded()
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.bottom, 60)
|
||||
}
|
||||
#if os(iOS)
|
||||
.onAppear {
|
||||
@@ -365,6 +374,30 @@ struct VideoDetails: View {
|
||||
}
|
||||
}
|
||||
|
||||
@ViewBuilder func scrollToTopButton(_ proxy: ScrollViewProxy) -> some View {
|
||||
#if !os(tvOS)
|
||||
if showScrollToTopInComments,
|
||||
page == .comments,
|
||||
comments.loaded,
|
||||
comments.all.count > 3
|
||||
{
|
||||
Button {
|
||||
withAnimation {
|
||||
proxy.scrollTo(Self.pageMenuID)
|
||||
}
|
||||
} label: {
|
||||
Label("Scroll to top", systemImage: "arrow.up")
|
||||
.padding(8)
|
||||
.foregroundColor(.white)
|
||||
.background(Circle().opacity(0.8).foregroundColor(.accentColor))
|
||||
}
|
||||
.padding()
|
||||
.labelStyle(.iconOnly)
|
||||
.buttonStyle(.plain)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
var descriptionHeader: some View {
|
||||
HStack {
|
||||
Text("Description".localized())
|
||||
|
||||
@@ -44,7 +44,7 @@ struct VideoPlayerSizeModifier: ViewModifier {
|
||||
#if os(iOS)
|
||||
fullScreen ? .fill : .fit
|
||||
#else
|
||||
.fit
|
||||
.fit
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ struct AddToPlaylistView: View {
|
||||
#if os(tvOS)
|
||||
600
|
||||
#else
|
||||
.infinity
|
||||
.infinity
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ struct AddToPlaylistView: View {
|
||||
#if os(tvOS)
|
||||
.trailing
|
||||
#else
|
||||
.center
|
||||
.center
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ struct PlaylistVideosView: View {
|
||||
#if os(iOS)
|
||||
.navigationBarTrailing
|
||||
#else
|
||||
.automatic
|
||||
.automatic
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ struct PlaylistsView: View {
|
||||
}
|
||||
}
|
||||
#else
|
||||
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { _ in
|
||||
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { _ in
|
||||
model.load()
|
||||
loadResource()
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ struct SearchView: View {
|
||||
}
|
||||
}
|
||||
#else
|
||||
.ignoresSafeArea(.keyboard, edges: .bottom)
|
||||
.ignoresSafeArea(.keyboard, edges: .bottom)
|
||||
.navigationTitle("Search")
|
||||
#endif
|
||||
#if os(iOS)
|
||||
@@ -260,7 +260,7 @@ struct SearchView: View {
|
||||
#if os(iOS)
|
||||
accounts.app.supportsSearchFilters || favorites.isEnabled ? .bottomBar : .automatic
|
||||
#else
|
||||
.automatic
|
||||
.automatic
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -212,19 +212,20 @@ struct PlayerControlsSettings: View {
|
||||
|
||||
HStack {
|
||||
#if !os(tvOS)
|
||||
Label("Plus", systemImage: "plus")
|
||||
Label("Minus", systemImage: "minus")
|
||||
.imageScale(.large)
|
||||
.labelStyle(.iconOnly)
|
||||
.padding(7)
|
||||
.foregroundColor(.accentColor)
|
||||
.accessibilityAddTraits(.isButton)
|
||||
#if os(iOS)
|
||||
.frame(minHeight: 35)
|
||||
.background(RoundedRectangle(cornerRadius: 4).strokeBorder(lineWidth: 1).foregroundColor(.accentColor))
|
||||
#endif
|
||||
.contentShape(Rectangle())
|
||||
.onTapGesture {
|
||||
var intValue = Int(value.wrappedValue) ?? 10
|
||||
intValue += 5
|
||||
intValue -= 5
|
||||
if intValue <= 0 {
|
||||
intValue = 5
|
||||
}
|
||||
@@ -248,20 +249,19 @@ struct PlayerControlsSettings: View {
|
||||
#endif
|
||||
|
||||
#if !os(tvOS)
|
||||
Label("Minus", systemImage: "minus")
|
||||
Label("Plus", systemImage: "plus")
|
||||
.imageScale(.large)
|
||||
.labelStyle(.iconOnly)
|
||||
.padding(7)
|
||||
.foregroundColor(.accentColor)
|
||||
.accessibilityAddTraits(.isButton)
|
||||
#if os(iOS)
|
||||
.frame(minHeight: 35)
|
||||
.background(RoundedRectangle(cornerRadius: 4).strokeBorder(lineWidth: 1).foregroundColor(.accentColor))
|
||||
#endif
|
||||
.contentShape(Rectangle())
|
||||
.onTapGesture {
|
||||
var intValue = Int(value.wrappedValue) ?? 10
|
||||
intValue -= 5
|
||||
intValue += 5
|
||||
if intValue <= 0 {
|
||||
intValue = 5
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@ struct PlayerSettings: View {
|
||||
@Default(.playerSidebar) private var playerSidebar
|
||||
|
||||
@Default(.showKeywords) private var showKeywords
|
||||
#if !os(tvOS)
|
||||
@Default(.showScrollToTopInComments) private var showScrollToTopInComments
|
||||
#endif
|
||||
@Default(.expandVideoDescription) private var expandVideoDescription
|
||||
@Default(.pauseOnHidingPlayer) private var pauseOnHidingPlayer
|
||||
#if os(iOS)
|
||||
@@ -86,6 +89,11 @@ struct PlayerSettings: View {
|
||||
|
||||
if !accounts.isEmpty {
|
||||
keywordsToggle
|
||||
|
||||
#if !os(tvOS)
|
||||
showScrollToTopInCommentsToggle
|
||||
#endif
|
||||
|
||||
#if !os(tvOS)
|
||||
expandVideoDescriptionToggle
|
||||
#endif
|
||||
@@ -160,6 +168,12 @@ struct PlayerSettings: View {
|
||||
.modifier(SettingsPickerModifier())
|
||||
}
|
||||
|
||||
#if !os(tvOS)
|
||||
private var showScrollToTopInCommentsToggle: some View {
|
||||
Toggle("Show scroll to top button in comments", isOn: $showScrollToTopInComments)
|
||||
}
|
||||
#endif
|
||||
|
||||
private var keywordsToggle: some View {
|
||||
Toggle("Show keywords", isOn: $showKeywords)
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ struct SettingsView: View {
|
||||
private var windowHeight: Double {
|
||||
switch selection {
|
||||
case .browsing:
|
||||
return 840
|
||||
return 880
|
||||
case .player:
|
||||
return 450
|
||||
case .controls:
|
||||
|
||||
@@ -79,7 +79,7 @@ struct TrendingView: View {
|
||||
TrendingCountry(selectedCountry: $country)
|
||||
}
|
||||
#else
|
||||
.sheet(isPresented: $presentingCountrySelection) {
|
||||
.sheet(isPresented: $presentingCountrySelection) {
|
||||
TrendingCountry(selectedCountry: $country)
|
||||
#if os(macOS)
|
||||
.frame(minWidth: 400, minHeight: 400)
|
||||
@@ -128,7 +128,7 @@ struct TrendingView: View {
|
||||
}
|
||||
}
|
||||
#else
|
||||
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { _ in
|
||||
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { _ in
|
||||
resource.loadIfNeeded()?
|
||||
.onFailure { self.error = $0 }
|
||||
.onSuccess { _ in self.error = nil }
|
||||
|
||||
@@ -76,7 +76,7 @@ struct PopularView: View {
|
||||
}
|
||||
}
|
||||
#else
|
||||
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { _ in
|
||||
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { _ in
|
||||
resource?.loadIfNeeded()?
|
||||
.onFailure { self.error = $0 }
|
||||
.onSuccess { _ in self.error = nil }
|
||||
|
||||
@@ -61,7 +61,7 @@ struct YatteeApp: App {
|
||||
}
|
||||
)
|
||||
#else
|
||||
.onReceive(
|
||||
.onReceive(
|
||||
NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)
|
||||
) { _ in
|
||||
player.handleEnterForeground()
|
||||
|
||||
@@ -540,3 +540,26 @@
|
||||
"Are you sure you want to clear cache?" = "Möchten Sie den Cache wirklich löschen?";
|
||||
"Single tap gesture" = "Einmalige Antippen-Geste";
|
||||
"Seeking" = "Suchend";
|
||||
"List" = "Liste";
|
||||
"Cells" = "Zellen";
|
||||
"Show Next in Queue" = "Nächste in Warteschlange anzeigen";
|
||||
"Next in Queue" = "Nächster in der Warteschlange";
|
||||
"Open channel" = "Kanal öffnen";
|
||||
"Inspector" = "Inspektor";
|
||||
"Open video description expanded" = "Videobeschreibung öffnen erweitert";
|
||||
"Mark all as unwatched" = "Alle als ungesehen markieren";
|
||||
"Mark all as watched" = "Alle als gesehen markieren";
|
||||
"Queue - shuffled" = "Warteschlange - gemischt";
|
||||
"Playback Settings" = "Wiedergabeeinstellungen";
|
||||
"Replay" = "Wiederholung";
|
||||
"Loop one" = "Einmal schleifen";
|
||||
"Autoplay next" = "Nächstes Element automatisch abspielen";
|
||||
"Stream" = "Stream";
|
||||
"Show toggle watch status button" = "Umschalttaste Überwachungsstatus anzeigen";
|
||||
"Toggle size" = "Größe umschalten";
|
||||
"Toggle player" = "Player umschalten";
|
||||
"Do nothing" = "Nichts tun";
|
||||
"Feed" = "Feed";
|
||||
"Fullscreen" = "Vollbildmodus";
|
||||
"Lock" = "Sperre";
|
||||
"Description" = "Beschreibung";
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
"Large" = "Grand";
|
||||
"LIVE" = "DIRECT";
|
||||
"Loading..." = "Chargement…";
|
||||
"Locations" = "Emplacements";
|
||||
"Locations" = "Instances";
|
||||
|
||||
/* Video duration filter in search */
|
||||
"Long" = "Longues";
|
||||
@@ -87,12 +87,12 @@
|
||||
"Player" = "Lecteur";
|
||||
"Playlist" = "Liste de lecture";
|
||||
"Playlist \"%@\" will be deleted.\nIt cannot be reverted." = "La liste de lecture « %@ » sera supprimée.\nIl n'est pas possible de revenir en arrière.";
|
||||
"Popular" = "Populaire";
|
||||
"Popular" = "Tendances";
|
||||
"Preferred Formats" = "Formats préférés";
|
||||
"Profiles" = "Profils";
|
||||
"Promoting a product or service that is directly related to the creator themselves. This usually includes merchandise or promotion of monetized platforms." = "La promotion d'un produit ou d'un service qui est directement lié au créateur lui-même. Il s'agit généralement de marchandises ou de la promotion de plateformes monétisées.";
|
||||
"Quality" = "Qualité";
|
||||
"Rate" = "Taux";
|
||||
"Rate" = "Vitesse";
|
||||
"Search history is empty" = "L'historique de recherche est vide";
|
||||
"Videos" = "Vidéos";
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
"Next" = "Suivant";
|
||||
"Pause when entering background" = "Pause lors de l'entrée en arrière-plan";
|
||||
"Play All" = "Tout lire";
|
||||
"Quality Profile" = "Profil qualité";
|
||||
"Quality Profile" = "Profil de qualité";
|
||||
"Queue is empty" = "La file d'attente est vide";
|
||||
|
||||
/* Video sort order in search */
|
||||
@@ -185,7 +185,7 @@
|
||||
"Picture in Picture" = "Image dans l'image";
|
||||
"Play" = "Lecture";
|
||||
"Play in PiP" = "Lire en image dans l'image";
|
||||
"Play Last" = "Lire la dernière";
|
||||
"Play Last" = "Ajouter à la fin de la file d’attente";
|
||||
"Name" = "Nom";
|
||||
"Password" = "Mot de passe";
|
||||
"Playlists" = "Listes de lecture";
|
||||
@@ -243,7 +243,7 @@
|
||||
"Based on system color scheme" = "Basé sur le thème système";
|
||||
"Battery" = "Batterie";
|
||||
"Blue" = "Bleu";
|
||||
"Browsing" = "Naviguer";
|
||||
"Browsing" = "Navigation";
|
||||
"Buffering stream..." = "Mise en tampon du flux...";
|
||||
"Bugs and great feature ideas can be sent to the GitHub issues tracker. " = "Les bugs ainsi que des idées de fonctionnalités peuvent être envoyés sur GitHub. ";
|
||||
"Close PiP and open player when application enters foreground" = "Ferme l'IDI et ouvre le lecteur vidéo lorsque l'application passe au premier plan";
|
||||
@@ -262,7 +262,7 @@
|
||||
"Discord Server" = "Serveur Discord";
|
||||
"Discussions take place in Discord and Matrix. It's a good spot for general questions." = "Les discussions ont lieu sur Discord et Matrix. Ce sont de bons endroits pour poser des questions généraliste.";
|
||||
"Don't use public locations" = "Ne pas utiliser d'instances publiques";
|
||||
"Enable Return YouTube Dislike" = "Activer le retour du bouton DisLike de Youtube";
|
||||
"Enable Return YouTube Dislike" = "Activer le retour du bouton dislike de Youtube";
|
||||
"Enter fullscreen in landscape" = "Entrer en mode plein écran lors de la rotation en mode paysage";
|
||||
"Explicit reminders to like, subscribe or interact with them on any paid or free platform(s) (e.g. click on a video)." = "Rappel d'aimer la vidéo, de s'abonner ou d'intéragir avec le créateur sur une plateforme gratuite ou payante.";
|
||||
"Frontend URL" = "URL frontale";
|
||||
@@ -286,7 +286,7 @@
|
||||
"Lock portrait mode" = "Verrouille l'orientation en mode portrait";
|
||||
"Matrix Channel" = "Salon Matrix";
|
||||
"Only when signed in" = "Uniquement lorsque vous êtes connecté";
|
||||
"Opening audio stream..." = "Ouvrir le flux audio…";
|
||||
"Opening audio stream..." = "Ouverture du flux audio…";
|
||||
"Orientation" = "Orientation";
|
||||
|
||||
/* SponsorBlock category name */
|
||||
@@ -313,9 +313,9 @@
|
||||
"unknown" = "inconnu";
|
||||
"This information will be processed only on your device and used to connect you to the server in the specified country." = "Ces informations sont traitées uniquement sur votre appareil et utilisées pour vous connecter au serveur dans un pays spécifique.";
|
||||
"Share..." = "Partager…";
|
||||
"Restore default profiles..." = "Restaurer le profile par défaut…";
|
||||
"Restore default profiles..." = "Rétablir les profils par défaut...";
|
||||
"Reset watched status when playing again" = "Réinitialiser le status de visionnage lors d'une nouvelle lecture";
|
||||
"Share %@ link" = "Partager %@ lien";
|
||||
"Share %@ link" = "Partager le lien %@";
|
||||
"Show anonymous accounts" = "Afficher les comptes anonymes";
|
||||
"Show channel name" = "Afficher le nom de la chaine";
|
||||
"Show history" = "Afficher l'historique";
|
||||
@@ -338,14 +338,14 @@
|
||||
"Round corners" = "Coins arrondis";
|
||||
"Seek with horizontal swipe on video" = "Rechercher avec un glissement horizontal sur la vidéo";
|
||||
"Settings" = "Paramètres";
|
||||
"Share %@ link with time" = "Partager %@ lien avec le temps";
|
||||
"Share %@ link with time" = "Partager le lien %@ avec le temps";
|
||||
"Show account username" = "Afficher le nom d'utilisateur";
|
||||
"Show sidebar when space permits" = "Afficher la barre du côté quand l'espace le permet";
|
||||
"Show video length" = "Afficher la durée de la vidéo";
|
||||
"Shuffle" = "Aléatoire";
|
||||
"Shuffle All" = "Tout en aléatoire";
|
||||
"Could not refresh Subscriptions" = "Impossible de rafraichir les abonnements";
|
||||
"Increase rate" = "Augmenter le taux";
|
||||
"Increase rate" = "Augmenter la vitesse";
|
||||
"Issues Tracker" = "Suivi de problèmes";
|
||||
"You need to select an account\nto access %@ section" = "Vous avez besoin de sélectionner un compte\npour accéder à la section %@";
|
||||
"You can use automatic profile selection based on current device status or switch it in video playback settings controls." = "Vous pouvez utiliser une sélection automatique de profil basé sur le statut actuel de l'appareil ou le changer dans les paramètre de lecture vidéo.";
|
||||
@@ -379,12 +379,12 @@
|
||||
"For custom locations you can configure Frontend URL in Locations settings" = "Pour des instances personnalisées vous pouvez configurer l'URL frontale dans les paramètres d'instance";
|
||||
"This URL could not be opened" = "Cette URL ne peut pas être ouverte";
|
||||
"Could not open channel" = "Cette chaîne ne peut pas être ouverte";
|
||||
"Could not refresh Popular" = "Populaire ne peut pas être rafraîchi";
|
||||
"Could not refresh Popular" = "Impossible d'actualiser les tendances";
|
||||
"Could not create share link" = "Impossible de créer un lien de partage";
|
||||
"Could not load video" = "Impossible de charger la vidéo";
|
||||
"If you want this app to be available in your language, join translation project." = "Si vous voulez que cette application soit disponible dans votre langue, rejoignez le projet de traduction.";
|
||||
"Translations" = "Traductions";
|
||||
"Decrease rate" = "Diminuer le taux";
|
||||
"Decrease rate" = "Diminuer la vitesse";
|
||||
"Finding something to play..." = "Trouver quelque chose à jouer…";
|
||||
"That's nice to hear. It is fun to deliver apps other people want to use. You can consider donating to the project or help by contributing to new features development." = "Cela fait plaisir à entendre. C'est amusant de délivrer des apps que d'autres personnes veulent utiliser. Vous pouvez considérer faire un don au projet ou aider en contribuant au développement de nouvelles fonctionnalités.";
|
||||
"Typically near or at the end of the video when the credits pop up and/or endcards are shown." = "Typiquement proche de la fin de la vidéo, quand les crédits ou les cartes sont montré.";
|
||||
@@ -424,7 +424,7 @@
|
||||
"Milestones" = "Étapes";
|
||||
|
||||
/* Loading stream OSD */
|
||||
"Opening %@ stream..." = "Ouvrir le flux %@ …";
|
||||
"Opening %@ stream..." = "Ouverture du flux %@…";
|
||||
"Regular size" = "Taille normale";
|
||||
"Regular Size" = "Taille Normale";
|
||||
"Related" = "En relation";
|
||||
@@ -438,14 +438,14 @@
|
||||
"Buttons labels" = "Étiquettes des boutons";
|
||||
"Open" = "Ouvrir";
|
||||
"Only for local files and URLs" = "Uniquement pour les fichiers locaux et les URLs";
|
||||
"Share" = "Partage";
|
||||
"Share" = "Partager";
|
||||
"Enter links to open, one per line" = "Entrer les liens à ouvrir, un par ligne";
|
||||
"Always" = "Toujours";
|
||||
"Channels" = "Chaînes";
|
||||
"Open Files" = "Ouvrir les fichiers";
|
||||
"Recent History" = "Historique récent";
|
||||
"Show Favorites" = "Afficher les favoris";
|
||||
"Show Home" = "Afficher l'Accueil";
|
||||
"Show Home" = "Afficher l'accueil";
|
||||
"Home" = "Accueil";
|
||||
"Pages toolbar position" = "Position de la barre d’outils sur les pages";
|
||||
"Show Documents" = "Afficher les documents";
|
||||
@@ -454,51 +454,112 @@
|
||||
"Video Details" = "Details des vidéos";
|
||||
"Reload manifest" = "Recharger le manifest";
|
||||
"Clear Queue before opening" = "Effacer la file d’attente avant d’ouvrir";
|
||||
"Edit Favorites…" = "Éditer les favoris";
|
||||
"Edit Favorites…" = "Éditer les favoris…";
|
||||
"Pages buttons" = "Boutons des pages";
|
||||
"Could not open Files" = "Impossible d’ouvrir les fichiers";
|
||||
"Paste" = "Coller";
|
||||
"Open Videos" = "Ouvrir les vidéos";
|
||||
"Playback Mode" = "Mode Playback";
|
||||
"Playback Mode" = "Mode de lecture";
|
||||
"Add" = "Ajouter";
|
||||
"Hide" = "Cacher";
|
||||
"Size" = "";
|
||||
"Address" = "";
|
||||
"Could not delete document" = "";
|
||||
"Could not find any links to open in your clipboard" = "";
|
||||
"Center" = "";
|
||||
"Locations Manifest" = "";
|
||||
"Actions buttons" = "";
|
||||
"Sample Rate" = "";
|
||||
"FPS" = "";
|
||||
"Remove…" = "";
|
||||
"Live Streams" = "";
|
||||
"\"%@\" will be irreversibly removed from this device." = "";
|
||||
"Remove Location" = "";
|
||||
"Open Video" = "";
|
||||
"Video actions buttons" = "";
|
||||
"Documents" = "";
|
||||
"Show Open Videos toolbar button" = "";
|
||||
"File" = "";
|
||||
"Are you sure you want to remove this document?" = "";
|
||||
"Left" = "";
|
||||
"Shorts" = "";
|
||||
"Copy%@link" = "";
|
||||
"Verified" = "";
|
||||
"Show sidebar" = "";
|
||||
"Driver" = "";
|
||||
"Show Open Videos quick actions" = "";
|
||||
"Format" = "";
|
||||
"Are you sure you want to remove %@ location?" = "";
|
||||
"Show only icons" = "";
|
||||
"Audio" = "";
|
||||
"Size" = "Taille";
|
||||
"Address" = "Adresse";
|
||||
"Could not delete document" = "Impossible de supprimer le document";
|
||||
"Could not find any links to open in your clipboard" = "Aucun lien à ouvrir n'a pu être trouvé dans votre presse-papiers";
|
||||
"Center" = "Centre";
|
||||
"Locations Manifest" = "Manifest de l'emplacement";
|
||||
"Actions buttons" = "Boutons d’action";
|
||||
"Sample Rate" = "Taux d'échantillonnage";
|
||||
"FPS" = "FPS";
|
||||
"Remove…" = "Supprimer…";
|
||||
"Live Streams" = "Diffusions en direct";
|
||||
"\"%@\" will be irreversibly removed from this device." = "\"%@\" sera irréversiblement supprimé de cet appareil.";
|
||||
"Remove Location" = "Supprimer l’emplacement";
|
||||
"Open Video" = "Ouvrir la vidéo";
|
||||
"Video actions buttons" = "Boutons d'action vidéo";
|
||||
"Documents" = "Documents";
|
||||
"Show Open Videos toolbar button" = "Afficher le bouton de la barre d'outils Ouvrir les vidéos";
|
||||
"File" = "Fichier";
|
||||
"Are you sure you want to remove this document?" = "Êtes-vous sûr de vouloir supprimer ce document ?";
|
||||
"Left" = "Gauche";
|
||||
"Shorts" = "Shorts";
|
||||
"Copy%@link" = "Copier le lien %@";
|
||||
"Verified" = "Vérifiée";
|
||||
"Show sidebar" = "Afficher la barre latérale";
|
||||
"Driver" = "Driver";
|
||||
"Show Open Videos quick actions" = "Actions rapides Afficher les vidéos ouvertes";
|
||||
"Format" = "Format";
|
||||
"Are you sure you want to remove %@ location?" = "Êtes-vous sûr de vouloir supprimer l'emplacement %@ ?";
|
||||
"Show only icons" = "Afficher seulement les icônes";
|
||||
"Audio" = "Audio";
|
||||
"Share files from Finder on a Mac\nor iTunes on Windows" = "Partager des fichiers depuis Finder sur Mac\nou iTunes sur Windows";
|
||||
"Channel" = "";
|
||||
"Inspector visibility" = "";
|
||||
"Video" = "";
|
||||
"Right" = "";
|
||||
"Show icons and text when space permits" = "";
|
||||
"Codec" = "";
|
||||
"Default Profile" = "";
|
||||
"Playback history is empty" = "";
|
||||
"Share%@link" = "";
|
||||
"Channel" = "Chaîne";
|
||||
"Inspector visibility" = "Visibilité de l'inspecteur";
|
||||
"Video" = "Vidéo";
|
||||
"Right" = "Droite";
|
||||
"Show icons and text when space permits" = "Afficher les icônes et le texte lorsque l’espace le permet";
|
||||
"Codec" = "Codec";
|
||||
"Default Profile" = "Profil par défaut";
|
||||
"Playback history is empty" = "L'historique de lecture est vide";
|
||||
"Share%@link" = "Partager le lien %@";
|
||||
"Clear all" = "Tout effacer";
|
||||
"Hide player" = "Masquer le lecteur";
|
||||
"Close video" = "Fermer la vidéo";
|
||||
"Show cache status" = "Montrer l'état du cache";
|
||||
"Cache" = "Cache";
|
||||
"Maximum feed items" = "Nombres d'éléments maximum du flux";
|
||||
"Open channels with description expanded" = "Ouvrir les chaînes avec la description complète";
|
||||
"Are you sure you want to clear cache?" = "Voulez-vous vraiment vider le cache ?";
|
||||
"Right click channel thumbnail to open context menu with more actions" = "Effectuez un clic droit sur la miniature d'une chaîne pour ouvrir un menu contextuel avec plus d'actions";
|
||||
"Play next item" = "Jouer le prochain élément";
|
||||
"Lock orientation" = "Verrouiller l'orientation";
|
||||
"Subscribe/Unsubscribe" = "S'abonner/Se désabonner";
|
||||
"Total size: %@" = "Taille totale : %@";
|
||||
"Inspector" = "Inspecteur";
|
||||
"Open channel" = "Ouvrir la chaîne";
|
||||
"Feed" = "Flux";
|
||||
"Music Mode" = "Mode Musique";
|
||||
"Gesture: fowards" = "Geste : en avant";
|
||||
"Short videos: visible" = "Shorts : visible";
|
||||
"Mark channel feed as watched" = "Marquer le flux de chaînes comme regardé";
|
||||
"Short videos: hidden" = "Shorts : caché";
|
||||
"Mark channel feed as unwatched" = "Marquer le flux de chaînes comme non regardé";
|
||||
"Play all unwatched" = "Lire toutes les vidéos non visionnées";
|
||||
"Player Bar" = "Barre de lecture";
|
||||
"Double tap gesture" = "Geste de double pression";
|
||||
"Always show controls buttons" = "Toujours afficher les boutons de contrôle";
|
||||
"Tap and hold channel thumbnail to open context menu with more actions" = "Touchez et maintenez la miniature de la chaîne pour ouvrir le menu contextuel avec plus d'actions";
|
||||
"Gesture settings control skipping interval for double tap gesture on left/right side of the player. Changing system controls settings requires restart." = "Les paramètres des gestes contrôlent l'intervalle de saut pour les gestes de double pression sur le côté gauche/droit du lecteur. La modification des paramètres de contrôle du système nécessite un redémarrage.";
|
||||
"Gesture settings control skipping interval for double click on left/right side of the player. Changing system controls settings requires restart." = "Les paramètres des gestes contrôlent l'intervalle de saut pour le double clic sur le côté gauche/droit du lecteur. La modification des paramètres de contrôle du système nécessite un redémarrage.";
|
||||
"Gesture settings control skipping interval for remote arrow buttons (for 2nd generation Siri Remote or newer). Changing system controls settings requires restart." = "Les paramètres des gestes contrôlent l'intervalle de saut pour les boutons fléchés de la télécommande (pour la télécommande Siri de 2e génération ou plus récente). La modification des paramètres de contrôle du système nécessite un redémarrage.";
|
||||
"Open expanded" = "Ouvrir en grand";
|
||||
"Single tap gesture" = "Geste de simple pression";
|
||||
"Maximum width expanded" = "Largeur maximale étendue";
|
||||
"Show unwatched feed badges" = "Afficher les badges de flux non regardés";
|
||||
"Seeking" = "Recherche";
|
||||
"Controls Buttons" = "Boutons de contrôle";
|
||||
"System controls" = "Contrôles système";
|
||||
"Controls button: backwards" = "Bouton de contrôle : en arrière";
|
||||
"Controls button: forwards" = "Bouton de contrôle : en avant";
|
||||
"Gesture: backwards" = "Geste : en arrière";
|
||||
"Actions Buttons" = "Boutons d’action";
|
||||
"List" = "Liste";
|
||||
"Cells" = "Tuiles";
|
||||
"Show Next in Queue" = "Afficher la suivante dans la file";
|
||||
"Next in Queue" = "Suivante dans la file";
|
||||
"Do nothing" = "Ne rien faire";
|
||||
"Open video description expanded" = "Ouvrir la description de la vidéo";
|
||||
"Mark all as unwatched" = "Marquer toutes comme non regardées";
|
||||
"Mark all as watched" = "Marquer toutes comme regardées";
|
||||
"Queue - shuffled" = "File d'attente - mélangée";
|
||||
"Replay" = "Replay";
|
||||
"Description" = "Description";
|
||||
"Loop one" = "En boucle";
|
||||
"Playback Settings" = "Paramètres de lecture";
|
||||
"Autoplay next" = "Lecture automatique";
|
||||
"Stream" = "Flux";
|
||||
"Show toggle watch status button" = "Afficher le bouton d'état de visionnage";
|
||||
"Toggle size" = "Taille de bouton";
|
||||
"Toggle player" = "Activer le lecteur";
|
||||
"Fullscreen" = "Plein écran";
|
||||
"Lock" = "Verrouiller";
|
||||
|
||||
@@ -502,3 +502,36 @@
|
||||
"Shorts" = "Shorts";
|
||||
"Verified" = "Verificato";
|
||||
"Channel" = "Canale";
|
||||
"Maximum width expanded" = "Larghezza massima espansa";
|
||||
"Right click channel thumbnail to open context menu with more actions" = "Tasto destro sulla miniatura del canale per aprire il menù con più opzioni";
|
||||
"Actions Buttons" = "Pulsanti di azione";
|
||||
"Short videos: visible" = "Shorts: visibili";
|
||||
"Short videos: hidden" = "Shorts: nascosti";
|
||||
"Mark channel feed as unwatched" = "Contrassegna il feed del canale come non visto";
|
||||
"Play all unwatched" = "Riproduci tutti i non visti";
|
||||
"Double tap gesture" = "Gesto del doppio-tap";
|
||||
"Clear all" = "Pulisci tutto";
|
||||
"Close video" = "Chiudi video";
|
||||
"Maximum feed items" = "Massimo numero di items nel feed";
|
||||
"Open channels with description expanded" = "Apri canali con descrizione espansa";
|
||||
"Are you sure you want to clear cache?" = "Sei sicuro di voler cancellare la cache?";
|
||||
"Open expanded" = "Apri espandendo";
|
||||
"Mark channel feed as watched" = "Contrassegna il feed del canale come già visto";
|
||||
"Player Bar" = "Barra di scorrimento";
|
||||
"Tap and hold channel thumbnail to open context menu with more actions" = "Clicca e tieni premuto sulla miniatura del canale per aprire il menù con più opzioni";
|
||||
"Always show controls buttons" = "Mostra sempre i pulsanti per il controllo";
|
||||
"Single tap gesture" = "Gesto col singolo tocco";
|
||||
"Gesture: fowards" = "Gesto: in avanti";
|
||||
"Controls Buttons" = "Pulsanti di controllo";
|
||||
"System controls" = "Controlli di sistema";
|
||||
"Controls button: backwards" = "Pulsanti di controllo: indietro";
|
||||
"Controls button: forwards" = "Pulsanti di controllo: in avanti";
|
||||
"Gesture: backwards" = "Gesto: indietro";
|
||||
"Hide player" = "Nascondi player";
|
||||
"Play next item" = "Riproduci il prossimo";
|
||||
"Lock orientation" = "Blocca orientamento";
|
||||
"Music Mode" = "Modalità Musica";
|
||||
"Total size: %@" = "Dimensione totale: %@";
|
||||
"Cache" = "Cache";
|
||||
"Subscribe/Unsubscribe" = "Iscriviti/Disiscriviti";
|
||||
"Show cache status" = "Mostra stato della cache";
|
||||
|
||||
@@ -690,8 +690,6 @@
|
||||
37A362C229537FED00BDF328 /* PlaybackSettingsPresentationDetents+Backport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A362C129537FED00BDF328 /* PlaybackSettingsPresentationDetents+Backport.swift */; };
|
||||
37A362C329537FED00BDF328 /* PlaybackSettingsPresentationDetents+Backport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A362C129537FED00BDF328 /* PlaybackSettingsPresentationDetents+Backport.swift */; };
|
||||
37A362C429537FED00BDF328 /* PlaybackSettingsPresentationDetents+Backport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A362C129537FED00BDF328 /* PlaybackSettingsPresentationDetents+Backport.swift */; };
|
||||
37A5DBC4285DFF5400CA4DD1 /* SwiftUIPager in Frameworks */ = {isa = PBXBuildFile; productRef = 37A5DBC3285DFF5400CA4DD1 /* SwiftUIPager */; };
|
||||
37A5DBC6285E06B100CA4DD1 /* SwiftUIPager in Frameworks */ = {isa = PBXBuildFile; productRef = 37A5DBC5285E06B100CA4DD1 /* SwiftUIPager */; };
|
||||
37A5DBC8285E371400CA4DD1 /* ControlBackgroundModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A5DBC7285E371400CA4DD1 /* ControlBackgroundModifier.swift */; };
|
||||
37A5DBC9285E371400CA4DD1 /* ControlBackgroundModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A5DBC7285E371400CA4DD1 /* ControlBackgroundModifier.swift */; };
|
||||
37A5DBCA285E371400CA4DD1 /* ControlBackgroundModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A5DBC7285E371400CA4DD1 /* ControlBackgroundModifier.swift */; };
|
||||
@@ -922,7 +920,6 @@
|
||||
37E80F3C287B107F00561799 /* VideoDetailsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E80F3B287B107F00561799 /* VideoDetailsOverlay.swift */; };
|
||||
37E80F3D287B107F00561799 /* VideoDetailsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E80F3B287B107F00561799 /* VideoDetailsOverlay.swift */; };
|
||||
37E80F40287B472300561799 /* ScrollContentBackground+Backport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E80F3F287B472300561799 /* ScrollContentBackground+Backport.swift */; };
|
||||
37E80F43287B7AAF00561799 /* SwiftUIPager in Frameworks */ = {isa = PBXBuildFile; productRef = 37E80F42287B7AAF00561799 /* SwiftUIPager */; };
|
||||
37E80F45287B7AC000561799 /* ControlsBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372CFD14285F2E2A00B0B54B /* ControlsBar.swift */; };
|
||||
37E80F46287B7AEC00561799 /* PlayerQueueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37CC3F4B270CFE1700608308 /* PlayerQueueView.swift */; };
|
||||
37E8B0EC27B326C00024006F /* TimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E8B0EB27B326C00024006F /* TimelineView.swift */; };
|
||||
@@ -1580,7 +1577,6 @@
|
||||
37BD07C72698B27B003EBB87 /* Introspect in Frameworks */,
|
||||
3736A202286BB72300C9E5EE /* libfribidi.xcframework in Frameworks */,
|
||||
37FB284D2722099E00A57617 /* SDWebImageWebPCoder in Frameworks */,
|
||||
37A5DBC4285DFF5400CA4DD1 /* SwiftUIPager in Frameworks */,
|
||||
3736A208286BB72300C9E5EE /* libcrypto.xcframework in Frameworks */,
|
||||
37CF8B8428535E4F00B71E37 /* SDWebImage in Frameworks */,
|
||||
3736A20E286BB72300C9E5EE /* libass.xcframework in Frameworks */,
|
||||
@@ -1622,7 +1618,6 @@
|
||||
370F4FCA27CC16CB001B35DC /* libXau.6.dylib in Frameworks */,
|
||||
370F4FD527CC16CB001B35DC /* libfontconfig.1.dylib in Frameworks */,
|
||||
375B8AB728B583BD00397B31 /* KeychainAccess in Frameworks */,
|
||||
37A5DBC6285E06B100CA4DD1 /* SwiftUIPager in Frameworks */,
|
||||
370F4FCE27CC16CB001B35DC /* libswresample.4.3.100.dylib in Frameworks */,
|
||||
370F4FDA27CC16CB001B35DC /* libmpv.dylib in Frameworks */,
|
||||
370F4FD827CC16CB001B35DC /* libcrypto.3.dylib in Frameworks */,
|
||||
@@ -1691,7 +1686,6 @@
|
||||
3772003A27E8EEBE00CB2475 /* CoreMedia.framework in Frameworks */,
|
||||
372915E42687E33E00F5A35B /* Defaults in Frameworks */,
|
||||
3772003B27E8EEC800CB2475 /* libbz2.tbd in Frameworks */,
|
||||
37E80F43287B7AAF00561799 /* SwiftUIPager in Frameworks */,
|
||||
37BADCA9269A570B009BE4FB /* Alamofire in Frameworks */,
|
||||
37D4B19D2671817900C925CA /* SwiftyJSON in Frameworks */,
|
||||
3797757D268922D100DD52A8 /* Siesta in Frameworks */,
|
||||
@@ -2599,7 +2593,6 @@
|
||||
37FB285527220D9000A57617 /* SDWebImagePINPlugin */,
|
||||
3765917B27237D21009F956E /* PINCache */,
|
||||
37CF8B8328535E4F00B71E37 /* SDWebImage */,
|
||||
37A5DBC3285DFF5400CA4DD1 /* SwiftUIPager */,
|
||||
372AA40F286D067B0000B1DC /* Repeat */,
|
||||
37EE6DC428A305AD00BFD632 /* Reachability */,
|
||||
3799AC0828B03CED001376F9 /* ActiveLabel */,
|
||||
@@ -2639,7 +2632,6 @@
|
||||
3703206727D2BB45007A0CB8 /* Defaults */,
|
||||
3703206927D2BB49007A0CB8 /* Alamofire */,
|
||||
37CF8B8528535E5A00B71E37 /* SDWebImage */,
|
||||
37A5DBC5285E06B100CA4DD1 /* SwiftUIPager */,
|
||||
372AA413286D06A10000B1DC /* Repeat */,
|
||||
375B8AB628B583BD00397B31 /* KeychainAccess */,
|
||||
3797104A28D3D18800D5F53C /* SDWebImageSwiftUI */,
|
||||
@@ -2718,7 +2710,6 @@
|
||||
3765917D27237D2A009F956E /* PINCache */,
|
||||
37CF8B8728535E6300B71E37 /* SDWebImage */,
|
||||
372AA411286D06950000B1DC /* Repeat */,
|
||||
37E80F42287B7AAF00561799 /* SwiftUIPager */,
|
||||
3732BFCF28B83763009F3F4D /* KeychainAccess */,
|
||||
3797104C28D3D19100D5F53C /* SDWebImageSwiftUI */,
|
||||
377F9F75294403880043F856 /* Cache */,
|
||||
@@ -2830,7 +2821,6 @@
|
||||
37FB285227220D8400A57617 /* XCRemoteSwiftPackageReference "SDWebImagePINPlugin" */,
|
||||
3765917827237D07009F956E /* XCRemoteSwiftPackageReference "PINCache" */,
|
||||
37CF8B8228535E4F00B71E37 /* XCRemoteSwiftPackageReference "SDWebImage" */,
|
||||
37A5DBC2285DFF5400CA4DD1 /* XCRemoteSwiftPackageReference "SwiftUIPager" */,
|
||||
372AA40E286D067B0000B1DC /* XCRemoteSwiftPackageReference "Repeat" */,
|
||||
37EE6DC328A305AD00BFD632 /* XCRemoteSwiftPackageReference "Reachability" */,
|
||||
3799AC0728B03CEC001376F9 /* XCRemoteSwiftPackageReference "ActiveLabel.swift" */,
|
||||
@@ -3972,7 +3962,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "Open in Yattee/Open in Yattee.entitlements";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "Open in Yattee/Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Open in Yattee";
|
||||
@@ -3983,7 +3973,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "stream.yattee.app.Open-in-Yattee";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
@@ -4003,7 +3993,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "Open in Yattee/Info.plist";
|
||||
@@ -4015,7 +4005,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "stream.yattee.app.Open-in-Yattee";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
@@ -4034,11 +4024,11 @@
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "net.arekf.Shared-Tests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = auto;
|
||||
@@ -4054,11 +4044,11 @@
|
||||
buildSettings = {
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "net.arekf.Shared-Tests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = auto;
|
||||
@@ -4214,7 +4204,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "iOS/Yattee (iOS).entitlements";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
@@ -4238,7 +4228,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
OTHER_LDFLAGS = (
|
||||
"-lstdc++",
|
||||
"-Wl,-no_compact_unwind",
|
||||
@@ -4267,7 +4257,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 78Z5H3M6RJ;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "GLES_SILENCE_DEPRECATION=1";
|
||||
@@ -4288,7 +4278,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
OTHER_LDFLAGS = (
|
||||
"-lstdc++",
|
||||
"-Wl,-no_compact_unwind",
|
||||
@@ -4319,7 +4309,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
ENABLE_APP_SANDBOX = YES;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
@@ -4338,7 +4328,7 @@
|
||||
"$(PROJECT_DIR)/Vendor/mpv/macOS/lib",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||
PRODUCT_NAME = Yattee;
|
||||
@@ -4361,7 +4351,7 @@
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = 78Z5H3M6RJ;
|
||||
ENABLE_APP_SANDBOX = YES;
|
||||
@@ -4381,7 +4371,7 @@
|
||||
"$(PROJECT_DIR)/Vendor/mpv/macOS/lib",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
OTHER_LDFLAGS = "-Wl,-no_compact_unwind";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||
PRODUCT_NAME = Yattee;
|
||||
@@ -4399,7 +4389,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -4407,7 +4397,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "stream.yattee.Tests-iOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -4423,7 +4413,7 @@
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -4431,7 +4421,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "stream.yattee.Tests-iOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = iphoneos;
|
||||
@@ -4449,7 +4439,7 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -4458,7 +4448,7 @@
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.0;
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "stream.yattee.Tests-macOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = macosx;
|
||||
@@ -4474,7 +4464,7 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -4483,7 +4473,7 @@
|
||||
"@loader_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.0;
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "stream.yattee.Tests-macOS";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = macosx;
|
||||
@@ -4500,7 +4490,7 @@
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -4516,7 +4506,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
OTHER_LDFLAGS = (
|
||||
"-Wl,-no_compact_unwind",
|
||||
"-lstdc++",
|
||||
@@ -4540,7 +4530,7 @@
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "iPhone Distribution";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
"DEVELOPMENT_TEAM[sdk=appletvos*]" = 78Z5H3M6RJ;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -4557,7 +4547,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
OTHER_LDFLAGS = (
|
||||
"-Wl,-no_compact_unwind",
|
||||
"-lstdc++",
|
||||
@@ -4581,14 +4571,14 @@
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.YatteeUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = appletvos;
|
||||
@@ -4605,14 +4595,14 @@
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 142;
|
||||
CURRENT_PROJECT_VERSION = 145;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.4.3;
|
||||
MARKETING_VERSION = 1.4.4;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.YatteeUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = appletvos;
|
||||
@@ -4855,14 +4845,6 @@
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
37A5DBC2285DFF5400CA4DD1 /* XCRemoteSwiftPackageReference "SwiftUIPager" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/fermoya/SwiftUIPager.git";
|
||||
requirement = {
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 2.0.0;
|
||||
};
|
||||
};
|
||||
37BADCA32699FB72009BE4FB /* XCRemoteSwiftPackageReference "Alamofire" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/Alamofire/Alamofire.git";
|
||||
@@ -5112,16 +5094,6 @@
|
||||
package = 3799AC0728B03CEC001376F9 /* XCRemoteSwiftPackageReference "ActiveLabel.swift" */;
|
||||
productName = ActiveLabel;
|
||||
};
|
||||
37A5DBC3285DFF5400CA4DD1 /* SwiftUIPager */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 37A5DBC2285DFF5400CA4DD1 /* XCRemoteSwiftPackageReference "SwiftUIPager" */;
|
||||
productName = SwiftUIPager;
|
||||
};
|
||||
37A5DBC5285E06B100CA4DD1 /* SwiftUIPager */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 37A5DBC2285DFF5400CA4DD1 /* XCRemoteSwiftPackageReference "SwiftUIPager" */;
|
||||
productName = SwiftUIPager;
|
||||
};
|
||||
37BADCA42699FB72009BE4FB /* Alamofire */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 37BADCA32699FB72009BE4FB /* XCRemoteSwiftPackageReference "Alamofire" */;
|
||||
@@ -5167,11 +5139,6 @@
|
||||
package = 37D4B19B2671817900C925CA /* XCRemoteSwiftPackageReference "SwiftyJSON" */;
|
||||
productName = SwiftyJSON;
|
||||
};
|
||||
37E80F42287B7AAF00561799 /* SwiftUIPager */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 37A5DBC2285DFF5400CA4DD1 /* XCRemoteSwiftPackageReference "SwiftUIPager" */;
|
||||
productName = SwiftUIPager;
|
||||
};
|
||||
37EE6DC428A305AD00BFD632 /* Reachability */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 37EE6DC328A305AD00BFD632 /* XCRemoteSwiftPackageReference "Reachability" */;
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
"location" : "https://github.com/SDWebImage/SDWebImage",
|
||||
"state" : {
|
||||
"branch" : "master",
|
||||
"revision" : "a549e9992293e5be2b3fab2df110ad5ac61f6661"
|
||||
"revision" : "09f0fdd1890b7c9420109bc7b45dcee91b66b7de"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -113,8 +113,8 @@
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/SDWebImage/SDWebImageSwiftUI.git",
|
||||
"state" : {
|
||||
"revision" : "61fefe9c284fd41ddef77d02749e88f00c305196",
|
||||
"version" : "2.2.2"
|
||||
"revision" : "e837c37d45449fbd3b4745c10c5b5274e73edead",
|
||||
"version" : "2.2.3"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -162,15 +162,6 @@
|
||||
"version" : "0.2.3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swiftuipager",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/fermoya/SwiftUIPager.git",
|
||||
"state" : {
|
||||
"revision" : "4ddc04c801aac143090bb14cf26603a3bf9c74cb",
|
||||
"version" : "2.5.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"identity" : "swiftyjson",
|
||||
"kind" : "remoteSourceControl",
|
||||
|
||||
Reference in New Issue
Block a user