Skip to content

amazing #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
Jan 4, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Clean Up Project
* Remove data loading since it depends on a ZIP file. Should really work out-of-the-box with Hugging Faces models if implemented
* Remove all the loading related classes to simplify the UI
* Add a status indicator to the main view (not functional at the moment)
* Add a central AppState class which will hold app state and preferences (if any)
* Centralize empty extensions added in one place
* Centralize helper functions in one place
* Clean out PreviewView to not depend on MainViewState
* Remove app sandboxing
* Set up the data to load from a central models folder and (for the time being) hardcode to load a specific model
* Update the README to include more info about data loading and separate out the project. loading/configuration stuff
  • Loading branch information
FahimF committed Dec 17, 2022
commit c2319932feeb3f97381d7edab8d3b8e462f632bd
2 changes: 1 addition & 1 deletion CoreML/pipeline/TextEncoder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public struct TextEncoder: ResourceManaging {
tokens = tokens.dropLast(tokens.count - inputLength)
ids = ids.dropLast(ids.count - inputLength)
let truncated = tokenizer.decode(tokens: tokens)
print("Needed to truncate input '\(text)' to '\(truncated)'")
NSLog("Needed to truncate input '\(text)' to '\(truncated)'")
}

// Use the model to generate the embedding
Expand Down
84 changes: 28 additions & 56 deletions Diffusion.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,19 @@
DD379840294D4D3F00650BE3 /* Decoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD37983F294D4D3F00650BE3 /* Decoder.swift */; };
DD379843294D4FAA00650BE3 /* ResourceManaging.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD379841294D4FAA00650BE3 /* ResourceManaging.swift */; };
DD379844294D4FAA00650BE3 /* ManagedMLModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD379842294D4FAA00650BE3 /* ManagedMLModel.swift */; };
DD379847294D95AB00650BE3 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD379846294D95AB00650BE3 /* Extensions.swift */; };
DD379849294D964A00650BE3 /* ErrorPopover.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD379848294D964A00650BE3 /* ErrorPopover.swift */; };
DD37984B294D97C000650BE3 /* AppState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD37984A294D97C000650BE3 /* AppState.swift */; };
DD37984D294D9E6700650BE3 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD37984C294D9E6700650BE3 /* Functions.swift */; };
DD6512D0294B0FF50035EC0F /* PreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD6512CF294B0FF50035EC0F /* PreviewView.swift */; };
EBB5BA5329425BEE003A2A5B /* PipelineLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBB5BA5229425BEE003A2A5B /* PipelineLoader.swift */; };
EBB5BA5829425E17003A2A5B /* Path in Frameworks */ = {isa = PBXBuildFile; productRef = EBB5BA5729425E17003A2A5B /* Path */; };
EBB5BA5A29426E06003A2A5B /* Downloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBB5BA5929426E06003A2A5B /* Downloader.swift */; };
EBB5BA5D294504DE003A2A5B /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = EBB5BA5C294504DE003A2A5B /* ZIPFoundation */; };
EBE755C9293E37DD00806B32 /* DiffusionApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE755C8293E37DD00806B32 /* DiffusionApp.swift */; };
EBE755CB293E37DD00806B32 /* TextToImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE755CA293E37DD00806B32 /* TextToImageView.swift */; };
EBE755CB293E37DD00806B32 /* MainAppView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE755CA293E37DD00806B32 /* MainAppView.swift */; };
EBE755CD293E37DD00806B32 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EBE755CC293E37DD00806B32 /* Assets.xcassets */; };
EBE755D1293E37DD00806B32 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EBE755D0293E37DD00806B32 /* Preview Assets.xcassets */; };
EBE755DB293E37DE00806B32 /* DiffusionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE755DA293E37DE00806B32 /* DiffusionTests.swift */; };
EBE755E5293E37DE00806B32 /* DiffusionUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE755E4293E37DE00806B32 /* DiffusionUITests.swift */; };
EBE755E7293E37DE00806B32 /* DiffusionUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE755E6293E37DE00806B32 /* DiffusionUITestsLaunchTests.swift */; };
EBE75602293E91E200806B32 /* Pipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE75601293E91E200806B32 /* Pipeline.swift */; };
EBE756092941178600806B32 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE756082941178600806B32 /* LoadingView.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -67,18 +66,20 @@
DD37983F294D4D3F00650BE3 /* Decoder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Decoder.swift; sourceTree = "<group>"; };
DD379841294D4FAA00650BE3 /* ResourceManaging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResourceManaging.swift; sourceTree = "<group>"; };
DD379842294D4FAA00650BE3 /* ManagedMLModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedMLModel.swift; sourceTree = "<group>"; };
DD379846294D95AB00650BE3 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
DD379848294D964A00650BE3 /* ErrorPopover.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorPopover.swift; sourceTree = "<group>"; };
DD37984A294D97C000650BE3 /* AppState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppState.swift; sourceTree = "<group>"; };
DD37984C294D9E6700650BE3 /* Functions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Functions.swift; sourceTree = "<group>"; };
DD651294294ADF9D0035EC0F /* Sign-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Sign-Debug.xcconfig"; sourceTree = "<group>"; };
DD651295294ADFAB0035EC0F /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
DD651296294AE18F0035EC0F /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
DD651297294AE1A70035EC0F /* Sign-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Sign-Release.xcconfig"; sourceTree = "<group>"; };
DD6512CF294B0FF50035EC0F /* PreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewView.swift; sourceTree = "<group>"; };
EBB5BA5229425BEE003A2A5B /* PipelineLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineLoader.swift; sourceTree = "<group>"; };
EBB5BA5929426E06003A2A5B /* Downloader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Downloader.swift; sourceTree = "<group>"; };
EBE4438729488DCA00CDA605 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
EBE443892948953600CDA605 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
EBE755C5293E37DD00806B32 /* Diffusion.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Diffusion.app; sourceTree = BUILT_PRODUCTS_DIR; };
EBE755C8293E37DD00806B32 /* DiffusionApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiffusionApp.swift; sourceTree = "<group>"; };
EBE755CA293E37DD00806B32 /* TextToImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextToImageView.swift; sourceTree = "<group>"; };
EBE755CA293E37DD00806B32 /* MainAppView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainAppView.swift; sourceTree = "<group>"; };
EBE755CC293E37DD00806B32 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
EBE755CE293E37DD00806B32 /* Diffusion.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Diffusion.entitlements; sourceTree = "<group>"; };
EBE755D0293E37DD00806B32 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
Expand All @@ -88,16 +89,13 @@
EBE755E4293E37DE00806B32 /* DiffusionUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiffusionUITests.swift; sourceTree = "<group>"; };
EBE755E6293E37DE00806B32 /* DiffusionUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiffusionUITestsLaunchTests.swift; sourceTree = "<group>"; };
EBE75601293E91E200806B32 /* Pipeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pipeline.swift; sourceTree = "<group>"; };
EBE756082941178600806B32 /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingView.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
EBE755C2293E37DD00806B32 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
EBB5BA5829425E17003A2A5B /* Path in Frameworks */,
EBB5BA5D294504DE003A2A5B /* ZIPFoundation in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -154,6 +152,16 @@
path = tokenizer;
sourceTree = "<group>";
};
DD379845294D959500650BE3 /* Support */ = {
isa = PBXGroup;
children = (
DD379846294D95AB00650BE3 /* Extensions.swift */,
DD37984A294D97C000650BE3 /* AppState.swift */,
DD37984C294D9E6700650BE3 /* Functions.swift */,
);
path = Support;
sourceTree = "<group>";
};
DD651293294ADF680035EC0F /* BuildConfiguratons */ = {
isa = PBXGroup;
children = (
Expand All @@ -169,7 +177,6 @@
isa = PBXGroup;
children = (
EBE75601293E91E200806B32 /* Pipeline.swift */,
EBB5BA5229425BEE003A2A5B /* PipelineLoader.swift */,
);
path = Pipeline;
sourceTree = "<group>";
Expand Down Expand Up @@ -204,8 +211,8 @@
isa = PBXGroup;
children = (
EBB5BA5129425B07003A2A5B /* Pipeline */,
DD379845294D959500650BE3 /* Support */,
EBE7560A29411A5E00806B32 /* Views */,
EBB5BA5929426E06003A2A5B /* Downloader.swift */,
EBE755C8293E37DD00806B32 /* DiffusionApp.swift */,
EBE755CC293E37DD00806B32 /* Assets.xcassets */,
EBE755CE293E37DD00806B32 /* Diffusion.entitlements */,
Expand Down Expand Up @@ -256,9 +263,9 @@
EBE7560A29411A5E00806B32 /* Views */ = {
isa = PBXGroup;
children = (
EBE756082941178600806B32 /* LoadingView.swift */,
DD6512CF294B0FF50035EC0F /* PreviewView.swift */,
EBE755CA293E37DD00806B32 /* TextToImageView.swift */,
EBE755CA293E37DD00806B32 /* MainAppView.swift */,
DD379848294D964A00650BE3 /* ErrorPopover.swift */,
);
path = Views;
sourceTree = "<group>";
Expand All @@ -280,8 +287,6 @@
);
name = Diffusion;
packageProductDependencies = (
EBB5BA5729425E17003A2A5B /* Path */,
EBB5BA5C294504DE003A2A5B /* ZIPFoundation */,
);
productName = Diffusion;
productReference = EBE755C5293E37DD00806B32 /* Diffusion.app */;
Expand Down Expand Up @@ -356,8 +361,6 @@
);
mainGroup = EBE755BC293E37DD00806B32;
packageReferences = (
EBB5BA5629425E17003A2A5B /* XCRemoteSwiftPackageReference "Path.swift" */,
EBB5BA5B294504DE003A2A5B /* XCRemoteSwiftPackageReference "ZIPFoundation" */,
);
productRefGroup = EBE755C6293E37DD00806B32 /* Products */;
projectDirPath = "";
Expand Down Expand Up @@ -407,18 +410,19 @@
DD37982C294D4BFD00650BE3 /* StableDiffusionPipeline.swift in Sources */,
EBE75602293E91E200806B32 /* Pipeline.swift in Sources */,
DD379840294D4D3F00650BE3 /* Decoder.swift in Sources */,
EBE755CB293E37DD00806B32 /* TextToImageView.swift in Sources */,
EBE755CB293E37DD00806B32 /* MainAppView.swift in Sources */,
DD379831294D4C4800650BE3 /* SafetyChecker.swift in Sources */,
DD379830294D4C4800650BE3 /* Unet.swift in Sources */,
DD379836294D4C9E00650BE3 /* StableDiffusionPipeline+Resources.swift in Sources */,
DD37983D294D4D0C00650BE3 /* Random.swift in Sources */,
DD37984D294D9E6700650BE3 /* Functions.swift in Sources */,
DD6512D0294B0FF50035EC0F /* PreviewView.swift in Sources */,
EBB5BA5A29426E06003A2A5B /* Downloader.swift in Sources */,
EBE756092941178600806B32 /* LoadingView.swift in Sources */,
DD379847294D95AB00650BE3 /* Extensions.swift in Sources */,
DD379832294D4C4800650BE3 /* TextEncoder.swift in Sources */,
DD37983E294D4D0C00650BE3 /* DPMSolverMultistepScheduler.swift in Sources */,
DD37984B294D97C000650BE3 /* AppState.swift in Sources */,
DD379834294D4C8000650BE3 /* Scheduler.swift in Sources */,
EBB5BA5329425BEE003A2A5B /* PipelineLoader.swift in Sources */,
DD379849294D964A00650BE3 /* ErrorPopover.swift in Sources */,
DD379844294D4FAA00650BE3 /* ManagedMLModel.swift in Sources */,
EBE755C9293E37DD00806B32 /* DiffusionApp.swift in Sources */,
);
Expand Down Expand Up @@ -786,38 +790,6 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
EBB5BA5629425E17003A2A5B /* XCRemoteSwiftPackageReference "Path.swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mxcl/Path.swift.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.0;
};
};
EBB5BA5B294504DE003A2A5B /* XCRemoteSwiftPackageReference "ZIPFoundation" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/weichsel/ZIPFoundation.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.9.9;
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
EBB5BA5729425E17003A2A5B /* Path */ = {
isa = XCSwiftPackageProductDependency;
package = EBB5BA5629425E17003A2A5B /* XCRemoteSwiftPackageReference "Path.swift" */;
productName = Path;
};
EBB5BA5C294504DE003A2A5B /* ZIPFoundation */ = {
isa = XCSwiftPackageProductDependency;
package = EBB5BA5B294504DE003A2A5B /* XCRemoteSwiftPackageReference "ZIPFoundation" */;
productName = ZIPFoundation;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = EBE755BD293E37DD00806B32 /* Project object */;
}
100 changes: 100 additions & 0 deletions Diffusion.xcodeproj/xcshareddata/xcschemes/Diffusion.xcscheme
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1420"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "EBE755C4293E37DD00806B32"
BuildableName = "Diffusion.app"
BlueprintName = "Diffusion"
ReferencedContainer = "container:Diffusion.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "EBE755D5293E37DE00806B32"
BuildableName = "DiffusionTests.xctest"
BlueprintName = "DiffusionTests"
ReferencedContainer = "container:Diffusion.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "EBE755DF293E37DE00806B32"
BuildableName = "DiffusionUITests.xctest"
BlueprintName = "DiffusionUITests"
ReferencedContainer = "container:Diffusion.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "EBE755C4293E37DD00806B32"
BuildableName = "Diffusion.app"
BlueprintName = "Diffusion"
ReferencedContainer = "container:Diffusion.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "EBE755C4293E37DD00806B32"
BuildableName = "Diffusion.app"
BlueprintName = "Diffusion"
ReferencedContainer = "container:Diffusion.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
6 changes: 0 additions & 6 deletions Diffusion/Diffusion.entitlements
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,5 @@
<true/>
<key>com.apple.developer.kernel.increased-memory-limit</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
23 changes: 21 additions & 2 deletions Diffusion/DiffusionApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,30 @@ import SwiftUI

@main
struct DiffusionApp: App {
#if os(macOS)
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
#else
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
#endif

var body: some Scene {
WindowGroup {
LoadingView()
MainAppView()
}
}
}

extension String: Error {}
#if os(macOS)
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ notification: Notification) {
NSLog("*** Application launched")
}
}
#else
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
NSLog("Your code here")
return true
}
}
#endif
Loading