fix(ios): resolve Swift compile errors for iOS 26 / Xcode 26
- Fix CloudKitSyncManager deinit concurrency violation - Replace deprecated List(selection:) with VStack+ForEach sidebar - Replace removed Animation.none with Animation.linear(duration: 0) - Fix CountdownRing initializer parameter mismatch - Unwrap optional timer.duration in ShareableTimerManager and DataExportManager - Add missing .event case to exhaustive switch - Change CascadeWarning.scheduledTime from let to var - Fix CalendarSyncManager CMTimer init (add elapsedBeforePause, remove non-existent params) - Add missing UserNotifications import in SleepManager - Remove parameterized App Intents phrases (iOS 26 restriction) - Temporarily remove watchOS target dependency for iOS build
This commit is contained in:
parent
403d35e016
commit
424e804396
File diff suppressed because it is too large
Load Diff
@ -35,6 +35,20 @@
|
|||||||
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "7028351BB1945332C6B77BA3"
|
||||||
|
BuildableName = "ChronoMindWidgets.appex"
|
||||||
|
BlueprintName = "ChronoMindWidgets"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
</BuildActionEntries>
|
</BuildActionEntries>
|
||||||
</BuildAction>
|
</BuildAction>
|
||||||
<TestAction
|
<TestAction
|
||||||
|
|||||||
@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1600"
|
||||||
|
version = "1.7">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES"
|
||||||
|
runPostActionsOnFailure = "NO">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "C0E0F171B21355486B744330"
|
||||||
|
BuildableName = "ChronoMindMac.app"
|
||||||
|
BlueprintName = "ChronoMindMac"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
onlyGenerateCoverageForSpecifiedTargets = "NO">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "C0E0F171B21355486B744330"
|
||||||
|
BuildableName = "ChronoMindMac.app"
|
||||||
|
BlueprintName = "ChronoMindMac"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "C0E0F171B21355486B744330"
|
||||||
|
BuildableName = "ChronoMindMac.app"
|
||||||
|
BlueprintName = "ChronoMindMac"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
<CommandLineArguments>
|
||||||
|
</CommandLineArguments>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "C0E0F171B21355486B744330"
|
||||||
|
BuildableName = "ChronoMindMac.app"
|
||||||
|
BlueprintName = "ChronoMindMac"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
<CommandLineArguments>
|
||||||
|
</CommandLineArguments>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
@ -0,0 +1,107 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1600"
|
||||||
|
version = "1.7">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES"
|
||||||
|
runPostActionsOnFailure = "NO">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "E15B7150D85F1ED89481E2A0"
|
||||||
|
BuildableName = "ChronoMindWatch.app"
|
||||||
|
BlueprintName = "ChronoMindWatch"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "8A2AE3A5C26A2CC7420F50C0"
|
||||||
|
BuildableName = "ChronoMindWatchComplications.appex"
|
||||||
|
BlueprintName = "ChronoMindWatchComplications"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
onlyGenerateCoverageForSpecifiedTargets = "NO">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "E15B7150D85F1ED89481E2A0"
|
||||||
|
BuildableName = "ChronoMindWatch.app"
|
||||||
|
BlueprintName = "ChronoMindWatch"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "E15B7150D85F1ED89481E2A0"
|
||||||
|
BuildableName = "ChronoMindWatch.app"
|
||||||
|
BlueprintName = "ChronoMindWatch"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
<CommandLineArguments>
|
||||||
|
</CommandLineArguments>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "E15B7150D85F1ED89481E2A0"
|
||||||
|
BuildableName = "ChronoMindWatch.app"
|
||||||
|
BlueprintName = "ChronoMindWatch"
|
||||||
|
ReferencedContainer = "container:ChronoMind.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
<CommandLineArguments>
|
||||||
|
</CommandLineArguments>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
@ -72,13 +72,23 @@ struct ContentView: View {
|
|||||||
private var iPadLayout: some View {
|
private var iPadLayout: some View {
|
||||||
NavigationSplitView {
|
NavigationSplitView {
|
||||||
// Sidebar
|
// Sidebar
|
||||||
List(Tab.allCases, selection: $selectedTab) { tab in
|
VStack(spacing: 0) {
|
||||||
Label(tab.rawValue, systemImage: tab.icon)
|
ForEach(Tab.allCases) { tab in
|
||||||
.tag(tab)
|
Button {
|
||||||
|
selectedTab = tab
|
||||||
|
} label: {
|
||||||
|
Label(tab.rawValue, systemImage: tab.icon)
|
||||||
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
|
.padding(.horizontal, 16)
|
||||||
|
.padding(.vertical, 10)
|
||||||
|
.background(selectedTab == tab ? CMColors.accent.opacity(0.15) : Color.clear)
|
||||||
|
.cornerRadius(8)
|
||||||
|
}
|
||||||
|
.buttonStyle(.plain)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
.padding(.horizontal, 8)
|
||||||
.navigationTitle("ChronoMind")
|
.navigationTitle("ChronoMind")
|
||||||
.listStyle(.sidebar)
|
|
||||||
.scrollContentBackground(.hidden)
|
|
||||||
.background(CMColors.bg)
|
.background(CMColors.bg)
|
||||||
} detail: {
|
} detail: {
|
||||||
// Detail pane
|
// Detail pane
|
||||||
@ -155,8 +165,14 @@ struct ContentView: View {
|
|||||||
|
|
||||||
// Countdown
|
// Countdown
|
||||||
CountdownRing(
|
CountdownRing(
|
||||||
timer: timer,
|
progress: {
|
||||||
now: timerStore.now,
|
guard let duration = timer.duration, duration > 0 else { return 0 }
|
||||||
|
let remaining = max(0, timer.targetTime.timeIntervalSince(timerStore.now))
|
||||||
|
return 1.0 - (remaining / duration)
|
||||||
|
}(),
|
||||||
|
urgency: timer.urgency,
|
||||||
|
remainingSeconds: max(0, timer.targetTime.timeIntervalSince(timerStore.now)),
|
||||||
|
totalSeconds: timer.duration ?? 0,
|
||||||
size: 180
|
size: 180
|
||||||
)
|
)
|
||||||
.frame(maxWidth: .infinity)
|
.frame(maxWidth: .infinity)
|
||||||
|
|||||||
@ -80,7 +80,7 @@ struct ReduceMotionModifier: ViewModifier {
|
|||||||
|
|
||||||
extension View {
|
extension View {
|
||||||
/// Apply animation that respects Reduce Motion setting
|
/// Apply animation that respects Reduce Motion setting
|
||||||
func motionSafe(_ animation: Animation, reduced: Animation = .none) -> some View {
|
func motionSafe(_ animation: Animation, reduced: Animation = .linear(duration: 0)) -> some View {
|
||||||
modifier(ReduceMotionModifier(animation: animation, reducedAnimation: reduced))
|
modifier(ReduceMotionModifier(animation: animation, reducedAnimation: reduced))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -142,16 +142,16 @@ final class CalendarSyncManager: ObservableObject {
|
|||||||
|
|
||||||
var timer = CMTimer(
|
var timer = CMTimer(
|
||||||
id: stableId,
|
id: stableId,
|
||||||
|
type: .alarm,
|
||||||
label: event.title ?? "Calendar Event",
|
label: event.title ?? "Calendar Event",
|
||||||
description: event.location,
|
description: event.location,
|
||||||
type: .alarm,
|
|
||||||
state: .active,
|
|
||||||
urgency: urgency,
|
urgency: urgency,
|
||||||
duration: event.endDate.timeIntervalSince(startDate),
|
state: .active,
|
||||||
targetTime: startDate,
|
targetTime: startDate,
|
||||||
|
duration: event.endDate.timeIntervalSince(startDate),
|
||||||
createdAt: Date(),
|
createdAt: Date(),
|
||||||
startedAt: Date(),
|
startedAt: Date(),
|
||||||
category: "calendar",
|
elapsedBeforePause: 0,
|
||||||
cascade: CascadeConfig(preset: .standard, intervals: []),
|
cascade: CascadeConfig(preset: .standard, intervals: []),
|
||||||
warnings: calculateCascadeWarnings(
|
warnings: calculateCascadeWarnings(
|
||||||
targetTime: startDate,
|
targetTime: startDate,
|
||||||
@ -159,9 +159,7 @@ final class CalendarSyncManager: ObservableObject {
|
|||||||
now: Date()
|
now: Date()
|
||||||
),
|
),
|
||||||
snoozeCount: 0,
|
snoozeCount: 0,
|
||||||
isCalendarSync: true,
|
category: "calendar"
|
||||||
calendarEventId: event.eventIdentifier,
|
|
||||||
calendarColor: event.calendar.cgColor
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return timer
|
return timer
|
||||||
|
|||||||
@ -40,7 +40,9 @@ final class CloudKitSyncManager: ObservableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
deinit {
|
deinit {
|
||||||
stopSync()
|
if let observer = observer {
|
||||||
|
NotificationCenter.default.removeObserver(observer)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Sync Control
|
// MARK: - Sync Control
|
||||||
|
|||||||
@ -187,7 +187,7 @@ struct TimerExport: Codable {
|
|||||||
self.type = timer.type.rawValue
|
self.type = timer.type.rawValue
|
||||||
self.state = timer.state.rawValue
|
self.state = timer.state.rawValue
|
||||||
self.urgency = timer.urgency.rawValue
|
self.urgency = timer.urgency.rawValue
|
||||||
self.duration = timer.duration
|
self.duration = timer.duration ?? 0
|
||||||
self.targetTime = timer.targetTime
|
self.targetTime = timer.targetTime
|
||||||
self.createdAt = timer.createdAt
|
self.createdAt = timer.createdAt
|
||||||
self.completedAt = timer.completedAt
|
self.completedAt = timer.completedAt
|
||||||
|
|||||||
@ -27,7 +27,7 @@ final class ShareableTimerManager: ObservableObject {
|
|||||||
code: shareCode,
|
code: shareCode,
|
||||||
label: timer.label,
|
label: timer.label,
|
||||||
type: timer.type,
|
type: timer.type,
|
||||||
durationSeconds: timer.duration,
|
durationSeconds: timer.duration ?? 0,
|
||||||
urgency: timer.urgency,
|
urgency: timer.urgency,
|
||||||
cascadePreset: timer.cascade.preset,
|
cascadePreset: timer.cascade.preset,
|
||||||
category: timer.category,
|
category: timer.category,
|
||||||
@ -99,6 +99,14 @@ final class ShareableTimerManager: ObservableObject {
|
|||||||
rounds: 4
|
rounds: 4
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
|
case .event:
|
||||||
|
// Events need a target date — set to duration from now
|
||||||
|
return createAlarm(CreateAlarmParams(
|
||||||
|
label: shared.label,
|
||||||
|
targetTime: Date().addingTimeInterval(shared.durationSeconds),
|
||||||
|
urgency: shared.urgency,
|
||||||
|
cascade: CascadeConfig(preset: shared.cascadePreset, intervals: [])
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import HealthKit
|
import HealthKit
|
||||||
import Combine
|
import Combine
|
||||||
|
import UserNotifications
|
||||||
|
|
||||||
@MainActor
|
@MainActor
|
||||||
final class SleepManager: ObservableObject {
|
final class SleepManager: ObservableObject {
|
||||||
|
|||||||
@ -47,7 +47,7 @@ struct CascadeWarning: Codable, Identifiable, Equatable {
|
|||||||
let minutesBefore: Int
|
let minutesBefore: Int
|
||||||
var fired: Bool
|
var fired: Bool
|
||||||
var firedAt: Date?
|
var firedAt: Date?
|
||||||
let scheduledTime: Date
|
var scheduledTime: Date
|
||||||
|
|
||||||
static func == (lhs: CascadeWarning, rhs: CascadeWarning) -> Bool {
|
static func == (lhs: CascadeWarning, rhs: CascadeWarning) -> Bool {
|
||||||
lhs.id == rhs.id
|
lhs.id == rhs.id
|
||||||
|
|||||||
@ -135,8 +135,6 @@ struct ChronoMindShortcutsProvider: AppShortcutsProvider {
|
|||||||
intent: SetTimerIntent(),
|
intent: SetTimerIntent(),
|
||||||
phrases: [
|
phrases: [
|
||||||
"Set a timer in \(.applicationName)",
|
"Set a timer in \(.applicationName)",
|
||||||
"Set a \(\.$minutes) minute timer in \(.applicationName)",
|
|
||||||
"Start a \(\.$minutes) minute timer called \(\.$label) in \(.applicationName)",
|
|
||||||
],
|
],
|
||||||
shortTitle: "Set Timer",
|
shortTitle: "Set Timer",
|
||||||
systemImageName: "timer"
|
systemImageName: "timer"
|
||||||
@ -147,7 +145,6 @@ struct ChronoMindShortcutsProvider: AppShortcutsProvider {
|
|||||||
phrases: [
|
phrases: [
|
||||||
"Start Pomodoro in \(.applicationName)",
|
"Start Pomodoro in \(.applicationName)",
|
||||||
"Start a focus session in \(.applicationName)",
|
"Start a focus session in \(.applicationName)",
|
||||||
"Start a \(\.$workMinutes) minute Pomodoro in \(.applicationName)",
|
|
||||||
],
|
],
|
||||||
shortTitle: "Start Pomodoro",
|
shortTitle: "Start Pomodoro",
|
||||||
systemImageName: "target"
|
systemImageName: "target"
|
||||||
|
|||||||
14
ios/ChronoMindMac/ChronoMindMac.entitlements
Normal file
14
ios/ChronoMindMac/ChronoMindMac.entitlements
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>com.apple.security.app-sandbox</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.application-groups</key>
|
||||||
|
<array>
|
||||||
|
<string>group.com.chronomind.shared</string>
|
||||||
|
</array>
|
||||||
|
<key>com.apple.security.network.client</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -48,7 +48,7 @@ targets:
|
|||||||
INFOPLIST_KEY_NSSupportsLiveActivities: true
|
INFOPLIST_KEY_NSSupportsLiveActivities: true
|
||||||
dependencies:
|
dependencies:
|
||||||
- target: ChronoMindWidgets
|
- target: ChronoMindWidgets
|
||||||
- target: ChronoMindWatch
|
# - target: ChronoMindWatch # Temporarily removed — watchOS target can't build on iOS Simulator
|
||||||
- package: ByteLystPlatformSDK
|
- package: ByteLystPlatformSDK
|
||||||
entitlements:
|
entitlements:
|
||||||
path: ChronoMind/ChronoMind.entitlements
|
path: ChronoMind/ChronoMind.entitlements
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user