From 26eb3097d88210d5e99cbccfa160b1a16ed725a9 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:12:46 -0500 Subject: [PATCH 1/9] [Firebase AI] Switch to Xcode 16 project format --- firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index 015ff616d..811b35132 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 56; + objectVersion = 77; objects = { /* Begin PBXBuildFile section */ @@ -425,6 +425,7 @@ BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1510; LastUpgradeCheck = 1510; + ORGANIZATIONNAME = "Google LLC"; TargetAttributes = { 8848C82E2B0D04BC007B434F = { CreatedOnToolsVersion = 15.1; @@ -432,7 +433,6 @@ }; }; buildConfigurationList = 8848C82A2B0D04BC007B434F /* Build configuration list for PBXProject "FirebaseAIExample" */; - compatibilityVersion = "Xcode 14.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -446,6 +446,7 @@ DEFECAAB2D7BB49700EF9621 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, 86A67E8B2E9FECCF00EDFB8A /* XCRemoteSwiftPackageReference "swift-cmark" */, ); + preferredProjectObjectVersion = 77; productRefGroup = 8848C8302B0D04BC007B434F /* Products */; projectDirPath = ""; projectRoot = ""; From 5ebee44aabbbd7b9fa33e58019cf7a3710e2dac9 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:15:16 -0500 Subject: [PATCH 2/9] Convert `FirebaseAIExample` from Group to Folder --- .../project.pbxproj | 56 ++++++------------- 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index 811b35132..0c360cc92 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -19,9 +19,7 @@ 86BB55EC2E8B2D6D0054B8B5 /* FunctionCallingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */; }; 86BB55ED2E8B2D6D0054B8B5 /* ChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F582B11131900C08E95 /* ChatMessage.swift */; }; 86BB55EE2E8B2D6D0054B8B5 /* ErrorDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889873842B208563005B4896 /* ErrorDetailsView.swift */; }; - 86BB55EF2E8B2D6D0054B8B5 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8848C8342B0D04BC007B434F /* ContentView.swift */; }; 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; - 86BB55F12E8B2D6D0054B8B5 /* FirebaseAIExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8848C8322B0D04BC007B434F /* FirebaseAIExampleApp.swift */; }; 86BB55F22E8B2D6D0054B8B5 /* ConversationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F562B1112F600C08E95 /* ConversationViewModel.swift */; }; 86BB55F32E8B2D6D0054B8B5 /* MessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F5A2B11133E00C08E95 /* MessageView.swift */; }; 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */; }; @@ -35,17 +33,11 @@ 86BB55FC2E8B2D6D0054B8B5 /* GroundedResponseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE793DD2E256D3900708F02 /* GroundedResponseView.swift */; }; 86BB55FF2E8B2D6D0054B8B5 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E42E8B2D6D0054B8B5 /* MarkdownUI */; }; 86BB56002E8B2D6D0054B8B5 /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E62E8B2D6D0054B8B5 /* GenerativeAIUIComponents */; }; - 86BB56022E8B2D6D0054B8B5 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8848C8392B0D04BD007B434F /* Preview Assets.xcassets */; }; - 86BB56032E8B2D6D0054B8B5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8848C8362B0D04BD007B434F /* Assets.xcassets */; }; 86BB56042E8B2D6D0054B8B5 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 869200B22B879C4F00482873 /* GoogleService-Info.plist */; }; 86C1F4832BC726150026816F /* FunctionCallingScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F47E2BC726150026816F /* FunctionCallingScreen.swift */; }; 86C1F4842BC726150026816F /* FunctionCallingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */; }; 88263BF02B239C09008AB09B /* ErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88263BEE2B239BFE008AB09B /* ErrorView.swift */; }; 88263BF12B239C11008AB09B /* ErrorDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889873842B208563005B4896 /* ErrorDetailsView.swift */; }; - 8848C8332B0D04BC007B434F /* FirebaseAIExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8848C8322B0D04BC007B434F /* FirebaseAIExampleApp.swift */; }; - 8848C8352B0D04BC007B434F /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8848C8342B0D04BC007B434F /* ContentView.swift */; }; - 8848C8372B0D04BD007B434F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8848C8362B0D04BD007B434F /* Assets.xcassets */; }; - 8848C83A2B0D04BD007B434F /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8848C8392B0D04BD007B434F /* Preview Assets.xcassets */; }; 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; 886F95D82B17BA420036F07A /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95D72B17BA420036F07A /* MarkdownUI */; }; @@ -83,10 +75,6 @@ 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentViewModel.swift; sourceTree = ""; }; 88263BEE2B239BFE008AB09B /* ErrorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorView.swift; sourceTree = ""; }; 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 8848C8322B0D04BC007B434F /* FirebaseAIExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAIExampleApp.swift; sourceTree = ""; }; - 8848C8342B0D04BC007B434F /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - 8848C8362B0D04BD007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 8848C8392B0D04BD007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 8848C84A2B0D051F007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 8848C84D2B0D051F007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 8848C85C2B0D056D007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -110,6 +98,14 @@ DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenViewModel.swift; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 863E95812EC7B70200BE4F4E /* FirebaseAIExample */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = FirebaseAIExample; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 86BB55FD2E8B2D6D0054B8B5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -211,7 +207,7 @@ DEFECAA82D7B4CCD00EF9621 /* ImagenScreen */, 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */, 869200B22B879C4F00482873 /* GoogleService-Info.plist */, - 8848C8312B0D04BC007B434F /* FirebaseAIExample */, + 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, 8848C8452B0D051E007B434F /* GenerativeAITextExample */, 8848C8572B0D056C007B434F /* GenerativeAIMultimodalExample */, 88E10F432B110D5300C08E95 /* ChatExample */, @@ -230,25 +226,6 @@ name = Products; sourceTree = ""; }; - 8848C8312B0D04BC007B434F /* FirebaseAIExample */ = { - isa = PBXGroup; - children = ( - 8848C8322B0D04BC007B434F /* FirebaseAIExampleApp.swift */, - 8848C8342B0D04BC007B434F /* ContentView.swift */, - 8848C8362B0D04BD007B434F /* Assets.xcassets */, - 8848C8382B0D04BD007B434F /* Preview Content */, - ); - path = FirebaseAIExample; - sourceTree = ""; - }; - 8848C8382B0D04BD007B434F /* Preview Content */ = { - isa = PBXGroup; - children = ( - 8848C8392B0D04BD007B434F /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; 8848C8452B0D051E007B434F /* GenerativeAITextExample */ = { isa = PBXGroup; children = ( @@ -379,6 +356,9 @@ ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, + ); name = FirebaseAIExampleZip; packageProductDependencies = ( 86BB55E42E8B2D6D0054B8B5 /* MarkdownUI */, @@ -403,6 +383,9 @@ ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, + ); name = FirebaseAIExample; packageProductDependencies = ( 886F95D72B17BA420036F07A /* MarkdownUI */, @@ -440,6 +423,7 @@ Base, ); mainGroup = 8848C8262B0D04BC007B434F; + minimizedProjectReferenceProxies = 1; packageReferences = ( 88209C212B0FBDF700F64795 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */, DEA09AC32B1FCE22001962D9 /* XCRemoteSwiftPackageReference "NetworkImage" */, @@ -462,8 +446,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 86BB56022E8B2D6D0054B8B5 /* Preview Assets.xcassets in Resources */, - 86BB56032E8B2D6D0054B8B5 /* Assets.xcassets in Resources */, 86BB56042E8B2D6D0054B8B5 /* GoogleService-Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -472,8 +454,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8848C83A2B0D04BD007B434F /* Preview Assets.xcassets in Resources */, - 8848C8372B0D04BD007B434F /* Assets.xcassets in Resources */, 869200B32B879C4F00482873 /* GoogleService-Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -492,9 +472,7 @@ 86BB55EC2E8B2D6D0054B8B5 /* FunctionCallingViewModel.swift in Sources */, 86BB55ED2E8B2D6D0054B8B5 /* ChatMessage.swift in Sources */, 86BB55EE2E8B2D6D0054B8B5 /* ErrorDetailsView.swift in Sources */, - 86BB55EF2E8B2D6D0054B8B5 /* ContentView.swift in Sources */, 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */, - 86BB55F12E8B2D6D0054B8B5 /* FirebaseAIExampleApp.swift in Sources */, 86BB55F22E8B2D6D0054B8B5 /* ConversationViewModel.swift in Sources */, 86BB55F32E8B2D6D0054B8B5 /* MessageView.swift in Sources */, 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */, @@ -522,9 +500,7 @@ 86C1F4842BC726150026816F /* FunctionCallingViewModel.swift in Sources */, 886F95DE2B17D5010036F07A /* ChatMessage.swift in Sources */, 88263BF12B239C11008AB09B /* ErrorDetailsView.swift in Sources */, - 8848C8352B0D04BC007B434F /* ContentView.swift in Sources */, 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */, - 8848C8332B0D04BC007B434F /* FirebaseAIExampleApp.swift in Sources */, 886F95E02B17D5010036F07A /* ConversationViewModel.swift in Sources */, 886F95DD2B17D5010036F07A /* MessageView.swift in Sources */, 886F95DC2B17BAEF0036F07A /* PhotoReasoningScreen.swift in Sources */, From 8cc7efe8bcfb1429b849f5a3ebe421c1d3891cff Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:20:21 -0500 Subject: [PATCH 3/9] Move `ChatExample` to `FirebaseAIExample` subfolder --- .../project.pbxproj | 114 ------------------ .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../ChatExample/Assets.xcassets/Contents.json | 0 .../ChatExample/Models/ChatMessage.swift | 0 .../Preview Assets.xcassets/Contents.json | 0 .../Screens/ConversationScreen.swift | 0 .../ViewModels/ConversationViewModel.swift | 0 .../ChatExample/Views/BouncingDots.swift | 0 .../ChatExample/Views/ErrorDetailsView.swift | 0 .../ChatExample/Views/ErrorView.swift | 0 .../GoogleSearchSuggestionView.swift | 0 .../Grounding/GroundedResponseView.swift | 0 .../ChatExample/Views/MessageView.swift | 0 14 files changed, 114 deletions(-) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Assets.xcassets/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Models/ChatMessage.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Screens/ConversationScreen.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/ViewModels/ConversationViewModel.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Views/BouncingDots.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Views/ErrorDetailsView.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Views/ErrorView.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Views/Grounding/GoogleSearchSuggestionView.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Views/Grounding/GroundedResponseView.swift (100%) rename firebaseai/{ => FirebaseAIExample}/ChatExample/Views/MessageView.swift (100%) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index 0c360cc92..b400a66d1 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -15,42 +15,24 @@ 86A67E952E9FED2200EDFB8A /* cmark-gfm in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E942E9FED2200EDFB8A /* cmark-gfm */; }; 86A67E972E9FED2200EDFB8A /* cmark-gfm-extensions in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E962E9FED2200EDFB8A /* cmark-gfm-extensions */; }; 86BB55EA2E8B2D6D0054B8B5 /* FunctionCallingScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F47E2BC726150026816F /* FunctionCallingScreen.swift */; }; - 86BB55EB2E8B2D6D0054B8B5 /* BouncingDots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F5C2B11135000C08E95 /* BouncingDots.swift */; }; 86BB55EC2E8B2D6D0054B8B5 /* FunctionCallingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */; }; - 86BB55ED2E8B2D6D0054B8B5 /* ChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F582B11131900C08E95 /* ChatMessage.swift */; }; - 86BB55EE2E8B2D6D0054B8B5 /* ErrorDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889873842B208563005B4896 /* ErrorDetailsView.swift */; }; 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; - 86BB55F22E8B2D6D0054B8B5 /* ConversationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F562B1112F600C08E95 /* ConversationViewModel.swift */; }; - 86BB55F32E8B2D6D0054B8B5 /* MessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F5A2B11133E00C08E95 /* MessageView.swift */; }; 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */; }; 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */; }; 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */; }; 86BB55F72E8B2D6D0054B8B5 /* PhotoReasoningViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8802666F2B0FC39000CF7CB6 /* PhotoReasoningViewModel.swift */; }; - 86BB55F82E8B2D6D0054B8B5 /* ConversationScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F542B1112CA00C08E95 /* ConversationScreen.swift */; }; - 86BB55F92E8B2D6D0054B8B5 /* ErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88263BEE2B239BFE008AB09B /* ErrorView.swift */; }; 86BB55FA2E8B2D6D0054B8B5 /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; - 86BB55FB2E8B2D6D0054B8B5 /* GoogleSearchSuggestionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE793DC2E256D3900708F02 /* GoogleSearchSuggestionView.swift */; }; - 86BB55FC2E8B2D6D0054B8B5 /* GroundedResponseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE793DD2E256D3900708F02 /* GroundedResponseView.swift */; }; 86BB55FF2E8B2D6D0054B8B5 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E42E8B2D6D0054B8B5 /* MarkdownUI */; }; 86BB56002E8B2D6D0054B8B5 /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E62E8B2D6D0054B8B5 /* GenerativeAIUIComponents */; }; 86BB56042E8B2D6D0054B8B5 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 869200B22B879C4F00482873 /* GoogleService-Info.plist */; }; 86C1F4832BC726150026816F /* FunctionCallingScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F47E2BC726150026816F /* FunctionCallingScreen.swift */; }; 86C1F4842BC726150026816F /* FunctionCallingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */; }; - 88263BF02B239C09008AB09B /* ErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88263BEE2B239BFE008AB09B /* ErrorView.swift */; }; - 88263BF12B239C11008AB09B /* ErrorDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889873842B208563005B4896 /* ErrorDetailsView.swift */; }; 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; 886F95D82B17BA420036F07A /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95D72B17BA420036F07A /* MarkdownUI */; }; 886F95DB2B17BAEF0036F07A /* PhotoReasoningViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8802666F2B0FC39000CF7CB6 /* PhotoReasoningViewModel.swift */; }; 886F95DC2B17BAEF0036F07A /* PhotoReasoningScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */; }; - 886F95DD2B17D5010036F07A /* MessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F5A2B11133E00C08E95 /* MessageView.swift */; }; - 886F95DE2B17D5010036F07A /* ChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F582B11131900C08E95 /* ChatMessage.swift */; }; - 886F95DF2B17D5010036F07A /* BouncingDots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F5C2B11135000C08E95 /* BouncingDots.swift */; }; - 886F95E02B17D5010036F07A /* ConversationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F562B1112F600C08E95 /* ConversationViewModel.swift */; }; - 886F95E12B17D5010036F07A /* ConversationScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88E10F542B1112CA00C08E95 /* ConversationScreen.swift */; }; 886F95E32B17D6630036F07A /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95E22B17D6630036F07A /* GenerativeAIUIComponents */; }; - AEE793DF2E256D3900708F02 /* GoogleSearchSuggestionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE793DC2E256D3900708F02 /* GoogleSearchSuggestionView.swift */; }; - AEE793E02E256D3900708F02 /* GroundedResponseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE793DD2E256D3900708F02 /* GroundedResponseView.swift */; }; DE26D95F2DBB3E9F007E6668 /* FirebaseAI in Frameworks */ = {isa = PBXBuildFile; productRef = DE26D95E2DBB3E9F007E6668 /* FirebaseAI */; }; DE907A812EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */; }; DE907A822EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */; }; @@ -73,23 +55,12 @@ 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoReasoningScreen.swift; sourceTree = ""; }; 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentScreen.swift; sourceTree = ""; }; 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentViewModel.swift; sourceTree = ""; }; - 88263BEE2B239BFE008AB09B /* ErrorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorView.swift; sourceTree = ""; }; 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8848C84A2B0D051F007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 8848C84D2B0D051F007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 8848C85C2B0D056D007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 8848C85F2B0D056D007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 889873842B208563005B4896 /* ErrorDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorDetailsView.swift; sourceTree = ""; }; 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = GenerativeAIUIComponents; sourceTree = ""; }; - 88E10F482B110D5400C08E95 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 88E10F4B2B110D5400C08E95 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 88E10F542B1112CA00C08E95 /* ConversationScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationScreen.swift; sourceTree = ""; }; - 88E10F562B1112F600C08E95 /* ConversationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationViewModel.swift; sourceTree = ""; }; - 88E10F582B11131900C08E95 /* ChatMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessage.swift; sourceTree = ""; }; - 88E10F5A2B11133E00C08E95 /* MessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageView.swift; sourceTree = ""; }; - 88E10F5C2B11135000C08E95 /* BouncingDots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BouncingDots.swift; sourceTree = ""; }; - AEE793DC2E256D3900708F02 /* GoogleSearchSuggestionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoogleSearchSuggestionView.swift; sourceTree = ""; }; - AEE793DD2E256D3900708F02 /* GroundedResponseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroundedResponseView.swift; sourceTree = ""; }; DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenerateContentFromTemplateScreen.swift; sourceTree = ""; }; DE907A832EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenerateContentFromTemplateViewModel.swift; sourceTree = ""; }; DE907A862EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenFromTemplateScreen.swift; sourceTree = ""; }; @@ -210,7 +181,6 @@ 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, 8848C8452B0D051E007B434F /* GenerativeAITextExample */, 8848C8572B0D056C007B434F /* GenerativeAIMultimodalExample */, - 88E10F432B110D5300C08E95 /* ChatExample */, 86C1F4822BC726150026816F /* FunctionCallingExample */, 8848C8302B0D04BC007B434F /* Products */, 88209C222B0FBE1700F64795 /* Frameworks */, @@ -264,72 +234,6 @@ path = "Preview Content"; sourceTree = ""; }; - 88E10F432B110D5300C08E95 /* ChatExample */ = { - isa = PBXGroup; - children = ( - 88E10F522B11124A00C08E95 /* Models */, - 88E10F502B11123600C08E95 /* ViewModels */, - 88E10F512B11124100C08E95 /* Views */, - 88E10F532B1112B900C08E95 /* Screens */, - 88E10F482B110D5400C08E95 /* Assets.xcassets */, - 88E10F4A2B110D5400C08E95 /* Preview Content */, - ); - path = ChatExample; - sourceTree = ""; - }; - 88E10F4A2B110D5400C08E95 /* Preview Content */ = { - isa = PBXGroup; - children = ( - 88E10F4B2B110D5400C08E95 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - 88E10F502B11123600C08E95 /* ViewModels */ = { - isa = PBXGroup; - children = ( - 88E10F562B1112F600C08E95 /* ConversationViewModel.swift */, - ); - path = ViewModels; - sourceTree = ""; - }; - 88E10F512B11124100C08E95 /* Views */ = { - isa = PBXGroup; - children = ( - AEE793DE2E256D3900708F02 /* Grounding */, - 88263BEE2B239BFE008AB09B /* ErrorView.swift */, - 88E10F5A2B11133E00C08E95 /* MessageView.swift */, - 88E10F5C2B11135000C08E95 /* BouncingDots.swift */, - 889873842B208563005B4896 /* ErrorDetailsView.swift */, - ); - path = Views; - sourceTree = ""; - }; - 88E10F522B11124A00C08E95 /* Models */ = { - isa = PBXGroup; - children = ( - 88E10F582B11131900C08E95 /* ChatMessage.swift */, - ); - path = Models; - sourceTree = ""; - }; - 88E10F532B1112B900C08E95 /* Screens */ = { - isa = PBXGroup; - children = ( - 88E10F542B1112CA00C08E95 /* ConversationScreen.swift */, - ); - path = Screens; - sourceTree = ""; - }; - AEE793DE2E256D3900708F02 /* Grounding */ = { - isa = PBXGroup; - children = ( - AEE793DC2E256D3900708F02 /* GoogleSearchSuggestionView.swift */, - AEE793DD2E256D3900708F02 /* GroundedResponseView.swift */, - ); - path = Grounding; - sourceTree = ""; - }; DEFECAA82D7B4CCD00EF9621 /* ImagenScreen */ = { isa = PBXGroup; children = ( @@ -468,24 +372,15 @@ DE907A852EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, DE907A812EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, 86BB55EA2E8B2D6D0054B8B5 /* FunctionCallingScreen.swift in Sources */, - 86BB55EB2E8B2D6D0054B8B5 /* BouncingDots.swift in Sources */, 86BB55EC2E8B2D6D0054B8B5 /* FunctionCallingViewModel.swift in Sources */, - 86BB55ED2E8B2D6D0054B8B5 /* ChatMessage.swift in Sources */, - 86BB55EE2E8B2D6D0054B8B5 /* ErrorDetailsView.swift in Sources */, 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */, - 86BB55F22E8B2D6D0054B8B5 /* ConversationViewModel.swift in Sources */, - 86BB55F32E8B2D6D0054B8B5 /* MessageView.swift in Sources */, 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */, 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */, 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */, DE907A882EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, DE907A892EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, 86BB55F72E8B2D6D0054B8B5 /* PhotoReasoningViewModel.swift in Sources */, - 86BB55F82E8B2D6D0054B8B5 /* ConversationScreen.swift in Sources */, - 86BB55F92E8B2D6D0054B8B5 /* ErrorView.swift in Sources */, 86BB55FA2E8B2D6D0054B8B5 /* GenerateContentViewModel.swift in Sources */, - 86BB55FB2E8B2D6D0054B8B5 /* GoogleSearchSuggestionView.swift in Sources */, - 86BB55FC2E8B2D6D0054B8B5 /* GroundedResponseView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -496,24 +391,15 @@ DE907A842EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, DE907A822EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, 86C1F4832BC726150026816F /* FunctionCallingScreen.swift in Sources */, - 886F95DF2B17D5010036F07A /* BouncingDots.swift in Sources */, 86C1F4842BC726150026816F /* FunctionCallingViewModel.swift in Sources */, - 886F95DE2B17D5010036F07A /* ChatMessage.swift in Sources */, - 88263BF12B239C11008AB09B /* ErrorDetailsView.swift in Sources */, 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */, - 886F95E02B17D5010036F07A /* ConversationViewModel.swift in Sources */, - 886F95DD2B17D5010036F07A /* MessageView.swift in Sources */, 886F95DC2B17BAEF0036F07A /* PhotoReasoningScreen.swift in Sources */, DEFECAA92D7B4CCD00EF9621 /* ImagenViewModel.swift in Sources */, DEFECAAA2D7B4CCD00EF9621 /* ImagenScreen.swift in Sources */, DE907A8A2EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, DE907A8B2EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, 886F95DB2B17BAEF0036F07A /* PhotoReasoningViewModel.swift in Sources */, - 886F95E12B17D5010036F07A /* ConversationScreen.swift in Sources */, - 88263BF02B239C09008AB09B /* ErrorView.swift in Sources */, 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */, - AEE793DF2E256D3900708F02 /* GoogleSearchSuggestionView.swift in Sources */, - AEE793E02E256D3900708F02 /* GroundedResponseView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/firebaseai/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from firebaseai/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json rename to firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/firebaseai/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from firebaseai/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json rename to firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/firebaseai/ChatExample/Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/ChatExample/Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/Contents.json diff --git a/firebaseai/ChatExample/Models/ChatMessage.swift b/firebaseai/FirebaseAIExample/ChatExample/Models/ChatMessage.swift similarity index 100% rename from firebaseai/ChatExample/Models/ChatMessage.swift rename to firebaseai/FirebaseAIExample/ChatExample/Models/ChatMessage.swift diff --git a/firebaseai/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/ChatExample/Screens/ConversationScreen.swift b/firebaseai/FirebaseAIExample/ChatExample/Screens/ConversationScreen.swift similarity index 100% rename from firebaseai/ChatExample/Screens/ConversationScreen.swift rename to firebaseai/FirebaseAIExample/ChatExample/Screens/ConversationScreen.swift diff --git a/firebaseai/ChatExample/ViewModels/ConversationViewModel.swift b/firebaseai/FirebaseAIExample/ChatExample/ViewModels/ConversationViewModel.swift similarity index 100% rename from firebaseai/ChatExample/ViewModels/ConversationViewModel.swift rename to firebaseai/FirebaseAIExample/ChatExample/ViewModels/ConversationViewModel.swift diff --git a/firebaseai/ChatExample/Views/BouncingDots.swift b/firebaseai/FirebaseAIExample/ChatExample/Views/BouncingDots.swift similarity index 100% rename from firebaseai/ChatExample/Views/BouncingDots.swift rename to firebaseai/FirebaseAIExample/ChatExample/Views/BouncingDots.swift diff --git a/firebaseai/ChatExample/Views/ErrorDetailsView.swift b/firebaseai/FirebaseAIExample/ChatExample/Views/ErrorDetailsView.swift similarity index 100% rename from firebaseai/ChatExample/Views/ErrorDetailsView.swift rename to firebaseai/FirebaseAIExample/ChatExample/Views/ErrorDetailsView.swift diff --git a/firebaseai/ChatExample/Views/ErrorView.swift b/firebaseai/FirebaseAIExample/ChatExample/Views/ErrorView.swift similarity index 100% rename from firebaseai/ChatExample/Views/ErrorView.swift rename to firebaseai/FirebaseAIExample/ChatExample/Views/ErrorView.swift diff --git a/firebaseai/ChatExample/Views/Grounding/GoogleSearchSuggestionView.swift b/firebaseai/FirebaseAIExample/ChatExample/Views/Grounding/GoogleSearchSuggestionView.swift similarity index 100% rename from firebaseai/ChatExample/Views/Grounding/GoogleSearchSuggestionView.swift rename to firebaseai/FirebaseAIExample/ChatExample/Views/Grounding/GoogleSearchSuggestionView.swift diff --git a/firebaseai/ChatExample/Views/Grounding/GroundedResponseView.swift b/firebaseai/FirebaseAIExample/ChatExample/Views/Grounding/GroundedResponseView.swift similarity index 100% rename from firebaseai/ChatExample/Views/Grounding/GroundedResponseView.swift rename to firebaseai/FirebaseAIExample/ChatExample/Views/Grounding/GroundedResponseView.swift diff --git a/firebaseai/ChatExample/Views/MessageView.swift b/firebaseai/FirebaseAIExample/ChatExample/Views/MessageView.swift similarity index 100% rename from firebaseai/ChatExample/Views/MessageView.swift rename to firebaseai/FirebaseAIExample/ChatExample/Views/MessageView.swift From aa63acf5f27f7d46e34cab08ed16c7b7a90abdf2 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:21:41 -0500 Subject: [PATCH 4/9] Move `FunctionCallingExample` to `FirebaseAIExample` subfolder --- .../project.pbxproj | 36 ------------------- .../Screens/FunctionCallingScreen.swift | 0 .../ViewModels/FunctionCallingViewModel.swift | 0 3 files changed, 36 deletions(-) rename firebaseai/{ => FirebaseAIExample}/FunctionCallingExample/Screens/FunctionCallingScreen.swift (100%) rename firebaseai/{ => FirebaseAIExample}/FunctionCallingExample/ViewModels/FunctionCallingViewModel.swift (100%) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index b400a66d1..bec0d4318 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -14,8 +14,6 @@ 86A67E932E9FED1700EDFB8A /* NetworkImage in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E922E9FED1700EDFB8A /* NetworkImage */; }; 86A67E952E9FED2200EDFB8A /* cmark-gfm in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E942E9FED2200EDFB8A /* cmark-gfm */; }; 86A67E972E9FED2200EDFB8A /* cmark-gfm-extensions in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E962E9FED2200EDFB8A /* cmark-gfm-extensions */; }; - 86BB55EA2E8B2D6D0054B8B5 /* FunctionCallingScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F47E2BC726150026816F /* FunctionCallingScreen.swift */; }; - 86BB55EC2E8B2D6D0054B8B5 /* FunctionCallingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */; }; 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */; }; 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */; }; @@ -25,8 +23,6 @@ 86BB55FF2E8B2D6D0054B8B5 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E42E8B2D6D0054B8B5 /* MarkdownUI */; }; 86BB56002E8B2D6D0054B8B5 /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E62E8B2D6D0054B8B5 /* GenerativeAIUIComponents */; }; 86BB56042E8B2D6D0054B8B5 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 869200B22B879C4F00482873 /* GoogleService-Info.plist */; }; - 86C1F4832BC726150026816F /* FunctionCallingScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F47E2BC726150026816F /* FunctionCallingScreen.swift */; }; - 86C1F4842BC726150026816F /* FunctionCallingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */; }; 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; 886F95D82B17BA420036F07A /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95D72B17BA420036F07A /* MarkdownUI */; }; @@ -49,8 +45,6 @@ /* Begin PBXFileReference section */ 869200B22B879C4F00482873 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 86BB56082E8B2D6D0054B8B5 /* FirebaseAIExampleZip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExampleZip.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 86C1F47E2BC726150026816F /* FunctionCallingScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FunctionCallingScreen.swift; sourceTree = ""; }; - 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FunctionCallingViewModel.swift; sourceTree = ""; }; 8802666F2B0FC39000CF7CB6 /* PhotoReasoningViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoReasoningViewModel.swift; sourceTree = ""; }; 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoReasoningScreen.swift; sourceTree = ""; }; 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentScreen.swift; sourceTree = ""; }; @@ -106,31 +100,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 86C1F47F2BC726150026816F /* Screens */ = { - isa = PBXGroup; - children = ( - 86C1F47E2BC726150026816F /* FunctionCallingScreen.swift */, - ); - path = Screens; - sourceTree = ""; - }; - 86C1F4812BC726150026816F /* ViewModels */ = { - isa = PBXGroup; - children = ( - 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */, - ); - path = ViewModels; - sourceTree = ""; - }; - 86C1F4822BC726150026816F /* FunctionCallingExample */ = { - isa = PBXGroup; - children = ( - 86C1F4812BC726150026816F /* ViewModels */, - 86C1F47F2BC726150026816F /* Screens */, - ); - path = FunctionCallingExample; - sourceTree = ""; - }; 8802666E2B0FC39000CF7CB6 /* ViewModels */ = { isa = PBXGroup; children = ( @@ -181,7 +150,6 @@ 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, 8848C8452B0D051E007B434F /* GenerativeAITextExample */, 8848C8572B0D056C007B434F /* GenerativeAIMultimodalExample */, - 86C1F4822BC726150026816F /* FunctionCallingExample */, 8848C8302B0D04BC007B434F /* Products */, 88209C222B0FBE1700F64795 /* Frameworks */, ); @@ -371,8 +339,6 @@ files = ( DE907A852EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, DE907A812EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, - 86BB55EA2E8B2D6D0054B8B5 /* FunctionCallingScreen.swift in Sources */, - 86BB55EC2E8B2D6D0054B8B5 /* FunctionCallingViewModel.swift in Sources */, 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */, 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */, 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */, @@ -390,8 +356,6 @@ files = ( DE907A842EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, DE907A822EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, - 86C1F4832BC726150026816F /* FunctionCallingScreen.swift in Sources */, - 86C1F4842BC726150026816F /* FunctionCallingViewModel.swift in Sources */, 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */, 886F95DC2B17BAEF0036F07A /* PhotoReasoningScreen.swift in Sources */, DEFECAA92D7B4CCD00EF9621 /* ImagenViewModel.swift in Sources */, diff --git a/firebaseai/FunctionCallingExample/Screens/FunctionCallingScreen.swift b/firebaseai/FirebaseAIExample/FunctionCallingExample/Screens/FunctionCallingScreen.swift similarity index 100% rename from firebaseai/FunctionCallingExample/Screens/FunctionCallingScreen.swift rename to firebaseai/FirebaseAIExample/FunctionCallingExample/Screens/FunctionCallingScreen.swift diff --git a/firebaseai/FunctionCallingExample/ViewModels/FunctionCallingViewModel.swift b/firebaseai/FirebaseAIExample/FunctionCallingExample/ViewModels/FunctionCallingViewModel.swift similarity index 100% rename from firebaseai/FunctionCallingExample/ViewModels/FunctionCallingViewModel.swift rename to firebaseai/FirebaseAIExample/FunctionCallingExample/ViewModels/FunctionCallingViewModel.swift From 8117d1a6d6532b8f6ef076ddd56ccb0702332809 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:23:11 -0500 Subject: [PATCH 5/9] Move `GenerativeAIMultimodalExample` to `FirebaseAIExample` subfolder --- .../project.pbxproj | 48 ------------------- .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../Preview Assets.xcassets/Contents.json | 0 .../Screens/PhotoReasoningScreen.swift | 0 .../ViewModels/PhotoReasoningViewModel.swift | 0 7 files changed, 48 deletions(-) rename firebaseai/{ => FirebaseAIExample}/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAIMultimodalExample/ViewModels/PhotoReasoningViewModel.swift (100%) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index bec0d4318..485cf87a1 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -15,10 +15,8 @@ 86A67E952E9FED2200EDFB8A /* cmark-gfm in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E942E9FED2200EDFB8A /* cmark-gfm */; }; 86A67E972E9FED2200EDFB8A /* cmark-gfm-extensions in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E962E9FED2200EDFB8A /* cmark-gfm-extensions */; }; 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; - 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */; }; 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */; }; 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */; }; - 86BB55F72E8B2D6D0054B8B5 /* PhotoReasoningViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8802666F2B0FC39000CF7CB6 /* PhotoReasoningViewModel.swift */; }; 86BB55FA2E8B2D6D0054B8B5 /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; 86BB55FF2E8B2D6D0054B8B5 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E42E8B2D6D0054B8B5 /* MarkdownUI */; }; 86BB56002E8B2D6D0054B8B5 /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E62E8B2D6D0054B8B5 /* GenerativeAIUIComponents */; }; @@ -26,8 +24,6 @@ 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; 886F95D82B17BA420036F07A /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95D72B17BA420036F07A /* MarkdownUI */; }; - 886F95DB2B17BAEF0036F07A /* PhotoReasoningViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8802666F2B0FC39000CF7CB6 /* PhotoReasoningViewModel.swift */; }; - 886F95DC2B17BAEF0036F07A /* PhotoReasoningScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */; }; 886F95E32B17D6630036F07A /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95E22B17D6630036F07A /* GenerativeAIUIComponents */; }; DE26D95F2DBB3E9F007E6668 /* FirebaseAI in Frameworks */ = {isa = PBXBuildFile; productRef = DE26D95E2DBB3E9F007E6668 /* FirebaseAI */; }; DE907A812EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */; }; @@ -45,15 +41,11 @@ /* Begin PBXFileReference section */ 869200B22B879C4F00482873 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 86BB56082E8B2D6D0054B8B5 /* FirebaseAIExampleZip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExampleZip.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 8802666F2B0FC39000CF7CB6 /* PhotoReasoningViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoReasoningViewModel.swift; sourceTree = ""; }; - 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoReasoningScreen.swift; sourceTree = ""; }; 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentScreen.swift; sourceTree = ""; }; 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentViewModel.swift; sourceTree = ""; }; 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8848C84A2B0D051F007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 8848C84D2B0D051F007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 8848C85C2B0D056D007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 8848C85F2B0D056D007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = GenerativeAIUIComponents; sourceTree = ""; }; DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenerateContentFromTemplateScreen.swift; sourceTree = ""; }; DE907A832EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenerateContentFromTemplateViewModel.swift; sourceTree = ""; }; @@ -100,22 +92,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 8802666E2B0FC39000CF7CB6 /* ViewModels */ = { - isa = PBXGroup; - children = ( - 8802666F2B0FC39000CF7CB6 /* PhotoReasoningViewModel.swift */, - ); - path = ViewModels; - sourceTree = ""; - }; - 880266742B0FC39000CF7CB6 /* Screens */ = { - isa = PBXGroup; - children = ( - 880266752B0FC39000CF7CB6 /* PhotoReasoningScreen.swift */, - ); - path = Screens; - sourceTree = ""; - }; 88209C1A2B0FBDC300F64795 /* Screens */ = { isa = PBXGroup; children = ( @@ -149,7 +125,6 @@ 869200B22B879C4F00482873 /* GoogleService-Info.plist */, 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, 8848C8452B0D051E007B434F /* GenerativeAITextExample */, - 8848C8572B0D056C007B434F /* GenerativeAIMultimodalExample */, 8848C8302B0D04BC007B434F /* Products */, 88209C222B0FBE1700F64795 /* Frameworks */, ); @@ -183,25 +158,6 @@ path = "Preview Content"; sourceTree = ""; }; - 8848C8572B0D056C007B434F /* GenerativeAIMultimodalExample */ = { - isa = PBXGroup; - children = ( - 8802666E2B0FC39000CF7CB6 /* ViewModels */, - 880266742B0FC39000CF7CB6 /* Screens */, - 8848C85C2B0D056D007B434F /* Assets.xcassets */, - 8848C85E2B0D056D007B434F /* Preview Content */, - ); - path = GenerativeAIMultimodalExample; - sourceTree = ""; - }; - 8848C85E2B0D056D007B434F /* Preview Content */ = { - isa = PBXGroup; - children = ( - 8848C85F2B0D056D007B434F /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; DEFECAA82D7B4CCD00EF9621 /* ImagenScreen */ = { isa = PBXGroup; children = ( @@ -340,12 +296,10 @@ DE907A852EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, DE907A812EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */, - 86BB55F42E8B2D6D0054B8B5 /* PhotoReasoningScreen.swift in Sources */, 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */, 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */, DE907A882EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, DE907A892EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, - 86BB55F72E8B2D6D0054B8B5 /* PhotoReasoningViewModel.swift in Sources */, 86BB55FA2E8B2D6D0054B8B5 /* GenerateContentViewModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -357,12 +311,10 @@ DE907A842EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, DE907A822EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */, - 886F95DC2B17BAEF0036F07A /* PhotoReasoningScreen.swift in Sources */, DEFECAA92D7B4CCD00EF9621 /* ImagenViewModel.swift in Sources */, DEFECAAA2D7B4CCD00EF9621 /* ImagenScreen.swift in Sources */, DE907A8A2EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, DE907A8B2EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, - 886F95DB2B17BAEF0036F07A /* PhotoReasoningViewModel.swift in Sources */, 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift similarity index 100% rename from firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift rename to firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift diff --git a/firebaseai/GenerativeAIMultimodalExample/ViewModels/PhotoReasoningViewModel.swift b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/ViewModels/PhotoReasoningViewModel.swift similarity index 100% rename from firebaseai/GenerativeAIMultimodalExample/ViewModels/PhotoReasoningViewModel.swift rename to firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/ViewModels/PhotoReasoningViewModel.swift From 202c37ba9a1ac502c6dc043234b4a96fc5176ca2 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:24:02 -0500 Subject: [PATCH 6/9] Move `GenerativeAITextExample` to `FirebaseAIExample` subfolder --- .../project.pbxproj | 60 ------------------- .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../Preview Assets.xcassets/Contents.json | 0 .../GenerateContentFromTemplateScreen.swift | 0 .../Screens/GenerateContentScreen.swift | 0 ...GenerateContentFromTemplateViewModel.swift | 0 .../ViewModels/GenerateContentViewModel.swift | 0 9 files changed, 60 deletions(-) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/Assets.xcassets/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/Screens/GenerateContentFromTemplateScreen.swift (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/Screens/GenerateContentScreen.swift (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/ViewModels/GenerateContentFromTemplateViewModel.swift (100%) rename firebaseai/{ => FirebaseAIExample}/GenerativeAITextExample/ViewModels/GenerateContentViewModel.swift (100%) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index 485cf87a1..4d4b859f7 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -14,22 +14,14 @@ 86A67E932E9FED1700EDFB8A /* NetworkImage in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E922E9FED1700EDFB8A /* NetworkImage */; }; 86A67E952E9FED2200EDFB8A /* cmark-gfm in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E942E9FED2200EDFB8A /* cmark-gfm */; }; 86A67E972E9FED2200EDFB8A /* cmark-gfm-extensions in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E962E9FED2200EDFB8A /* cmark-gfm-extensions */; }; - 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */; }; 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */; }; - 86BB55FA2E8B2D6D0054B8B5 /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; 86BB55FF2E8B2D6D0054B8B5 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E42E8B2D6D0054B8B5 /* MarkdownUI */; }; 86BB56002E8B2D6D0054B8B5 /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E62E8B2D6D0054B8B5 /* GenerativeAIUIComponents */; }; 86BB56042E8B2D6D0054B8B5 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 869200B22B879C4F00482873 /* GoogleService-Info.plist */; }; - 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */; }; - 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */; }; 886F95D82B17BA420036F07A /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95D72B17BA420036F07A /* MarkdownUI */; }; 886F95E32B17D6630036F07A /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95E22B17D6630036F07A /* GenerativeAIUIComponents */; }; DE26D95F2DBB3E9F007E6668 /* FirebaseAI in Frameworks */ = {isa = PBXBuildFile; productRef = DE26D95E2DBB3E9F007E6668 /* FirebaseAI */; }; - DE907A812EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */; }; - DE907A822EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */; }; - DE907A842EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A832EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift */; }; - DE907A852EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A832EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift */; }; DE907A882EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A872EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift */; }; DE907A892EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A862EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift */; }; DE907A8A2EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A872EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift */; }; @@ -41,14 +33,8 @@ /* Begin PBXFileReference section */ 869200B22B879C4F00482873 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 86BB56082E8B2D6D0054B8B5 /* FirebaseAIExampleZip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExampleZip.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentScreen.swift; sourceTree = ""; }; - 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentViewModel.swift; sourceTree = ""; }; 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 8848C84A2B0D051F007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 8848C84D2B0D051F007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = GenerativeAIUIComponents; sourceTree = ""; }; - DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenerateContentFromTemplateScreen.swift; sourceTree = ""; }; - DE907A832EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenerateContentFromTemplateViewModel.swift; sourceTree = ""; }; DE907A862EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenFromTemplateScreen.swift; sourceTree = ""; }; DE907A872EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenFromTemplateViewModel.swift; sourceTree = ""; }; DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenScreen.swift; sourceTree = ""; }; @@ -92,24 +78,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 88209C1A2B0FBDC300F64795 /* Screens */ = { - isa = PBXGroup; - children = ( - DE907A802EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift */, - 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */, - ); - path = Screens; - sourceTree = ""; - }; - 88209C1C2B0FBDC300F64795 /* ViewModels */ = { - isa = PBXGroup; - children = ( - DE907A832EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift */, - 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */, - ); - path = ViewModels; - sourceTree = ""; - }; 88209C222B0FBE1700F64795 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -124,7 +92,6 @@ 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */, 869200B22B879C4F00482873 /* GoogleService-Info.plist */, 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, - 8848C8452B0D051E007B434F /* GenerativeAITextExample */, 8848C8302B0D04BC007B434F /* Products */, 88209C222B0FBE1700F64795 /* Frameworks */, ); @@ -139,25 +106,6 @@ name = Products; sourceTree = ""; }; - 8848C8452B0D051E007B434F /* GenerativeAITextExample */ = { - isa = PBXGroup; - children = ( - 88209C1C2B0FBDC300F64795 /* ViewModels */, - 88209C1A2B0FBDC300F64795 /* Screens */, - 8848C84A2B0D051F007B434F /* Assets.xcassets */, - 8848C84C2B0D051F007B434F /* Preview Content */, - ); - path = GenerativeAITextExample; - sourceTree = ""; - }; - 8848C84C2B0D051F007B434F /* Preview Content */ = { - isa = PBXGroup; - children = ( - 8848C84D2B0D051F007B434F /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; DEFECAA82D7B4CCD00EF9621 /* ImagenScreen */ = { isa = PBXGroup; children = ( @@ -293,14 +241,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DE907A852EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, - DE907A812EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, - 86BB55F02E8B2D6D0054B8B5 /* GenerateContentScreen.swift in Sources */, 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */, 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */, DE907A882EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, DE907A892EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, - 86BB55FA2E8B2D6D0054B8B5 /* GenerateContentViewModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -308,14 +252,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DE907A842EAAE55600AE56CE /* GenerateContentFromTemplateViewModel.swift in Sources */, - DE907A822EAAE53E00AE56CE /* GenerateContentFromTemplateScreen.swift in Sources */, - 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */, DEFECAA92D7B4CCD00EF9621 /* ImagenViewModel.swift in Sources */, DEFECAAA2D7B4CCD00EF9621 /* ImagenScreen.swift in Sources */, DE907A8A2EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, DE907A8B2EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, - 886F95D62B17BA010036F07A /* GenerateContentViewModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/firebaseai/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/firebaseai/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/firebaseai/GenerativeAITextExample/Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextExample/Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAITextExample/Screens/GenerateContentFromTemplateScreen.swift b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Screens/GenerateContentFromTemplateScreen.swift similarity index 100% rename from firebaseai/GenerativeAITextExample/Screens/GenerateContentFromTemplateScreen.swift rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/Screens/GenerateContentFromTemplateScreen.swift diff --git a/firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Screens/GenerateContentScreen.swift similarity index 100% rename from firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/Screens/GenerateContentScreen.swift diff --git a/firebaseai/GenerativeAITextExample/ViewModels/GenerateContentFromTemplateViewModel.swift b/firebaseai/FirebaseAIExample/GenerativeAITextExample/ViewModels/GenerateContentFromTemplateViewModel.swift similarity index 100% rename from firebaseai/GenerativeAITextExample/ViewModels/GenerateContentFromTemplateViewModel.swift rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/ViewModels/GenerateContentFromTemplateViewModel.swift diff --git a/firebaseai/GenerativeAITextExample/ViewModels/GenerateContentViewModel.swift b/firebaseai/FirebaseAIExample/GenerativeAITextExample/ViewModels/GenerateContentViewModel.swift similarity index 100% rename from firebaseai/GenerativeAITextExample/ViewModels/GenerateContentViewModel.swift rename to firebaseai/FirebaseAIExample/GenerativeAITextExample/ViewModels/GenerateContentViewModel.swift From 0aa06f64d0505c37c7ba4900a2a63b81bf18e984 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:26:11 -0500 Subject: [PATCH 7/9] Move `ImagenScreen` to `FirebaseAIExample/ImagenExample` --- .../project.pbxproj | 32 ------------------- .../ImagenFromTemplateScreen.swift | 0 .../ImagenFromTemplateViewModel.swift | 0 .../ImagenExample}/ImagenScreen.swift | 0 .../ImagenExample}/ImagenViewModel.swift | 0 5 files changed, 32 deletions(-) rename firebaseai/{ImagenScreen => FirebaseAIExample/ImagenExample}/ImagenFromTemplateScreen.swift (100%) rename firebaseai/{ImagenScreen => FirebaseAIExample/ImagenExample}/ImagenFromTemplateViewModel.swift (100%) rename firebaseai/{ImagenScreen => FirebaseAIExample/ImagenExample}/ImagenScreen.swift (100%) rename firebaseai/{ImagenScreen => FirebaseAIExample/ImagenExample}/ImagenViewModel.swift (100%) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index 4d4b859f7..4f05c537c 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -14,20 +14,12 @@ 86A67E932E9FED1700EDFB8A /* NetworkImage in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E922E9FED1700EDFB8A /* NetworkImage */; }; 86A67E952E9FED2200EDFB8A /* cmark-gfm in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E942E9FED2200EDFB8A /* cmark-gfm */; }; 86A67E972E9FED2200EDFB8A /* cmark-gfm-extensions in Frameworks */ = {isa = PBXBuildFile; productRef = 86A67E962E9FED2200EDFB8A /* cmark-gfm-extensions */; }; - 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */; }; - 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */; }; 86BB55FF2E8B2D6D0054B8B5 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E42E8B2D6D0054B8B5 /* MarkdownUI */; }; 86BB56002E8B2D6D0054B8B5 /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 86BB55E62E8B2D6D0054B8B5 /* GenerativeAIUIComponents */; }; 86BB56042E8B2D6D0054B8B5 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 869200B22B879C4F00482873 /* GoogleService-Info.plist */; }; 886F95D82B17BA420036F07A /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95D72B17BA420036F07A /* MarkdownUI */; }; 886F95E32B17D6630036F07A /* GenerativeAIUIComponents in Frameworks */ = {isa = PBXBuildFile; productRef = 886F95E22B17D6630036F07A /* GenerativeAIUIComponents */; }; DE26D95F2DBB3E9F007E6668 /* FirebaseAI in Frameworks */ = {isa = PBXBuildFile; productRef = DE26D95E2DBB3E9F007E6668 /* FirebaseAI */; }; - DE907A882EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A872EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift */; }; - DE907A892EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A862EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift */; }; - DE907A8A2EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A872EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift */; }; - DE907A8B2EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE907A862EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift */; }; - DEFECAA92D7B4CCD00EF9621 /* ImagenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */; }; - DEFECAAA2D7B4CCD00EF9621 /* ImagenScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -35,10 +27,6 @@ 86BB56082E8B2D6D0054B8B5 /* FirebaseAIExampleZip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExampleZip.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = GenerativeAIUIComponents; sourceTree = ""; }; - DE907A862EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenFromTemplateScreen.swift; sourceTree = ""; }; - DE907A872EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenFromTemplateViewModel.swift; sourceTree = ""; }; - DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenScreen.swift; sourceTree = ""; }; - DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagenViewModel.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -88,7 +76,6 @@ 8848C8262B0D04BC007B434F = { isa = PBXGroup; children = ( - DEFECAA82D7B4CCD00EF9621 /* ImagenScreen */, 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */, 869200B22B879C4F00482873 /* GoogleService-Info.plist */, 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, @@ -106,17 +93,6 @@ name = Products; sourceTree = ""; }; - DEFECAA82D7B4CCD00EF9621 /* ImagenScreen */ = { - isa = PBXGroup; - children = ( - DE907A862EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift */, - DE907A872EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift */, - DEFECAA62D7B4CCD00EF9621 /* ImagenScreen.swift */, - DEFECAA72D7B4CCD00EF9621 /* ImagenViewModel.swift */, - ); - path = ImagenScreen; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -241,10 +217,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 86BB55F52E8B2D6D0054B8B5 /* ImagenViewModel.swift in Sources */, - 86BB55F62E8B2D6D0054B8B5 /* ImagenScreen.swift in Sources */, - DE907A882EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, - DE907A892EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -252,10 +224,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DEFECAA92D7B4CCD00EF9621 /* ImagenViewModel.swift in Sources */, - DEFECAAA2D7B4CCD00EF9621 /* ImagenScreen.swift in Sources */, - DE907A8A2EAAEBCC00AE56CE /* ImagenFromTemplateViewModel.swift in Sources */, - DE907A8B2EAAEBCC00AE56CE /* ImagenFromTemplateScreen.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/firebaseai/ImagenScreen/ImagenFromTemplateScreen.swift b/firebaseai/FirebaseAIExample/ImagenExample/ImagenFromTemplateScreen.swift similarity index 100% rename from firebaseai/ImagenScreen/ImagenFromTemplateScreen.swift rename to firebaseai/FirebaseAIExample/ImagenExample/ImagenFromTemplateScreen.swift diff --git a/firebaseai/ImagenScreen/ImagenFromTemplateViewModel.swift b/firebaseai/FirebaseAIExample/ImagenExample/ImagenFromTemplateViewModel.swift similarity index 100% rename from firebaseai/ImagenScreen/ImagenFromTemplateViewModel.swift rename to firebaseai/FirebaseAIExample/ImagenExample/ImagenFromTemplateViewModel.swift diff --git a/firebaseai/ImagenScreen/ImagenScreen.swift b/firebaseai/FirebaseAIExample/ImagenExample/ImagenScreen.swift similarity index 100% rename from firebaseai/ImagenScreen/ImagenScreen.swift rename to firebaseai/FirebaseAIExample/ImagenExample/ImagenScreen.swift diff --git a/firebaseai/ImagenScreen/ImagenViewModel.swift b/firebaseai/FirebaseAIExample/ImagenExample/ImagenViewModel.swift similarity index 100% rename from firebaseai/ImagenScreen/ImagenViewModel.swift rename to firebaseai/FirebaseAIExample/ImagenExample/ImagenViewModel.swift From 5b1198a4864a953c511c001636f1d2042929d2c8 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:29:30 -0500 Subject: [PATCH 8/9] Move `FirebaseAIExample` to top --- firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index 4f05c537c..89084e975 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -76,9 +76,9 @@ 8848C8262B0D04BC007B434F = { isa = PBXGroup; children = ( + 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */, 869200B22B879C4F00482873 /* GoogleService-Info.plist */, - 863E95812EC7B70200BE4F4E /* FirebaseAIExample */, 8848C8302B0D04BC007B434F /* Products */, 88209C222B0FBE1700F64795 /* Frameworks */, ); From 200e2f89d8f2312c2cbde4dd731249746a325333 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Fri, 14 Nov 2025 14:31:32 -0500 Subject: [PATCH 9/9] Remove extraneous `xcassets` and `Preview Content` subfolders --- .../AccentColor.colorset/Contents.json | 11 ----------- .../AppIcon.appiconset/Contents.json | 13 ------------- .../ChatExample/Assets.xcassets/Contents.json | 6 ------ .../Preview Assets.xcassets/Contents.json | 6 ------ .../AccentColor.colorset/Contents.json | 11 ----------- .../AppIcon.appiconset/Contents.json | 13 ------------- .../Assets.xcassets/Contents.json | 6 ------ .../Preview Assets.xcassets/Contents.json | 6 ------ .../AccentColor.colorset/Contents.json | 11 ----------- .../AppIcon.appiconset/Contents.json | 13 ------------- .../Assets.xcassets/Contents.json | 6 ------ .../Preview Assets.xcassets/Contents.json | 6 ------ 12 files changed, 108 deletions(-) delete mode 100644 firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/Contents.json delete mode 100644 firebaseai/FirebaseAIExample/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb8789700..000000000 --- a/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3ee..000000000 --- a/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/firebaseai/FirebaseAIExample/ChatExample/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/firebaseai/FirebaseAIExample/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb8789700..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3ee..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb8789700..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3ee..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/firebaseai/FirebaseAIExample/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -}