Root cause: the widget was opening the shared local.store with a 2-entity schema (VocabCard, CourseDeck), causing SwiftData to destructively migrate the file and drop the 4 entities the widget didn't know about (Verb, VerbForm, IrregularSpan, TenseGuide). The main app would then re-seed on next launch, and the cycle repeated forever. Fix: move Verb, VerbForm, IrregularSpan, TenseGuide from the app target into SharedModels so both the main app and the widget use the exact same types from the same module. Both now declare all 6 local entities in their ModelContainer, producing identical schema hashes and eliminating the destructive migration. Other changes bundled in this commit (accumulated during debugging): - Split ModelContainer into localContainer + cloudContainer (no more CloudKit + non-CloudKit configs in one container) - Add SharedStore.localStoreURL() helper and a global reference for bypass-environment fetches - One-time store reset mechanism to wipe stale schema metadata from previous broken iterations - Bootstrap/maintenance split so only seeding gates the UI; dedup and cloud repair run in the background - Sync status toast that shows "Syncing" while background maintenance runs (network-aware, auto-dismisses) - Background app refresh task to keep the widget word-of-day fresh - Speaker icon on VerbDetailView for TTS - Grammar notes navigation fix (nested NavigationStack was breaking detail pane on iPhone) - Word-of-day widget swaps front/back when the deck is reversed so the Spanish word always shows in bold - StoreInspector diagnostic helper for raw SQLite table inspection - Add Conjuga scheme explicitly to project.yml so xcodegen doesn't drop it Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
837 lines
47 KiB
Plaintext
837 lines
47 KiB
Plaintext
// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 77;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
00BEC0BDBB49198022D9852E /* WordOfDayWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E9BCDBB9BC24F5C8117767E /* WordOfDayWidget.swift */; };
|
|
0A89DCC82BE11605CB866DEF /* TenseInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BC3247457109FC6BF00D85B /* TenseInfo.swift */; };
|
|
13F29AD5745FB532709FA28A /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E972AA745F44586EF0B1B0C8 /* OnboardingView.swift */; };
|
|
1A230C01A045F0C095BFBD35 /* PracticeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA0FA4F9149B9D8E197ADE9 /* PracticeView.swift */; };
|
|
1C2636790E70B6BC7FFCC904 /* DailyLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0313D24F96E6A0039C34341F /* DailyLog.swift */; };
|
|
218E982FC4267949F82AABAD /* SharedModels in Frameworks */ = {isa = PBXBuildFile; productRef = 4A4D7B02884EBA9ACD93F0FD /* SharedModels */; };
|
|
261E582449BED6EF41881B04 /* AdaptiveContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B16FF4C52457CD8CD703532 /* AdaptiveContainer.swift */; };
|
|
27BA7FA9356467846A07697D /* TypingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10C16AA6022E4742898745CE /* TypingView.swift */; };
|
|
28D2F489F1927BCCC2B56086 /* IrregularHighlightText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42ADC600530309A9B147A663 /* IrregularHighlightText.swift */; };
|
|
2B5B2D63DC9C290F66890A4A /* course_data.json in Resources */ = {isa = PBXBuildFile; fileRef = BC273716CD14A99EFF8206CA /* course_data.json */; };
|
|
2C7ABAB4D88E3E3B0EAD1EF7 /* PracticeHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF946245110C92F087D81E8 /* PracticeHeaderView.swift */; };
|
|
33E885EB38C3BB0CB058871A /* HandwritingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F842EB5E566C74658D918BB /* HandwritingView.swift */; };
|
|
352A5BAA6E406AA5850653A4 /* PracticeSessionService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842DB48F8570C39CDCFF2F57 /* PracticeSessionService.swift */; };
|
|
35A0F6E7124D989312721F7D /* DashboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18AC3C548BDB9EF8701BE64C /* DashboardView.swift */; };
|
|
36F92EBAEB0E5F2B010401EF /* StreakCalendarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30EF2362D9FFF9B07A45CE6D /* StreakCalendarView.swift */; };
|
|
377C4AA000CE9A0D8CC43DA9 /* GrammarNote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D389CA5B5C4E7A12CAEA5BC /* GrammarNote.swift */; };
|
|
39D0666B293DC265CF87B9DD /* SentenceBuilderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 731614CACCB73B6FD592D34A /* SentenceBuilderView.swift */; };
|
|
3F4F0C07BE61512CBFBBB203 /* HandwritingCanvas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D974250C396589656B8443 /* HandwritingCanvas.swift */; };
|
|
4005E258FDF03C8B3A0D53BD /* VocabFlashcardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2931634BEB33B93429CE254F /* VocabFlashcardView.swift */; };
|
|
46943ACFABF329DE1CBFC471 /* TensePill.swift in Sources */ = {isa = PBXBuildFile; fileRef = 102F0E136CDFF8CED710210F /* TensePill.swift */; };
|
|
4C3484403FD96E37DA4BEA66 /* NewWordIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72CB5F95DF256DF7CD73269D /* NewWordIntent.swift */; };
|
|
50E0095A23E119D1AB561232 /* VerbDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1DBE662F89F02A0282F5BEE /* VerbDetailView.swift */; };
|
|
51D072AF30F4B12CD3E8F918 /* SRSEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C0E6EAFC0D24928BA956FA5 /* SRSEngine.swift */; };
|
|
53A0AC57EAC44B676C997374 /* QuizType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 626873572466403C0288090D /* QuizType.swift */; };
|
|
5A3246026E68AB6483126D0B /* WeekProgressWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1980E8E439EB76ED7330A90D /* WeekProgressWidget.swift */; };
|
|
5EA915FFA906C5C2938FCADA /* ConjugaWidgetBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E325FE0E484DE75009672D02 /* ConjugaWidgetBundle.swift */; };
|
|
60E86BABE2735E2052B99DF3 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCC95A95581458E068E0484 /* SettingsView.swift */; };
|
|
6BB4B0A655E6CB6F82D81B5A /* WeekTestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7EF4161C73AAC67B3A0004 /* WeekTestView.swift */; };
|
|
6D4A29280FDD99B8E18AF264 /* WidgetDataReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2889F2F81673AFF3A58A07A8 /* WidgetDataReader.swift */; };
|
|
6ED2AC2CAA54688161D4B920 /* SyncStatusMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18CCD69C14D1B0CFBD03C92F /* SyncStatusMonitor.swift */; };
|
|
728702D9AA7A8BDABBA62513 /* ReviewStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBCF6FCFA6B00151C2371E77 /* ReviewStore.swift */; };
|
|
760628EFE1CF191CE2FC07DC /* GuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C935ECDF8A5D8D6FA541E20 /* GuideView.swift */; };
|
|
81FA7EBCF18F0AAE0BF385C3 /* VerbListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A63061BBC8998DF33E3DCA2B /* VerbListView.swift */; };
|
|
82F6079BE3F31AC3FB2D1013 /* MultipleChoiceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA3A33983B2F2078C9EA1A3D /* MultipleChoiceView.swift */; };
|
|
84CCBAE22A9E0DA27AE28723 /* DeckStudyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 631DC0A942DD57C81DECE083 /* DeckStudyView.swift */; };
|
|
8C43F09F52EA9B537EA27E43 /* CourseReviewStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAF7CA1E6F9979CB2C699FDC /* CourseReviewStore.swift */; };
|
|
943A94A8C71919F3EFC0E8FA /* UserProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = E536AD1180FE10576EAC884A /* UserProgress.swift */; };
|
|
97EFCF6724CE59DC4F0274FD /* AchievementService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C42EA0EBD4CB1E10A82BA25 /* AchievementService.swift */; };
|
|
9D9FD3853C5C969C62AE9999 /* StartupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4B95B276C054DBFE508C4D1 /* StartupCoordinator.swift */; };
|
|
A9959AE6C87B4AD21554E401 /* FullTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711CB7539EF5887F6F7B8B82 /* FullTableView.swift */; };
|
|
AAC6F85A1C3B6C1186E1656A /* TenseEndingTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69D98E1564C6538056D81200 /* TenseEndingTable.swift */; };
|
|
BB48230C3B26EA6E84D2D823 /* DailyProgressRing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 180F9D59828C36B44A5E384F /* DailyProgressRing.swift */; };
|
|
BF0832865857EFDA1D1CDEAD /* SharedModels in Frameworks */ = {isa = PBXBuildFile; productRef = BCCBABD74CADDB118179D8E9 /* SharedModels */; };
|
|
C0BAEF49A6270D8F64CF13D6 /* PracticeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C359C051FB157EF447561405 /* PracticeViewModel.swift */; };
|
|
C1F84182F12EB5CFF32768B6 /* MainTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5983A534E4836F30B5281ACB /* MainTabView.swift */; };
|
|
C2B3D97F119EFCE97E3CB1CE /* ConjugaApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB4830F9289AACC82D753F8 /* ConjugaApp.swift */; };
|
|
C3851F960C1162239DC2F935 /* CourseQuizView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 143D06606AE10DCA30A140C2 /* CourseQuizView.swift */; };
|
|
C8C3880535008764B7117049 /* DataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = DADCA82DDD34DF36D59BB283 /* DataLoader.swift */; };
|
|
CAC69045B74249F121643E88 /* AnswerReviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83A8C1A048627C8DEB83C12D /* AnswerReviewView.swift */; };
|
|
CF9E48ADF0501FB79F3DDB7B /* conjuga_data.json in Resources */ = {isa = PBXBuildFile; fileRef = 8C2D88FF9A3B0590B22C7837 /* conjuga_data.json */; };
|
|
D3FFE73A5AD27F1759F50727 /* SpeechService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49E3AD244327CBF24B7A2752 /* SpeechService.swift */; };
|
|
D40B4E919DE379C50265CA9F /* SyncToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C4B5204F6B8647C816814F0 /* SyncToast.swift */; };
|
|
D4DDE25FB2DAD315370AFB74 /* FlashcardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B9A9F2AB21895E06989A4D5 /* FlashcardView.swift */; };
|
|
D6B67523714E0B3618391956 /* CombinedWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43345D6C7EAA4017E3A45935 /* CombinedWidget.swift */; };
|
|
D7456B289D135CEB3A15122B /* TestResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAFE27F29412021AEC57E728 /* TestResult.swift */; };
|
|
DF06034A4B2C11BA0C0A84CB /* ConjugaWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 9708FF3CF33E4765DB225F93 /* ConjugaWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
|
DF82C2579F9889DDB06362CC /* ReferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 777C696A841803D5B775B678 /* ReferenceStore.swift */; };
|
|
E7BFEE9A90E1300EFF5B1F32 /* HandwritingRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3695075616689E72DBB26D4C /* HandwritingRecognizer.swift */; };
|
|
E814A9CF1067313F74B509C6 /* StoreInspector.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E9833868EB73AF9EB3A611 /* StoreInspector.swift */; };
|
|
E99473B7DF9BCAE150E9D1E1 /* WidgetDataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D570252DA3DCDD9217C71863 /* WidgetDataService.swift */; };
|
|
ED0401D05A7C2B4C55057A88 /* DailyProgressWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 195DA9CDA703DDFAD1B3CD5A /* DailyProgressWidget.swift */; };
|
|
F0D0778207F144D6AC3D39C3 /* CourseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833516C5D57F164C8660A479 /* CourseView.swift */; };
|
|
F59655A8B8FCE6264315DD33 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A014EEC3EE08E945FBBA5335 /* Assets.xcassets */; };
|
|
F84706B47A2156B2138FB8D5 /* GrammarNotesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F1A6221A35699BD8065D064 /* GrammarNotesView.swift */; };
|
|
FC7873F97017532C215DAD34 /* ReviewCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A8A63F750065CA4EF36B4D3 /* ReviewCard.swift */; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXContainerItemProxy section */
|
|
642028B6CDF96AC823DD42DD /* PBXContainerItemProxy */ = {
|
|
isa = PBXContainerItemProxy;
|
|
containerPortal = AB7396D9C3E14B65B5238368 /* Project object */;
|
|
proxyType = 1;
|
|
remoteGlobalIDString = F73909B4044081DB8F6272AF;
|
|
remoteInfo = ConjugaWidgetExtension;
|
|
};
|
|
/* End PBXContainerItemProxy section */
|
|
|
|
/* Begin PBXCopyFilesBuildPhase section */
|
|
564DF4E0E67EB112CC99B25B /* Embed Foundation Extensions */ = {
|
|
isa = PBXCopyFilesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
dstPath = "";
|
|
dstSubfolderSpec = 13;
|
|
files = (
|
|
DF06034A4B2C11BA0C0A84CB /* ConjugaWidgetExtension.appex in Embed Foundation Extensions */,
|
|
);
|
|
name = "Embed Foundation Extensions";
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXCopyFilesBuildPhase section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
0313D24F96E6A0039C34341F /* DailyLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyLog.swift; sourceTree = "<group>"; };
|
|
0A8A63F750065CA4EF36B4D3 /* ReviewCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewCard.swift; sourceTree = "<group>"; };
|
|
102F0E136CDFF8CED710210F /* TensePill.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TensePill.swift; sourceTree = "<group>"; };
|
|
10C16AA6022E4742898745CE /* TypingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypingView.swift; sourceTree = "<group>"; };
|
|
143D06606AE10DCA30A140C2 /* CourseQuizView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseQuizView.swift; sourceTree = "<group>"; };
|
|
16C1F74196C3C5628953BE3F /* Conjuga.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Conjuga.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
180F9D59828C36B44A5E384F /* DailyProgressRing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyProgressRing.swift; sourceTree = "<group>"; };
|
|
18AC3C548BDB9EF8701BE64C /* DashboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardView.swift; sourceTree = "<group>"; };
|
|
18CCD69C14D1B0CFBD03C92F /* SyncStatusMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncStatusMonitor.swift; sourceTree = "<group>"; };
|
|
195DA9CDA703DDFAD1B3CD5A /* DailyProgressWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyProgressWidget.swift; sourceTree = "<group>"; };
|
|
1980E8E439EB76ED7330A90D /* WeekProgressWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeekProgressWidget.swift; sourceTree = "<group>"; };
|
|
1C42EA0EBD4CB1E10A82BA25 /* AchievementService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AchievementService.swift; sourceTree = "<group>"; };
|
|
1C4B5204F6B8647C816814F0 /* SyncToast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncToast.swift; sourceTree = "<group>"; };
|
|
1EA0FA4F9149B9D8E197ADE9 /* PracticeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PracticeView.swift; sourceTree = "<group>"; };
|
|
1EB4830F9289AACC82D753F8 /* ConjugaApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConjugaApp.swift; sourceTree = "<group>"; };
|
|
1F842EB5E566C74658D918BB /* HandwritingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandwritingView.swift; sourceTree = "<group>"; };
|
|
2889F2F81673AFF3A58A07A8 /* WidgetDataReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetDataReader.swift; sourceTree = "<group>"; };
|
|
2931634BEB33B93429CE254F /* VocabFlashcardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VocabFlashcardView.swift; sourceTree = "<group>"; };
|
|
30EF2362D9FFF9B07A45CE6D /* StreakCalendarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StreakCalendarView.swift; sourceTree = "<group>"; };
|
|
3695075616689E72DBB26D4C /* HandwritingRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandwritingRecognizer.swift; sourceTree = "<group>"; };
|
|
3B16FF4C52457CD8CD703532 /* AdaptiveContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveContainer.swift; sourceTree = "<group>"; };
|
|
3BC3247457109FC6BF00D85B /* TenseInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenseInfo.swift; sourceTree = "<group>"; };
|
|
3CC1AD23158CBABBB753FA1E /* ConjugaWidget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ConjugaWidget.entitlements; sourceTree = "<group>"; };
|
|
3F1A6221A35699BD8065D064 /* GrammarNotesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrammarNotesView.swift; sourceTree = "<group>"; };
|
|
42ADC600530309A9B147A663 /* IrregularHighlightText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IrregularHighlightText.swift; sourceTree = "<group>"; };
|
|
43345D6C7EAA4017E3A45935 /* CombinedWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CombinedWidget.swift; sourceTree = "<group>"; };
|
|
49E3AD244327CBF24B7A2752 /* SpeechService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpeechService.swift; sourceTree = "<group>"; };
|
|
4D389CA5B5C4E7A12CAEA5BC /* GrammarNote.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrammarNote.swift; sourceTree = "<group>"; };
|
|
5983A534E4836F30B5281ACB /* MainTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabView.swift; sourceTree = "<group>"; };
|
|
5BF946245110C92F087D81E8 /* PracticeHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PracticeHeaderView.swift; sourceTree = "<group>"; };
|
|
5C0E6EAFC0D24928BA956FA5 /* SRSEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRSEngine.swift; sourceTree = "<group>"; };
|
|
5E7EF4161C73AAC67B3A0004 /* WeekTestView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeekTestView.swift; sourceTree = "<group>"; };
|
|
626873572466403C0288090D /* QuizType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuizType.swift; sourceTree = "<group>"; };
|
|
631DC0A942DD57C81DECE083 /* DeckStudyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeckStudyView.swift; sourceTree = "<group>"; };
|
|
69D98E1564C6538056D81200 /* TenseEndingTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TenseEndingTable.swift; sourceTree = "<group>"; };
|
|
6B9A9F2AB21895E06989A4D5 /* FlashcardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashcardView.swift; sourceTree = "<group>"; };
|
|
711CB7539EF5887F6F7B8B82 /* FullTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullTableView.swift; sourceTree = "<group>"; };
|
|
72CB5F95DF256DF7CD73269D /* NewWordIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewWordIntent.swift; sourceTree = "<group>"; };
|
|
731614CACCB73B6FD592D34A /* SentenceBuilderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentenceBuilderView.swift; sourceTree = "<group>"; };
|
|
777C696A841803D5B775B678 /* ReferenceStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReferenceStore.swift; sourceTree = "<group>"; };
|
|
7E6AF62A3A949630E067DC22 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
|
80D974250C396589656B8443 /* HandwritingCanvas.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandwritingCanvas.swift; sourceTree = "<group>"; };
|
|
833516C5D57F164C8660A479 /* CourseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseView.swift; sourceTree = "<group>"; };
|
|
83A8C1A048627C8DEB83C12D /* AnswerReviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnswerReviewView.swift; sourceTree = "<group>"; };
|
|
842DB48F8570C39CDCFF2F57 /* PracticeSessionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PracticeSessionService.swift; sourceTree = "<group>"; };
|
|
8C2D88FF9A3B0590B22C7837 /* conjuga_data.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = conjuga_data.json; sourceTree = "<group>"; };
|
|
8C935ECDF8A5D8D6FA541E20 /* GuideView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuideView.swift; sourceTree = "<group>"; };
|
|
8E9BCDBB9BC24F5C8117767E /* WordOfDayWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordOfDayWidget.swift; sourceTree = "<group>"; };
|
|
9708FF3CF33E4765DB225F93 /* ConjugaWidgetExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = ConjugaWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
9E1FB35614B709E6B1D1D017 /* Conjuga.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Conjuga.entitlements; sourceTree = "<group>"; };
|
|
A014EEC3EE08E945FBBA5335 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
A4B95B276C054DBFE508C4D1 /* StartupCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartupCoordinator.swift; sourceTree = "<group>"; };
|
|
A63061BBC8998DF33E3DCA2B /* VerbListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerbListView.swift; sourceTree = "<group>"; };
|
|
AC34396050805693AA4AC582 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
|
BC273716CD14A99EFF8206CA /* course_data.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = course_data.json; sourceTree = "<group>"; };
|
|
BCCC95A95581458E068E0484 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
|
|
C359C051FB157EF447561405 /* PracticeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PracticeViewModel.swift; sourceTree = "<group>"; };
|
|
CBCF6FCFA6B00151C2371E77 /* ReviewStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewStore.swift; sourceTree = "<group>"; };
|
|
CF6D58AEE2F0DFE0F1829A73 /* SharedModels */ = {isa = PBXFileReference; lastKnownFileType = folder; name = SharedModels; path = SharedModels; sourceTree = SOURCE_ROOT; };
|
|
D570252DA3DCDD9217C71863 /* WidgetDataService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetDataService.swift; sourceTree = "<group>"; };
|
|
DA3A33983B2F2078C9EA1A3D /* MultipleChoiceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleChoiceView.swift; sourceTree = "<group>"; };
|
|
DADCA82DDD34DF36D59BB283 /* DataLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataLoader.swift; sourceTree = "<group>"; };
|
|
DAF7CA1E6F9979CB2C699FDC /* CourseReviewStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseReviewStore.swift; sourceTree = "<group>"; };
|
|
DAFE27F29412021AEC57E728 /* TestResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestResult.swift; sourceTree = "<group>"; };
|
|
E1DBE662F89F02A0282F5BEE /* VerbDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerbDetailView.swift; sourceTree = "<group>"; };
|
|
E325FE0E484DE75009672D02 /* ConjugaWidgetBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConjugaWidgetBundle.swift; sourceTree = "<group>"; };
|
|
E536AD1180FE10576EAC884A /* UserProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProgress.swift; sourceTree = "<group>"; };
|
|
E8E9833868EB73AF9EB3A611 /* StoreInspector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreInspector.swift; sourceTree = "<group>"; };
|
|
E972AA745F44586EF0B1B0C8 /* OnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = "<group>"; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
|
0116A6DE63FDF7EAC771CE28 /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
218E982FC4267949F82AABAD /* SharedModels in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
2882B19DCEE63C5FB6421C75 /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
BF0832865857EFDA1D1CDEAD /* SharedModels in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
/* Begin PBXGroup section */
|
|
00DB828631287E203DF85F58 /* Conjuga */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
A014EEC3EE08E945FBBA5335 /* Assets.xcassets */,
|
|
8C2D88FF9A3B0590B22C7837 /* conjuga_data.json */,
|
|
9E1FB35614B709E6B1D1D017 /* Conjuga.entitlements */,
|
|
1EB4830F9289AACC82D753F8 /* ConjugaApp.swift */,
|
|
BC273716CD14A99EFF8206CA /* course_data.json */,
|
|
7E6AF62A3A949630E067DC22 /* Info.plist */,
|
|
353C5DE41FD410FA82E3AED7 /* Models */,
|
|
1994867BC8E985795A172854 /* Services */,
|
|
3C75490F53C34A37084FF478 /* ViewModels */,
|
|
A81CA75762B08D35D5B7A44D /* Views */,
|
|
);
|
|
path = Conjuga;
|
|
sourceTree = "<group>";
|
|
};
|
|
0931AEB5B728C3A03F06A1CA /* Settings */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
BCCC95A95581458E068E0484 /* SettingsView.swift */,
|
|
);
|
|
path = Settings;
|
|
sourceTree = "<group>";
|
|
};
|
|
180FE0BE39C06AF578F2B9A2 /* Verbs */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
E1DBE662F89F02A0282F5BEE /* VerbDetailView.swift */,
|
|
A63061BBC8998DF33E3DCA2B /* VerbListView.swift */,
|
|
);
|
|
path = Verbs;
|
|
sourceTree = "<group>";
|
|
};
|
|
1994867BC8E985795A172854 /* Services */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
1C42EA0EBD4CB1E10A82BA25 /* AchievementService.swift */,
|
|
DAF7CA1E6F9979CB2C699FDC /* CourseReviewStore.swift */,
|
|
DADCA82DDD34DF36D59BB283 /* DataLoader.swift */,
|
|
3695075616689E72DBB26D4C /* HandwritingRecognizer.swift */,
|
|
842DB48F8570C39CDCFF2F57 /* PracticeSessionService.swift */,
|
|
777C696A841803D5B775B678 /* ReferenceStore.swift */,
|
|
CBCF6FCFA6B00151C2371E77 /* ReviewStore.swift */,
|
|
49E3AD244327CBF24B7A2752 /* SpeechService.swift */,
|
|
5C0E6EAFC0D24928BA956FA5 /* SRSEngine.swift */,
|
|
A4B95B276C054DBFE508C4D1 /* StartupCoordinator.swift */,
|
|
E8E9833868EB73AF9EB3A611 /* StoreInspector.swift */,
|
|
18CCD69C14D1B0CFBD03C92F /* SyncStatusMonitor.swift */,
|
|
D570252DA3DCDD9217C71863 /* WidgetDataService.swift */,
|
|
);
|
|
path = Services;
|
|
sourceTree = "<group>";
|
|
};
|
|
29F9EEAED5A6969FEDEAE227 /* Onboarding */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
E972AA745F44586EF0B1B0C8 /* OnboardingView.swift */,
|
|
);
|
|
path = Onboarding;
|
|
sourceTree = "<group>";
|
|
};
|
|
353C5DE41FD410FA82E3AED7 /* Models */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
0313D24F96E6A0039C34341F /* DailyLog.swift */,
|
|
4D389CA5B5C4E7A12CAEA5BC /* GrammarNote.swift */,
|
|
626873572466403C0288090D /* QuizType.swift */,
|
|
0A8A63F750065CA4EF36B4D3 /* ReviewCard.swift */,
|
|
69D98E1564C6538056D81200 /* TenseEndingTable.swift */,
|
|
3BC3247457109FC6BF00D85B /* TenseInfo.swift */,
|
|
DAFE27F29412021AEC57E728 /* TestResult.swift */,
|
|
E536AD1180FE10576EAC884A /* UserProgress.swift */,
|
|
);
|
|
path = Models;
|
|
sourceTree = "<group>";
|
|
};
|
|
35D7EC545D2840269F3A105A /* Components */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
3B16FF4C52457CD8CD703532 /* AdaptiveContainer.swift */,
|
|
180F9D59828C36B44A5E384F /* DailyProgressRing.swift */,
|
|
80D974250C396589656B8443 /* HandwritingCanvas.swift */,
|
|
42ADC600530309A9B147A663 /* IrregularHighlightText.swift */,
|
|
1C4B5204F6B8647C816814F0 /* SyncToast.swift */,
|
|
102F0E136CDFF8CED710210F /* TensePill.swift */,
|
|
);
|
|
path = Components;
|
|
sourceTree = "<group>";
|
|
};
|
|
3C75490F53C34A37084FF478 /* ViewModels */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
C359C051FB157EF447561405 /* PracticeViewModel.swift */,
|
|
);
|
|
path = ViewModels;
|
|
sourceTree = "<group>";
|
|
};
|
|
4B183AB0C56BC2EC302531E7 /* ConjugaWidget */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
43345D6C7EAA4017E3A45935 /* CombinedWidget.swift */,
|
|
3CC1AD23158CBABBB753FA1E /* ConjugaWidget.entitlements */,
|
|
E325FE0E484DE75009672D02 /* ConjugaWidgetBundle.swift */,
|
|
195DA9CDA703DDFAD1B3CD5A /* DailyProgressWidget.swift */,
|
|
AC34396050805693AA4AC582 /* Info.plist */,
|
|
72CB5F95DF256DF7CD73269D /* NewWordIntent.swift */,
|
|
1980E8E439EB76ED7330A90D /* WeekProgressWidget.swift */,
|
|
2889F2F81673AFF3A58A07A8 /* WidgetDataReader.swift */,
|
|
8E9BCDBB9BC24F5C8117767E /* WordOfDayWidget.swift */,
|
|
);
|
|
path = ConjugaWidget;
|
|
sourceTree = "<group>";
|
|
};
|
|
5A23E5D4EFE8E46030CA9D77 /* Practice */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
83A8C1A048627C8DEB83C12D /* AnswerReviewView.swift */,
|
|
6B9A9F2AB21895E06989A4D5 /* FlashcardView.swift */,
|
|
711CB7539EF5887F6F7B8B82 /* FullTableView.swift */,
|
|
1F842EB5E566C74658D918BB /* HandwritingView.swift */,
|
|
DA3A33983B2F2078C9EA1A3D /* MultipleChoiceView.swift */,
|
|
5BF946245110C92F087D81E8 /* PracticeHeaderView.swift */,
|
|
1EA0FA4F9149B9D8E197ADE9 /* PracticeView.swift */,
|
|
731614CACCB73B6FD592D34A /* SentenceBuilderView.swift */,
|
|
10C16AA6022E4742898745CE /* TypingView.swift */,
|
|
);
|
|
path = Practice;
|
|
sourceTree = "<group>";
|
|
};
|
|
8102F7FA5BFE6D38B2212AD3 /* Guide */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
3F1A6221A35699BD8065D064 /* GrammarNotesView.swift */,
|
|
8C935ECDF8A5D8D6FA541E20 /* GuideView.swift */,
|
|
);
|
|
path = Guide;
|
|
sourceTree = "<group>";
|
|
};
|
|
A591A3B6F1F13D23D68D7A9D = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
00DB828631287E203DF85F58 /* Conjuga */,
|
|
4B183AB0C56BC2EC302531E7 /* ConjugaWidget */,
|
|
F7D740BB7D1E23949D4C1AE5 /* Packages */,
|
|
F605D24E5EA11065FD18AF7E /* Products */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
A81CA75762B08D35D5B7A44D /* Views */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
5983A534E4836F30B5281ACB /* MainTabView.swift */,
|
|
35D7EC545D2840269F3A105A /* Components */,
|
|
BE5A40BAC9DD6884C58A2096 /* Course */,
|
|
BA34B77A38B698101DBBE241 /* Dashboard */,
|
|
8102F7FA5BFE6D38B2212AD3 /* Guide */,
|
|
29F9EEAED5A6969FEDEAE227 /* Onboarding */,
|
|
5A23E5D4EFE8E46030CA9D77 /* Practice */,
|
|
0931AEB5B728C3A03F06A1CA /* Settings */,
|
|
180FE0BE39C06AF578F2B9A2 /* Verbs */,
|
|
);
|
|
path = Views;
|
|
sourceTree = "<group>";
|
|
};
|
|
BA34B77A38B698101DBBE241 /* Dashboard */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
18AC3C548BDB9EF8701BE64C /* DashboardView.swift */,
|
|
30EF2362D9FFF9B07A45CE6D /* StreakCalendarView.swift */,
|
|
);
|
|
path = Dashboard;
|
|
sourceTree = "<group>";
|
|
};
|
|
BE5A40BAC9DD6884C58A2096 /* Course */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
143D06606AE10DCA30A140C2 /* CourseQuizView.swift */,
|
|
833516C5D57F164C8660A479 /* CourseView.swift */,
|
|
631DC0A942DD57C81DECE083 /* DeckStudyView.swift */,
|
|
2931634BEB33B93429CE254F /* VocabFlashcardView.swift */,
|
|
5E7EF4161C73AAC67B3A0004 /* WeekTestView.swift */,
|
|
);
|
|
path = Course;
|
|
sourceTree = "<group>";
|
|
};
|
|
F605D24E5EA11065FD18AF7E /* Products */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
16C1F74196C3C5628953BE3F /* Conjuga.app */,
|
|
9708FF3CF33E4765DB225F93 /* ConjugaWidgetExtension.appex */,
|
|
);
|
|
name = Products;
|
|
sourceTree = "<group>";
|
|
};
|
|
F7D740BB7D1E23949D4C1AE5 /* Packages */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
CF6D58AEE2F0DFE0F1829A73 /* SharedModels */,
|
|
);
|
|
name = Packages;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
96127FACA68AE541F5C0F8BC /* Conjuga */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 6D3865D764BE65B4E10E971C /* Build configuration list for PBXNativeTarget "Conjuga" */;
|
|
buildPhases = (
|
|
1180AD08C008F8DB0CDCC944 /* Sources */,
|
|
B74A8384221C70A670B902D8 /* Resources */,
|
|
2882B19DCEE63C5FB6421C75 /* Frameworks */,
|
|
564DF4E0E67EB112CC99B25B /* Embed Foundation Extensions */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
0B370CF10B68E386093E5BB2 /* PBXTargetDependency */,
|
|
);
|
|
name = Conjuga;
|
|
packageProductDependencies = (
|
|
BCCBABD74CADDB118179D8E9 /* SharedModels */,
|
|
);
|
|
productName = Conjuga;
|
|
productReference = 16C1F74196C3C5628953BE3F /* Conjuga.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
F73909B4044081DB8F6272AF /* ConjugaWidgetExtension */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = EA7E12CF28EB750C2B8BB2F1 /* Build configuration list for PBXNativeTarget "ConjugaWidgetExtension" */;
|
|
buildPhases = (
|
|
217A29BCEDD9D44B6DD85AF6 /* Sources */,
|
|
0116A6DE63FDF7EAC771CE28 /* Frameworks */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
name = ConjugaWidgetExtension;
|
|
packageProductDependencies = (
|
|
4A4D7B02884EBA9ACD93F0FD /* SharedModels */,
|
|
);
|
|
productName = ConjugaWidgetExtension;
|
|
productReference = 9708FF3CF33E4765DB225F93 /* ConjugaWidgetExtension.appex */;
|
|
productType = "com.apple.product-type.app-extension";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
AB7396D9C3E14B65B5238368 /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
BuildIndependentTargetsInParallel = YES;
|
|
LastUpgradeCheck = 2600;
|
|
TargetAttributes = {
|
|
96127FACA68AE541F5C0F8BC = {
|
|
DevelopmentTeam = V3PF3M6B6U;
|
|
ProvisioningStyle = Automatic;
|
|
};
|
|
F73909B4044081DB8F6272AF = {
|
|
DevelopmentTeam = V3PF3M6B6U;
|
|
ProvisioningStyle = Automatic;
|
|
};
|
|
};
|
|
};
|
|
buildConfigurationList = F011A5DA3101F6F7CA7D2D95 /* Build configuration list for PBXProject "Conjuga" */;
|
|
compatibilityVersion = "Xcode 14.0";
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
Base,
|
|
en,
|
|
);
|
|
mainGroup = A591A3B6F1F13D23D68D7A9D;
|
|
minimizedProjectReferenceProxies = 1;
|
|
packageReferences = (
|
|
548B46ED3C40F5F28A5ADCC6 /* XCLocalSwiftPackageReference "SharedModels" */,
|
|
);
|
|
preferredProjectObjectVersion = 77;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
96127FACA68AE541F5C0F8BC /* Conjuga */,
|
|
F73909B4044081DB8F6272AF /* ConjugaWidgetExtension */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
B74A8384221C70A670B902D8 /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
F59655A8B8FCE6264315DD33 /* Assets.xcassets in Resources */,
|
|
CF9E48ADF0501FB79F3DDB7B /* conjuga_data.json in Resources */,
|
|
2B5B2D63DC9C290F66890A4A /* course_data.json in Resources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
1180AD08C008F8DB0CDCC944 /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
97EFCF6724CE59DC4F0274FD /* AchievementService.swift in Sources */,
|
|
261E582449BED6EF41881B04 /* AdaptiveContainer.swift in Sources */,
|
|
CAC69045B74249F121643E88 /* AnswerReviewView.swift in Sources */,
|
|
C2B3D97F119EFCE97E3CB1CE /* ConjugaApp.swift in Sources */,
|
|
C3851F960C1162239DC2F935 /* CourseQuizView.swift in Sources */,
|
|
8C43F09F52EA9B537EA27E43 /* CourseReviewStore.swift in Sources */,
|
|
F0D0778207F144D6AC3D39C3 /* CourseView.swift in Sources */,
|
|
1C2636790E70B6BC7FFCC904 /* DailyLog.swift in Sources */,
|
|
BB48230C3B26EA6E84D2D823 /* DailyProgressRing.swift in Sources */,
|
|
35A0F6E7124D989312721F7D /* DashboardView.swift in Sources */,
|
|
C8C3880535008764B7117049 /* DataLoader.swift in Sources */,
|
|
84CCBAE22A9E0DA27AE28723 /* DeckStudyView.swift in Sources */,
|
|
D4DDE25FB2DAD315370AFB74 /* FlashcardView.swift in Sources */,
|
|
A9959AE6C87B4AD21554E401 /* FullTableView.swift in Sources */,
|
|
377C4AA000CE9A0D8CC43DA9 /* GrammarNote.swift in Sources */,
|
|
F84706B47A2156B2138FB8D5 /* GrammarNotesView.swift in Sources */,
|
|
760628EFE1CF191CE2FC07DC /* GuideView.swift in Sources */,
|
|
3F4F0C07BE61512CBFBBB203 /* HandwritingCanvas.swift in Sources */,
|
|
E7BFEE9A90E1300EFF5B1F32 /* HandwritingRecognizer.swift in Sources */,
|
|
33E885EB38C3BB0CB058871A /* HandwritingView.swift in Sources */,
|
|
28D2F489F1927BCCC2B56086 /* IrregularHighlightText.swift in Sources */,
|
|
C1F84182F12EB5CFF32768B6 /* MainTabView.swift in Sources */,
|
|
82F6079BE3F31AC3FB2D1013 /* MultipleChoiceView.swift in Sources */,
|
|
13F29AD5745FB532709FA28A /* OnboardingView.swift in Sources */,
|
|
2C7ABAB4D88E3E3B0EAD1EF7 /* PracticeHeaderView.swift in Sources */,
|
|
352A5BAA6E406AA5850653A4 /* PracticeSessionService.swift in Sources */,
|
|
1A230C01A045F0C095BFBD35 /* PracticeView.swift in Sources */,
|
|
C0BAEF49A6270D8F64CF13D6 /* PracticeViewModel.swift in Sources */,
|
|
53A0AC57EAC44B676C997374 /* QuizType.swift in Sources */,
|
|
DF82C2579F9889DDB06362CC /* ReferenceStore.swift in Sources */,
|
|
FC7873F97017532C215DAD34 /* ReviewCard.swift in Sources */,
|
|
728702D9AA7A8BDABBA62513 /* ReviewStore.swift in Sources */,
|
|
51D072AF30F4B12CD3E8F918 /* SRSEngine.swift in Sources */,
|
|
39D0666B293DC265CF87B9DD /* SentenceBuilderView.swift in Sources */,
|
|
60E86BABE2735E2052B99DF3 /* SettingsView.swift in Sources */,
|
|
D3FFE73A5AD27F1759F50727 /* SpeechService.swift in Sources */,
|
|
9D9FD3853C5C969C62AE9999 /* StartupCoordinator.swift in Sources */,
|
|
E814A9CF1067313F74B509C6 /* StoreInspector.swift in Sources */,
|
|
36F92EBAEB0E5F2B010401EF /* StreakCalendarView.swift in Sources */,
|
|
6ED2AC2CAA54688161D4B920 /* SyncStatusMonitor.swift in Sources */,
|
|
D40B4E919DE379C50265CA9F /* SyncToast.swift in Sources */,
|
|
AAC6F85A1C3B6C1186E1656A /* TenseEndingTable.swift in Sources */,
|
|
0A89DCC82BE11605CB866DEF /* TenseInfo.swift in Sources */,
|
|
46943ACFABF329DE1CBFC471 /* TensePill.swift in Sources */,
|
|
D7456B289D135CEB3A15122B /* TestResult.swift in Sources */,
|
|
27BA7FA9356467846A07697D /* TypingView.swift in Sources */,
|
|
943A94A8C71919F3EFC0E8FA /* UserProgress.swift in Sources */,
|
|
50E0095A23E119D1AB561232 /* VerbDetailView.swift in Sources */,
|
|
81FA7EBCF18F0AAE0BF385C3 /* VerbListView.swift in Sources */,
|
|
4005E258FDF03C8B3A0D53BD /* VocabFlashcardView.swift in Sources */,
|
|
6BB4B0A655E6CB6F82D81B5A /* WeekTestView.swift in Sources */,
|
|
E99473B7DF9BCAE150E9D1E1 /* WidgetDataService.swift in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
217A29BCEDD9D44B6DD85AF6 /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
D6B67523714E0B3618391956 /* CombinedWidget.swift in Sources */,
|
|
5EA915FFA906C5C2938FCADA /* ConjugaWidgetBundle.swift in Sources */,
|
|
ED0401D05A7C2B4C55057A88 /* DailyProgressWidget.swift in Sources */,
|
|
4C3484403FD96E37DA4BEA66 /* NewWordIntent.swift in Sources */,
|
|
5A3246026E68AB6483126D0B /* WeekProgressWidget.swift in Sources */,
|
|
6D4A29280FDD99B8E18AF264 /* WidgetDataReader.swift in Sources */,
|
|
00BEC0BDBB49198022D9852E /* WordOfDayWidget.swift in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin PBXTargetDependency section */
|
|
0B370CF10B68E386093E5BB2 /* PBXTargetDependency */ = {
|
|
isa = PBXTargetDependency;
|
|
target = F73909B4044081DB8F6272AF /* ConjugaWidgetExtension */;
|
|
targetProxy = 642028B6CDF96AC823DD42DD /* PBXContainerItemProxy */;
|
|
};
|
|
/* End PBXTargetDependency section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
1FF8E3681DEF15C97149EF8A /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
CLANG_WARN_COMMA = YES;
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
COPY_PHASE_STRIP = NO;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
|
|
MARKETING_VERSION = 1.0.0;
|
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
MTL_FAST_MATH = YES;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SDKROOT = iphoneos;
|
|
SWIFT_COMPILATION_MODE = wholemodule;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
|
SWIFT_VERSION = 6.0;
|
|
};
|
|
name = Release;
|
|
};
|
|
30F9C426EB50A8833B5F08C6 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CODE_SIGN_ENTITLEMENTS = ConjugaWidget/ConjugaWidget.entitlements;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
|
ENABLE_DEBUG_DYLIB = NO;
|
|
INFOPLIST_FILE = ConjugaWidget/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
"@executable_path/../../Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.conjuga.app.widget;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_STRICT_CONCURRENCY = complete;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Release;
|
|
};
|
|
6E8CD3A87B2AD9F2BA123386 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_ENTITLEMENTS = Conjuga/Conjuga.entitlements;
|
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
|
ENABLE_DEBUG_DYLIB = NO;
|
|
INFOPLIST_FILE = Conjuga/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.conjuga.app;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_STRICT_CONCURRENCY = complete;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Debug;
|
|
};
|
|
8FCEEF7252C3BF32AE11488A /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CODE_SIGN_ENTITLEMENTS = ConjugaWidget/ConjugaWidget.entitlements;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
|
ENABLE_DEBUG_DYLIB = NO;
|
|
INFOPLIST_FILE = ConjugaWidget/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
"@executable_path/../../Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.conjuga.app.widget;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_STRICT_CONCURRENCY = complete;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Debug;
|
|
};
|
|
97D5F61C790E5700F45F7125 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
CODE_SIGN_ENTITLEMENTS = Conjuga/Conjuga.entitlements;
|
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEVELOPMENT_TEAM = V3PF3M6B6U;
|
|
ENABLE_DEBUG_DYLIB = NO;
|
|
INFOPLIST_FILE = Conjuga/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.conjuga.app;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_STRICT_CONCURRENCY = complete;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Release;
|
|
};
|
|
B9223DC55BB69E9AB81B59AE /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
CLANG_WARN_COMMA = YES;
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
COPY_PHASE_STRIP = NO;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_TESTABILITY = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
"$(inherited)",
|
|
"DEBUG=1",
|
|
);
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
|
|
MARKETING_VERSION = 1.0.0;
|
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
MTL_FAST_MATH = YES;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SDKROOT = iphoneos;
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
SWIFT_VERSION = 6.0;
|
|
};
|
|
name = Debug;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
6D3865D764BE65B4E10E971C /* Build configuration list for PBXNativeTarget "Conjuga" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
6E8CD3A87B2AD9F2BA123386 /* Debug */,
|
|
97D5F61C790E5700F45F7125 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
EA7E12CF28EB750C2B8BB2F1 /* Build configuration list for PBXNativeTarget "ConjugaWidgetExtension" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
8FCEEF7252C3BF32AE11488A /* Debug */,
|
|
30F9C426EB50A8833B5F08C6 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
F011A5DA3101F6F7CA7D2D95 /* Build configuration list for PBXProject "Conjuga" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
B9223DC55BB69E9AB81B59AE /* Debug */,
|
|
1FF8E3681DEF15C97149EF8A /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Debug;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
|
|
/* Begin XCLocalSwiftPackageReference section */
|
|
548B46ED3C40F5F28A5ADCC6 /* XCLocalSwiftPackageReference "SharedModels" */ = {
|
|
isa = XCLocalSwiftPackageReference;
|
|
relativePath = SharedModels;
|
|
};
|
|
/* End XCLocalSwiftPackageReference section */
|
|
|
|
/* Begin XCSwiftPackageProductDependency section */
|
|
4A4D7B02884EBA9ACD93F0FD /* SharedModels */ = {
|
|
isa = XCSwiftPackageProductDependency;
|
|
productName = SharedModels;
|
|
};
|
|
BCCBABD74CADDB118179D8E9 /* SharedModels */ = {
|
|
isa = XCSwiftPackageProductDependency;
|
|
productName = SharedModels;
|
|
};
|
|
/* End XCSwiftPackageProductDependency section */
|
|
};
|
|
rootObject = AB7396D9C3E14B65B5238368 /* Project object */;
|
|
}
|