Brain Service: - Playwright stealth crawler replacing browserless (og:image, Readability, Reddit JSON API) - AI classification with tag definitions and folder assignment - YouTube video download via yt-dlp - Karakeep migration complete (96 items) - Taxonomy management (folders with icons/colors, tags) - Discovery shuffle, sort options, search (Meilisearch + pgvector) - Item tag/folder editing, card color accents RSS Reader Service: - Custom FastAPI reader replacing Miniflux - Feed management (add/delete/refresh), category support - Full article extraction via Readability - Background content fetching for new entries - Mark all read with confirmation - Infinite scroll, retention cleanup (30/60 day) - 17 feeds migrated from Miniflux iOS App (SwiftUI): - Native iOS 17+ app with @Observable architecture - Cookie-based auth, configurable gateway URL - Dashboard with custom background photo + frosted glass widgets - Full fitness module (today/templates/goals/food library) - AI assistant chat (fitness + brain, raw JSON state management) - 120fps ProMotion support AI Assistants (Gateway): - Unified dispatcher with fitness/brain domain detection - Fitness: natural language food logging, photo analysis, multi-item splitting - Brain: save/append/update/delete notes, search & answer, undo support - Madiha user gets fitness-only (brain disabled) Firefox Extension: - One-click save to Brain from any page - Login with platform credentials - Right-click context menu (save page/link/image) - Notes field for URL saves - Signed and published on AMO Other: - Reader bookmark button routes to Brain (was Karakeep) - Fitness food library with "Add" button + add-to-meal popup - Kindle send file size check (25MB SMTP2GO limit) - Atelier UI as default (useAtelierShell=true) - Mobile upload box in nav drawer Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
468 lines
23 KiB
Plaintext
468 lines
23 KiB
Plaintext
// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 56;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
F0819A9915F94DECBA67FA89 /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8A4F2EEC3A4EB6B78AA13E /* Config.swift */; };
|
|
DD3F166E894F43848CE426C7 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42807C65E9754543B46DBF62 /* ContentView.swift */; };
|
|
C9B59C679DF04512BF9F5C69 /* PlatformApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F2CEB00333491ABEE288C5 /* PlatformApp.swift */; };
|
|
F35DB630BE0A46799AEC15A5 /* APIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F8C700FA4E43818AA54E03 /* APIClient.swift */; };
|
|
B20540C8E87F42C2AF4AB477 /* AuthManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4094EAAB413433FA0D70AB9 /* AuthManager.swift */; };
|
|
779FB7AAB0244CB68E5C69C8 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 879AEC4095F64FE7B851B6F9 /* LoginView.swift */; };
|
|
FB0A7F362F5944C0BF0365C5 /* AssistantChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F36ACA2BA1243B0B8954E8F /* AssistantChatView.swift */; };
|
|
45E92CD7F85A49BFA5C05F20 /* AssistantViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4073DF36CE74BB4A5B4F22A /* AssistantViewModel.swift */; };
|
|
2BC13A589E944CE3A4C6B708 /* FitnessAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = E149FC023D964ADA86C96EB5 /* FitnessAPI.swift */; };
|
|
F7F65E02FB974FACA76AFAF4 /* FitnessModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4DF9C7493C2402A8B8571DB /* FitnessModels.swift */; };
|
|
CF63000DFF4F4F728281A31D /* FitnessRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D82B05FA8D84CA98E18C0E2 /* FitnessRepository.swift */; };
|
|
400DCD1DE0534E9E856319F8 /* FoodSearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1822D8E4AFBF4B14A5E79050 /* FoodSearchViewModel.swift */; };
|
|
96AFE69ACFB54D97A7C3A4A0 /* GoalsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCDED359C0EE4CC2986AE602 /* GoalsViewModel.swift */; };
|
|
84CFFF27A99940B5875A65DA /* TemplatesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FED646258BA4DFA8D6078EC /* TemplatesViewModel.swift */; };
|
|
03EBDF20EDF547EDB4B177CF /* TodayViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4F05CCCEE9A4E0FA6BC6795 /* TodayViewModel.swift */; };
|
|
92E276F3CA8D4400827B2F99 /* AddFoodSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C60F0E61463489689BC84E3 /* AddFoodSheet.swift */; };
|
|
C1D87BF5F61847BD952F5C65 /* EntryDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C3C34A418B5428A8B2A62B7 /* EntryDetailView.swift */; };
|
|
E48F9E44708544D781FC8ACD /* FitnessTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D994E5BA694983BA293390 /* FitnessTabView.swift */; };
|
|
2F5AF62DD13D4B0EB8E338A0 /* FoodLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27103840483E431EB0275752 /* FoodLibraryView.swift */; };
|
|
6FE7AC0C375242398A5118B4 /* FoodSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98379942DAA4FB992CE1A33 /* FoodSearchView.swift */; };
|
|
8064B019D0B742749713A35E /* GoalsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A511884CFF6D40198C9A326B /* GoalsView.swift */; };
|
|
060E0115D90647A593BCF8B7 /* MealSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EA9E7B0D02A4E13ADD734A4 /* MealSectionView.swift */; };
|
|
7902B9F4789C4C6FB080AF0D /* TemplatesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E59243273F494E9C1F63CB /* TemplatesView.swift */; };
|
|
A74F6C2CDEF4487383684BB9 /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CE2113036D74BBA9D3DA571 /* TodayView.swift */; };
|
|
75DB623876D54D0BAF32B59F /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE0067210C0C4833BEF98835 /* HomeView.swift */; };
|
|
340D12BB6F234169953639F6 /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F60B0BE1ED854A1F859C8B6F /* HomeViewModel.swift */; };
|
|
D2CF33B6FE4142CA9995E125 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D88C79EBC3A4E3791482B07 /* LoadingView.swift */; };
|
|
CF9C74396EA449D2BDEBAA09 /* MacroBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16A32CB0269E4AF79A96B241 /* MacroBar.swift */; };
|
|
C6D6C2D5882245A895C8B606 /* MacroRing.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF6CAF2179B48C6B338233C /* MacroRing.swift */; };
|
|
86D08C3CC8B34AEDB1254EC1 /* Color+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C04E1FF020544D08EDD3CCA /* Color+Extensions.swift */; };
|
|
C367EA266AED4AB7842B8A6F /* Date+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 929DC19B5C81454EB58087AA /* Date+Extensions.swift */; };
|
|
F1AA651AF622471EA697E2CA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4C75844F44B444F4A8228158 /* Assets.xcassets */; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
AF8A4F2EEC3A4EB6B78AA13E /* Config.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Config.swift"; sourceTree = "<group>"; };
|
|
42807C65E9754543B46DBF62 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ContentView.swift"; sourceTree = "<group>"; };
|
|
47F2CEB00333491ABEE288C5 /* PlatformApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PlatformApp.swift"; sourceTree = "<group>"; };
|
|
63F8C700FA4E43818AA54E03 /* APIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIClient.swift"; sourceTree = "<group>"; };
|
|
E4094EAAB413433FA0D70AB9 /* AuthManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AuthManager.swift"; sourceTree = "<group>"; };
|
|
879AEC4095F64FE7B851B6F9 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "LoginView.swift"; sourceTree = "<group>"; };
|
|
5F36ACA2BA1243B0B8954E8F /* AssistantChatView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AssistantChatView.swift"; sourceTree = "<group>"; };
|
|
F4073DF36CE74BB4A5B4F22A /* AssistantViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AssistantViewModel.swift"; sourceTree = "<group>"; };
|
|
E149FC023D964ADA86C96EB5 /* FitnessAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FitnessAPI.swift"; sourceTree = "<group>"; };
|
|
B4DF9C7493C2402A8B8571DB /* FitnessModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FitnessModels.swift"; sourceTree = "<group>"; };
|
|
6D82B05FA8D84CA98E18C0E2 /* FitnessRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FitnessRepository.swift"; sourceTree = "<group>"; };
|
|
1822D8E4AFBF4B14A5E79050 /* FoodSearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FoodSearchViewModel.swift"; sourceTree = "<group>"; };
|
|
DCDED359C0EE4CC2986AE602 /* GoalsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GoalsViewModel.swift"; sourceTree = "<group>"; };
|
|
4FED646258BA4DFA8D6078EC /* TemplatesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TemplatesViewModel.swift"; sourceTree = "<group>"; };
|
|
B4F05CCCEE9A4E0FA6BC6795 /* TodayViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TodayViewModel.swift"; sourceTree = "<group>"; };
|
|
8C60F0E61463489689BC84E3 /* AddFoodSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AddFoodSheet.swift"; sourceTree = "<group>"; };
|
|
3C3C34A418B5428A8B2A62B7 /* EntryDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EntryDetailView.swift"; sourceTree = "<group>"; };
|
|
A5D994E5BA694983BA293390 /* FitnessTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FitnessTabView.swift"; sourceTree = "<group>"; };
|
|
27103840483E431EB0275752 /* FoodLibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FoodLibraryView.swift"; sourceTree = "<group>"; };
|
|
A98379942DAA4FB992CE1A33 /* FoodSearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FoodSearchView.swift"; sourceTree = "<group>"; };
|
|
A511884CFF6D40198C9A326B /* GoalsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GoalsView.swift"; sourceTree = "<group>"; };
|
|
6EA9E7B0D02A4E13ADD734A4 /* MealSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MealSectionView.swift"; sourceTree = "<group>"; };
|
|
D0E59243273F494E9C1F63CB /* TemplatesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TemplatesView.swift"; sourceTree = "<group>"; };
|
|
3CE2113036D74BBA9D3DA571 /* TodayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TodayView.swift"; sourceTree = "<group>"; };
|
|
FE0067210C0C4833BEF98835 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeView.swift"; sourceTree = "<group>"; };
|
|
F60B0BE1ED854A1F859C8B6F /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeViewModel.swift"; sourceTree = "<group>"; };
|
|
1D88C79EBC3A4E3791482B07 /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "LoadingView.swift"; sourceTree = "<group>"; };
|
|
16A32CB0269E4AF79A96B241 /* MacroBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MacroBar.swift"; sourceTree = "<group>"; };
|
|
FDF6CAF2179B48C6B338233C /* MacroRing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MacroRing.swift"; sourceTree = "<group>"; };
|
|
1C04E1FF020544D08EDD3CCA /* Color+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+Extensions.swift"; sourceTree = "<group>"; };
|
|
929DC19B5C81454EB58087AA /* Date+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+Extensions.swift"; sourceTree = "<group>"; };
|
|
4C75844F44B444F4A8228158 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
0FDDDCE767CF4BF6B6D41677 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
4B7D1D629553482DA83FE35D /* Platform.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Platform.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXGroup section */
|
|
037C8FC2A4954FCE91D25A60 /* Platform */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
029D94F090324446B082BA63 /* Platform */,
|
|
B5E96950287B4399909152DA /* Products */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
B5E96950287B4399909152DA /* Products */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
4B7D1D629553482DA83FE35D /* Platform.app */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
029D94F090324446B082BA63 /* Platform */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
AF8A4F2EEC3A4EB6B78AA13E /* Config.swift */,
|
|
42807C65E9754543B46DBF62 /* ContentView.swift */,
|
|
47F2CEB00333491ABEE288C5 /* PlatformApp.swift */,
|
|
0FDDDCE767CF4BF6B6D41677 /* Info.plist */,
|
|
4C75844F44B444F4A8228158 /* Assets.xcassets */,
|
|
0DA26F997DC3429889C0B23A /* Core */,
|
|
8CF6CD4493114827807F5F6D /* Features */,
|
|
047E80495324497B8522ACEC /* Shared */,
|
|
);
|
|
path = "Platform"; sourceTree = "<group>";
|
|
};
|
|
0DA26F997DC3429889C0B23A /* Core */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Core"; sourceTree = "<group>";
|
|
};
|
|
8CF6CD4493114827807F5F6D /* Features */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
824CFF8CF00F41C590FB148C /* Auth */,
|
|
DAD6984656494252A7E8A5DC /* Home */,
|
|
C94148B12F3443238D763D27 /* Fitness */,
|
|
64DDC35730F64FAFA4F2962C /* Assistant */,
|
|
);
|
|
path = "Features"; sourceTree = "<group>";
|
|
};
|
|
824CFF8CF00F41C590FB148C /* Auth */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Auth"; sourceTree = "<group>";
|
|
};
|
|
DAD6984656494252A7E8A5DC /* Home */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Home"; sourceTree = "<group>";
|
|
};
|
|
64DDC35730F64FAFA4F2962C /* Assistant */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Assistant"; sourceTree = "<group>";
|
|
};
|
|
C94148B12F3443238D763D27 /* Fitness */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
822A533A33DF4047882688E2 /* Models */,
|
|
969F179A1EB645CCBAECE591 /* API */,
|
|
A5B64A87024F4F66B4A5D8B4 /* Repository */,
|
|
4B89164541C1493A80664F6D /* ViewModels */,
|
|
BB4E0BAFB7DA45A68F0480A4 /* Views */,
|
|
);
|
|
path = "Fitness"; sourceTree = "<group>";
|
|
};
|
|
969F179A1EB645CCBAECE591 /* API */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "API"; sourceTree = "<group>";
|
|
};
|
|
822A533A33DF4047882688E2 /* Models */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Models"; sourceTree = "<group>";
|
|
};
|
|
A5B64A87024F4F66B4A5D8B4 /* Repository */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Repository"; sourceTree = "<group>";
|
|
};
|
|
4B89164541C1493A80664F6D /* ViewModels */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "ViewModels"; sourceTree = "<group>";
|
|
};
|
|
BB4E0BAFB7DA45A68F0480A4 /* Views */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Views"; sourceTree = "<group>";
|
|
};
|
|
047E80495324497B8522ACEC /* Shared */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
7F73AF13180C459B8275CD39 /* Components */,
|
|
D3B81404D3A24B66B6848BB6 /* Extensions */,
|
|
);
|
|
path = "Shared"; sourceTree = "<group>";
|
|
};
|
|
7F73AF13180C459B8275CD39 /* Components */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Components"; sourceTree = "<group>";
|
|
};
|
|
D3B81404D3A24B66B6848BB6 /* Extensions */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
,
|
|
);
|
|
path = "Extensions"; sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
B66E7E9630EA415E95CE3A85 /* Platform */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 0025AB77304B486EB7AE3B2B /* Build configuration list for PBXNativeTarget "Platform" */;
|
|
buildPhases = (
|
|
F8ADC26469734B15B38E123A /* Sources */,
|
|
078D546291EB4BBFA91F6661 /* Frameworks */,
|
|
841189B510034E9A81A14A8C /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
name = Platform;
|
|
productName = Platform;
|
|
productReference = 4B7D1D629553482DA83FE35D /* Platform.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
1C4E1290ED4B4E0D832C6DD0 /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
BuildIndependentTargetsInParallel = 1;
|
|
LastSwiftUpdateCheck = 1540;
|
|
LastUpgradeCheck = 1540;
|
|
};
|
|
buildConfigurationList = E9E082A339DE4D0DAF491E2B /* Build configuration list for PBXProject "Platform" */;
|
|
compatibilityVersion = "Xcode 14.0";
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
en,
|
|
Base,
|
|
);
|
|
mainGroup = 037C8FC2A4954FCE91D25A60 /* Platform */;
|
|
productRefGroup = B5E96950287B4399909152DA /* Products */;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
B66E7E9630EA415E95CE3A85 /* Platform */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
841189B510034E9A81A14A8C /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
F1AA651AF622471EA697E2CA /* Assets.xcassets in Resources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
F8ADC26469734B15B38E123A /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
F0819A9915F94DECBA67FA89 /* Config.swift in Sources */,
|
|
DD3F166E894F43848CE426C7 /* ContentView.swift in Sources */,
|
|
C9B59C679DF04512BF9F5C69 /* PlatformApp.swift in Sources */,
|
|
F35DB630BE0A46799AEC15A5 /* APIClient.swift in Sources */,
|
|
B20540C8E87F42C2AF4AB477 /* AuthManager.swift in Sources */,
|
|
779FB7AAB0244CB68E5C69C8 /* LoginView.swift in Sources */,
|
|
FB0A7F362F5944C0BF0365C5 /* AssistantChatView.swift in Sources */,
|
|
45E92CD7F85A49BFA5C05F20 /* AssistantViewModel.swift in Sources */,
|
|
2BC13A589E944CE3A4C6B708 /* FitnessAPI.swift in Sources */,
|
|
F7F65E02FB974FACA76AFAF4 /* FitnessModels.swift in Sources */,
|
|
CF63000DFF4F4F728281A31D /* FitnessRepository.swift in Sources */,
|
|
400DCD1DE0534E9E856319F8 /* FoodSearchViewModel.swift in Sources */,
|
|
96AFE69ACFB54D97A7C3A4A0 /* GoalsViewModel.swift in Sources */,
|
|
84CFFF27A99940B5875A65DA /* TemplatesViewModel.swift in Sources */,
|
|
03EBDF20EDF547EDB4B177CF /* TodayViewModel.swift in Sources */,
|
|
92E276F3CA8D4400827B2F99 /* AddFoodSheet.swift in Sources */,
|
|
C1D87BF5F61847BD952F5C65 /* EntryDetailView.swift in Sources */,
|
|
E48F9E44708544D781FC8ACD /* FitnessTabView.swift in Sources */,
|
|
2F5AF62DD13D4B0EB8E338A0 /* FoodLibraryView.swift in Sources */,
|
|
6FE7AC0C375242398A5118B4 /* FoodSearchView.swift in Sources */,
|
|
8064B019D0B742749713A35E /* GoalsView.swift in Sources */,
|
|
060E0115D90647A593BCF8B7 /* MealSectionView.swift in Sources */,
|
|
7902B9F4789C4C6FB080AF0D /* TemplatesView.swift in Sources */,
|
|
A74F6C2CDEF4487383684BB9 /* TodayView.swift in Sources */,
|
|
75DB623876D54D0BAF32B59F /* HomeView.swift in Sources */,
|
|
340D12BB6F234169953639F6 /* HomeViewModel.swift in Sources */,
|
|
D2CF33B6FE4142CA9995E125 /* LoadingView.swift in Sources */,
|
|
CF9C74396EA449D2BDEBAA09 /* MacroBar.swift in Sources */,
|
|
C6D6C2D5882245A895C8B606 /* MacroRing.swift in Sources */,
|
|
86D08C3CC8B34AEDB1254EC1 /* Color+Extensions.swift in Sources */,
|
|
C367EA266AED4AB7842B8A6F /* Date+Extensions.swift in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
|
078D546291EB4BBFA91F6661 /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
B7446285A53C413C9BA0229C /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
ASCETECHNOLOGIES_AWARE = YES;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_TESTABILITY = YES;
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
"DEBUG=1",
|
|
"$(inherited)",
|
|
);
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
|
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
|
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
};
|
|
name = Debug;
|
|
};
|
|
D697F1D80CFA4E629D58BE0A /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
|
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
SDKROOT = iphoneos;
|
|
SWIFT_COMPILATION_MODE = wholemodule;
|
|
VALIDATE_PRODUCT = YES;
|
|
};
|
|
name = Release;
|
|
};
|
|
C29C67A4DC4943FB8112E677 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
DEVELOPMENT_TEAM = "";
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
INFOPLIST_FILE = Platform/Info.plist;
|
|
INFOPLIST_KEY_CFBundleDisplayName = Platform;
|
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
MARKETING_VERSION = 1.0;
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.quadjourney.platform;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
|
SUPPORTS_MACCATALYST = NO;
|
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Debug;
|
|
};
|
|
5289CC82B720470DA5F3181B /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
DEVELOPMENT_TEAM = "";
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
INFOPLIST_FILE = Platform/Info.plist;
|
|
INFOPLIST_KEY_CFBundleDisplayName = Platform;
|
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
|
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
|
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
MARKETING_VERSION = 1.0;
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.quadjourney.platform;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
|
SUPPORTS_MACCATALYST = NO;
|
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Release;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
E9E082A339DE4D0DAF491E2B /* Build configuration list for PBXProject "Platform" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
B7446285A53C413C9BA0229C /* Debug */,
|
|
D697F1D80CFA4E629D58BE0A /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
0025AB77304B486EB7AE3B2B /* Build configuration list for PBXNativeTarget "Platform" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
C29C67A4DC4943FB8112E677 /* Debug */,
|
|
5289CC82B720470DA5F3181B /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
|
|
};
|
|
rootObject = 1C4E1290ED4B4E0D832C6DD0 /* Project object */;
|
|
}
|