mirror of
https://github.com/yattee/yattee.git
synced 2025-12-13 19:48:14 +00:00
Compare commits
13 Commits
v1.3-beta.
...
v1.3.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f263efeb2 | ||
|
|
a98b4eac83 | ||
|
|
975b8fe5c3 | ||
|
|
33e86710a8 | ||
|
|
96f4e819a7 | ||
|
|
8ab97ddbaf | ||
|
|
df72bf99ba | ||
|
|
db4a817164 | ||
|
|
ce8a8cbef3 | ||
|
|
a04827cc56 | ||
|
|
534f356471 | ||
|
|
5050ad5d02 | ||
|
|
ca38133b1d |
@@ -47,7 +47,7 @@ final class NavigationModel: ObservableObject {
|
|||||||
recents: RecentsModel,
|
recents: RecentsModel,
|
||||||
navigation: NavigationModel,
|
navigation: NavigationModel,
|
||||||
navigationStyle: NavigationStyle,
|
navigationStyle: NavigationStyle,
|
||||||
delay: Bool = false
|
delay: Bool = true
|
||||||
) {
|
) {
|
||||||
let recent = RecentItem(from: channel)
|
let recent = RecentItem(from: channel)
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ final class PlayerModel: ObservableObject {
|
|||||||
@Published var streamSelection: Stream? { didSet { rebuildTVMenu() } }
|
@Published var streamSelection: Stream? { didSet { rebuildTVMenu() } }
|
||||||
|
|
||||||
@Published var queue = [PlayerQueueItem]() { didSet { Defaults[.queue] = queue } }
|
@Published var queue = [PlayerQueueItem]() { didSet { Defaults[.queue] = queue } }
|
||||||
@Published var currentItem: PlayerQueueItem! { didSet { updateWindowTitle() } }
|
@Published var currentItem: PlayerQueueItem! { didSet { handleCurrentItemChange() } }
|
||||||
@Published var historyVideos = [Video]()
|
@Published var historyVideos = [Video]()
|
||||||
|
|
||||||
@Published var preservedTime: CMTime?
|
@Published var preservedTime: CMTime?
|
||||||
@@ -804,10 +804,12 @@ final class PlayerModel: ObservableObject {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
func updateWindowTitle() {
|
func handleCurrentItemChange() {
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
Windows.player.window?.title = windowTitle
|
Windows.player.window?.title = windowTitle
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Defaults[.lastPlayed] = currentItem
|
||||||
}
|
}
|
||||||
|
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
|
|||||||
@@ -95,7 +95,9 @@ extension PlayerModel {
|
|||||||
|
|
||||||
switch quality {
|
switch quality {
|
||||||
case .best:
|
case .best:
|
||||||
return streams.first { $0.kind == .hls } ?? streams.first
|
return streams.first { $0.kind == .hls } ??
|
||||||
|
streams.filter { $0.kind == .stream }.max { $0.resolution < $1.resolution } ??
|
||||||
|
streams.first
|
||||||
default:
|
default:
|
||||||
let sorted = streams.filter { $0.kind != .hls }.sorted { $0.resolution > $1.resolution }
|
let sorted = streams.filter { $0.kind != .hls }.sorted { $0.resolution > $1.resolution }
|
||||||
return sorted.first(where: { $0.resolution.height <= quality.value.height })
|
return sorted.first(where: { $0.resolution.height <= quality.value.height })
|
||||||
@@ -201,4 +203,21 @@ extension PlayerModel {
|
|||||||
func removeQueueItems() {
|
func removeQueueItems() {
|
||||||
queue.removeAll()
|
queue.removeAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func restoreQueue() {
|
||||||
|
guard !accounts.current.isNil else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
queue = ([Defaults[.lastPlayed]] + Defaults[.queue]).compactMap { $0 }
|
||||||
|
Defaults[.lastPlayed] = nil
|
||||||
|
|
||||||
|
queue.forEach { item in
|
||||||
|
accounts.api.loadDetails(item) { newItem in
|
||||||
|
if let index = self.queue.firstIndex(where: { $0.id == item.id }) {
|
||||||
|
self.queue[index] = newItem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,8 +34,9 @@ final class RecentsModel: ObservableObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func addQuery(_ query: String) {
|
func addQuery(_ query: String, navigation: NavigationModel? = nil) {
|
||||||
if !query.isEmpty {
|
if !query.isEmpty {
|
||||||
|
navigation?.tabSelection = .search
|
||||||
add(.init(from: query))
|
add(.init(from: query))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img src="https://r.yattee.stream/icons/yattee-150.png" width="150" height="150" alt="Yattee logo">
|
<img src="https://r.yattee.stream/icons/yattee-150.png" width="150" height="150" alt="Yattee logo">
|
||||||
<h1>Yattee</h1>
|
<h1>Yattee</h1>
|
||||||
<p>Videos browser and player for <a href="https://github.com/iv-org/invidious">Invidious</a> and <a href="https://github.com/TeamPiped/Piped">Piped</a> (alternative, privacy-friendly YouTube frontends)<br />built for iOS, tvOS and macOS.</p>
|
<p>Alternative YouTube frontend for iOS, tvOS and macOS<br />built with <a href="https://github.com/iv-org/invidious">Invidious</a> and <a href="https://github.com/TeamPiped/Piped">Piped</a></p>
|
||||||
|
|
||||||
[](https://www.gnu.org/licenses/agpl-3.0.en.html)
|
[](https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||||
[](https://github.com/yattee/yattee/issues)
|
[](https://github.com/yattee/yattee/issues)
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ extension Defaults.Keys {
|
|||||||
static let recentlyOpened = Key<[RecentItem]>("recentlyOpened", default: [])
|
static let recentlyOpened = Key<[RecentItem]>("recentlyOpened", default: [])
|
||||||
|
|
||||||
static let queue = Key<[PlayerQueueItem]>("queue", default: [])
|
static let queue = Key<[PlayerQueueItem]>("queue", default: [])
|
||||||
|
static let lastPlayed = Key<PlayerQueueItem?>("lastPlayed")
|
||||||
|
|
||||||
static let saveHistory = Key<Bool>("saveHistory", default: true)
|
static let saveHistory = Key<Bool>("saveHistory", default: true)
|
||||||
static let showWatchingProgress = Key<Bool>("showWatchingProgress", default: true)
|
static let showWatchingProgress = Key<Bool>("showWatchingProgress", default: true)
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ private struct CurrentPlaylistID: EnvironmentKey {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private struct LoadMoreContentHandler: EnvironmentKey {
|
private struct LoadMoreContentHandler: EnvironmentKey {
|
||||||
static let defaultValue: LoadMoreContentHandlerClosure = { print("infinite load") }
|
static let defaultValue: LoadMoreContentHandlerType = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
typealias LoadMoreContentHandlerClosure = () -> Void
|
typealias LoadMoreContentHandlerType = () -> Void
|
||||||
|
|
||||||
extension EnvironmentValues {
|
extension EnvironmentValues {
|
||||||
var inNavigationView: Bool {
|
var inNavigationView: Bool {
|
||||||
@@ -66,7 +66,7 @@ extension EnvironmentValues {
|
|||||||
set { self[CurrentPlaylistID.self] = newValue }
|
set { self[CurrentPlaylistID.self] = newValue }
|
||||||
}
|
}
|
||||||
|
|
||||||
var loadMoreContentHandler: LoadMoreContentHandlerClosure {
|
var loadMoreContentHandler: LoadMoreContentHandlerType {
|
||||||
get { self[LoadMoreContentHandler.self] }
|
get { self[LoadMoreContentHandler.self] }
|
||||||
set { self[LoadMoreContentHandler.self] = newValue }
|
set { self[LoadMoreContentHandler.self] = newValue }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ final class FavoriteResourceObserver: ObservableObject, ResourceObserver {
|
|||||||
contentItems = playlist.videos.map { ContentItem(video: $0) }
|
contentItems = playlist.videos.map { ContentItem(video: $0) }
|
||||||
} else if let playlist: Playlist = resource.typedContent() {
|
} else if let playlist: Playlist = resource.typedContent() {
|
||||||
contentItems = playlist.videos.map { ContentItem(video: $0) }
|
contentItems = playlist.videos.map { ContentItem(video: $0) }
|
||||||
|
} else if let page: SearchPage = resource.typedContent() {
|
||||||
|
contentItems = page.results
|
||||||
} else if let items: [ContentItem] = resource.typedContent() {
|
} else if let items: [ContentItem] = resource.typedContent() {
|
||||||
contentItems = items
|
contentItems = items
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ struct MenuCommands: Commands {
|
|||||||
Button("Popular") {
|
Button("Popular") {
|
||||||
model.navigation?.tabSelection = .popular
|
model.navigation?.tabSelection = .popular
|
||||||
}
|
}
|
||||||
.disabled(!(model.accounts?.app.supportsPopular ?? true))
|
.disabled(!(model.accounts?.app.supportsPopular ?? false))
|
||||||
.keyboardShortcut("3")
|
.keyboardShortcut("3")
|
||||||
|
|
||||||
Button("Trending") {
|
Button("Trending") {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ struct AppTabNavigation: View {
|
|||||||
trendingNavigationView
|
trendingNavigationView
|
||||||
}
|
}
|
||||||
|
|
||||||
if visibleSections.contains(.playlists), accounts.app.supportsUserPlaylists {
|
if playlistsVisible {
|
||||||
playlistsNavigationView
|
playlistsNavigationView
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,6 +118,11 @@ struct AppTabNavigation: View {
|
|||||||
accounts.app.supportsSubscriptions && !(accounts.current?.anonymous ?? true)
|
accounts.app.supportsSubscriptions && !(accounts.current?.anonymous ?? true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var playlistsVisible: Bool {
|
||||||
|
visibleSections.contains(.playlists) &&
|
||||||
|
accounts.app.supportsUserPlaylists && !(accounts.current?.anonymous ?? true)
|
||||||
|
}
|
||||||
|
|
||||||
private var popularNavigationView: some View {
|
private var popularNavigationView: some View {
|
||||||
NavigationView {
|
NavigationView {
|
||||||
LazyView(PopularView())
|
LazyView(PopularView())
|
||||||
|
|||||||
@@ -139,6 +139,10 @@ struct ContentView: View {
|
|||||||
player.accounts = accounts
|
player.accounts = accounts
|
||||||
player.comments = comments
|
player.comments = comments
|
||||||
|
|
||||||
|
if !accounts.current.isNil {
|
||||||
|
player.restoreQueue()
|
||||||
|
}
|
||||||
|
|
||||||
if !Defaults[.saveRecents] {
|
if !Defaults[.saveRecents] {
|
||||||
recents.clear()
|
recents.clear()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import SwiftUI
|
|||||||
|
|
||||||
struct VideoDetails: View {
|
struct VideoDetails: View {
|
||||||
enum Page {
|
enum Page {
|
||||||
case info, queue, related, comments
|
case info, comments, related, queue
|
||||||
}
|
}
|
||||||
|
|
||||||
@Binding var sidebarQueue: Bool
|
@Binding var sidebarQueue: Bool
|
||||||
@@ -129,7 +129,7 @@ struct VideoDetails: View {
|
|||||||
}
|
}
|
||||||
.onChange(of: sidebarQueue) { queue in
|
.onChange(of: sidebarQueue) { queue in
|
||||||
if queue {
|
if queue {
|
||||||
if currentPage == .queue {
|
if currentPage == .related || currentPage == .queue {
|
||||||
currentPage = .info
|
currentPage = .info
|
||||||
}
|
}
|
||||||
} else if video.isNil {
|
} else if video.isNil {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import SwiftUI
|
|||||||
struct SearchTextField: View {
|
struct SearchTextField: View {
|
||||||
@Environment(\.navigationStyle) private var navigationStyle
|
@Environment(\.navigationStyle) private var navigationStyle
|
||||||
|
|
||||||
|
@EnvironmentObject<NavigationModel> private var navigation
|
||||||
@EnvironmentObject<RecentsModel> private var recents
|
@EnvironmentObject<RecentsModel> private var recents
|
||||||
@EnvironmentObject<SearchModel> private var state
|
@EnvironmentObject<SearchModel> private var state
|
||||||
|
|
||||||
@@ -29,7 +30,7 @@ struct SearchTextField: View {
|
|||||||
#endif
|
#endif
|
||||||
TextField("Search...", text: $state.queryText) {
|
TextField("Search...", text: $state.queryText) {
|
||||||
state.changeQuery { query in query.query = state.queryText }
|
state.changeQuery { query in query.query = state.queryText }
|
||||||
recents.addQuery(state.queryText)
|
recents.addQuery(state.queryText, navigation: navigation)
|
||||||
}
|
}
|
||||||
.onChange(of: state.queryText) { _ in
|
.onChange(of: state.queryText) { _ in
|
||||||
if state.query.query.compare(state.queryText, options: .caseInsensitive) == .orderedSame {
|
if state.query.query.compare(state.queryText, options: .caseInsensitive) == .orderedSame {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct SearchSuggestions: View {
|
struct SearchSuggestions: View {
|
||||||
|
@EnvironmentObject<NavigationModel> private var navigation
|
||||||
@EnvironmentObject<RecentsModel> private var recents
|
@EnvironmentObject<RecentsModel> private var recents
|
||||||
@EnvironmentObject<SearchModel> private var state
|
@EnvironmentObject<SearchModel> private var state
|
||||||
|
|
||||||
@@ -30,10 +31,12 @@ struct SearchSuggestions: View {
|
|||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "magnifyingglass")
|
Image(systemName: "magnifyingglass")
|
||||||
HStack(spacing: 0) {
|
HStack(spacing: 0) {
|
||||||
Text(state.suggestionsText)
|
if suggestion.hasPrefix(state.suggestionsText.lowercased()) {
|
||||||
|
Text(state.suggestionsText.lowercased())
|
||||||
.lineLimit(1)
|
.lineLimit(1)
|
||||||
.layoutPriority(2)
|
.layoutPriority(2)
|
||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
|
}
|
||||||
|
|
||||||
Text(querySuffix(suggestion))
|
Text(querySuffix(suggestion))
|
||||||
.lineLimit(1)
|
.lineLimit(1)
|
||||||
@@ -74,7 +77,7 @@ struct SearchSuggestions: View {
|
|||||||
state.fieldIsFocused = false
|
state.fieldIsFocused = false
|
||||||
}
|
}
|
||||||
|
|
||||||
recents.addQuery(state.queryText)
|
recents.addQuery(state.queryText, navigation: navigation)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var visibleSuggestions: [String] {
|
private var visibleSuggestions: [String] {
|
||||||
|
|||||||
@@ -177,11 +177,40 @@ struct SearchView: View {
|
|||||||
.navigationTitle("Search")
|
.navigationTitle("Search")
|
||||||
#endif
|
#endif
|
||||||
#if os(iOS)
|
#if os(iOS)
|
||||||
.navigationBarHidden(!Defaults[.visibleSections].isEmpty || navigationStyle == .sidebar)
|
.navigationBarHidden(navigationBarHidden)
|
||||||
.navigationBarTitleDisplayMode(.inline)
|
.navigationBarTitleDisplayMode(.inline)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var navigationBarHidden: Bool {
|
||||||
|
if navigationStyle == .sidebar {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
let preferred = Defaults[.visibleSections]
|
||||||
|
var visibleSections = [VisibleSection]()
|
||||||
|
|
||||||
|
if accounts.app.supportsPopular && preferred.contains(.popular) {
|
||||||
|
visibleSections.append(.popular)
|
||||||
|
}
|
||||||
|
|
||||||
|
if accounts.app.supportsSubscriptions && accounts.signedIn && preferred.contains(.subscriptions) {
|
||||||
|
visibleSections.append(.subscriptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
if accounts.app.supportsUserPlaylists && preferred.contains(.playlists) {
|
||||||
|
visibleSections.append(.playlists)
|
||||||
|
}
|
||||||
|
|
||||||
|
[VisibleSection.favorites, .trending].forEach { section in
|
||||||
|
if preferred.contains(section) {
|
||||||
|
visibleSections.append(section)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return !visibleSections.isEmpty
|
||||||
|
}
|
||||||
|
|
||||||
private var results: some View {
|
private var results: some View {
|
||||||
VStack {
|
VStack {
|
||||||
if showRecentQueries {
|
if showRecentQueries {
|
||||||
|
|||||||
@@ -2458,7 +2458,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 = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -2471,7 +2471,7 @@
|
|||||||
"@executable_path/../../../../Frameworks",
|
"@executable_path/../../../../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"-framework",
|
"-framework",
|
||||||
SafariServices,
|
SafariServices,
|
||||||
@@ -2492,7 +2492,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 = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -2505,7 +2505,7 @@
|
|||||||
"@executable_path/../../../../Frameworks",
|
"@executable_path/../../../../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"-framework",
|
"-framework",
|
||||||
SafariServices,
|
SafariServices,
|
||||||
@@ -2524,7 +2524,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 = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = "Open in Yattee/Info.plist";
|
INFOPLIST_FILE = "Open in Yattee/Info.plist";
|
||||||
@@ -2536,7 +2536,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"-framework",
|
"-framework",
|
||||||
SafariServices,
|
SafariServices,
|
||||||
@@ -2556,7 +2556,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 = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = "Open in Yattee/Info.plist";
|
INFOPLIST_FILE = "Open in Yattee/Info.plist";
|
||||||
@@ -2568,7 +2568,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"-framework",
|
"-framework",
|
||||||
SafariServices,
|
SafariServices,
|
||||||
@@ -2719,7 +2719,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -2735,7 +2735,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||||
PRODUCT_NAME = Yattee;
|
PRODUCT_NAME = Yattee;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
@@ -2751,7 +2751,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
@@ -2767,7 +2767,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||||
PRODUCT_NAME = Yattee;
|
PRODUCT_NAME = Yattee;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
@@ -2787,7 +2787,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 = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_APP_SANDBOX = YES;
|
ENABLE_APP_SANDBOX = YES;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
@@ -2802,7 +2802,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||||
PRODUCT_NAME = Yattee;
|
PRODUCT_NAME = Yattee;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
@@ -2820,7 +2820,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 = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_APP_SANDBOX = YES;
|
ENABLE_APP_SANDBOX = YES;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
@@ -2835,7 +2835,7 @@
|
|||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
MACOSX_DEPLOYMENT_TARGET = 11.0;
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||||
PRODUCT_NAME = Yattee;
|
PRODUCT_NAME = Yattee;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
@@ -2951,7 +2951,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
|
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -2966,7 +2966,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||||
PRODUCT_NAME = Yattee;
|
PRODUCT_NAME = Yattee;
|
||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
@@ -2983,7 +2983,7 @@
|
|||||||
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
|
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 15;
|
CURRENT_PROJECT_VERSION = 18;
|
||||||
DEVELOPMENT_ASSET_PATHS = "";
|
DEVELOPMENT_ASSET_PATHS = "";
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -2998,7 +2998,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.3;
|
MARKETING_VERSION = 1.3.1;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
|
||||||
PRODUCT_NAME = Yattee;
|
PRODUCT_NAME = Yattee;
|
||||||
SDKROOT = appletvos;
|
SDKROOT = appletvos;
|
||||||
|
|||||||
Reference in New Issue
Block a user