diff --git a/README.md b/README.md
index b7e3827..22a21fa 100644
--- a/README.md
+++ b/README.md
@@ -1,57 +1,34 @@
-# ๐ Quick Start
+# ๐ Installation
-You'll need to have [Node.js](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/) installed. Then run the following commands to install dependencies and launch StableStudio.
-
-```bash
-git clone https://github.com/Stability-AI/StableStudio.git
-```
-
-```bash
-cd StableStudio
-```
-
-```bash
-yarn
-```
-
-```bash
-yarn dev
-```
+You'll need to head over to the [Releases](https://github.com/Stability-AI/StableStudio/releases) page to download StableStudio for your operating system. StableStudio will download and install its own managed copy of [ComfyUI](https://github.com/comfyanonymous/ComfyUI) and the Stable Diffusion weights.
_**That's it! ๐**_
-StableStudio will be running at [localhost:3000](http://localhost:3000) by default.
-
-> If you are using the default Stability API plugin, You'll need to have your [API key](https://platform.stability.ai/docs/getting-started/authentication) handy. Otherwise, you should be good to go!
-
-# About
+# About
-

+
-StableStudio is [Stability AI](https://stability.ai)'s official open-source variant of [DreamStudio](https://www.dreamstudio.ai), our user interface for generative AI. It is a web-based application that allows users to create and edit generated images. We're not entirely sure where this project is going just yet, but we're excited to see what the community does with it!
+StableStudio is [Stability AI](https://stability.ai)'s official open-source variant of [DreamStudio](https://www.dreamstudio.ai), our user interface for generative AI. It is a desktop application for local inference of Stable Diffusion that allows users to create and edit generated images. We're excited to see what the community does with it!
-# FAQ
+# FAQ
### What's the difference between StableStudio and [DreamStudio](https://dreamstudio.ai)?
@@ -59,9 +36,9 @@ _Not much!_ There are a few tweaks we made to make the project more community-fr
- We removed [DreamStudio](https://dreamstudio.ai)-specific branding.
-- All "over-the-wire" API calls have been replaced by a [plugin system](./packages/stablestudio-plugin/README.md) which allows you to easily swap out the back-end.
+- StableStudio is now packaged as a tauri application
- - With a little bit of TypeScript, you can [create your own plugin](./packages/stablestudio-plugin/README.md) and use StableStudio with any back-end you want!
+- All "over-the-wire" API calls have been replaced by a [ComfyUI](https://github.com/comfyanonymous/ComfyUI) backend.
- We removed Stability-specific account features such as billing, API key management, etc.
@@ -69,12 +46,41 @@ _Not much!_ There are a few tweaks we made to make the project more community-fr
### Will [DreamStudio](https://dreamstudio.ai) still be supported?
-_Yes!_ Stability's hosted deployment of StableStudio will remain [DreamStudio](https://dreamstudio.ai). It will continue to get updates and stay up-to-date with StableStudio whenever possible.
+_Yes!_ Stability's hosted deployment of StableStudio will remain [DreamStudio](https://dreamstudio.ai).
-# ๐งโ๐ป Contributing
+# Building From Source
+
+> Make sure you have the rust toolchain, nodejs, and yarn installed
+
+1. Clone the repo
+
+```
+git clone https://github.com/Stability-AI/StableStudio
+```
+
+2. Install yarn dependencies
+
+```
+yarn install
+```
+
+3. Build
+
+```
+cargo tauri build
+```
+> Or for development
+
+```
+cargo tauri dev
+```
+
+Installers/executables should be located in `packages/stablestudio-ui/src-tauri/target/release/bundle`
+
+# Contributing
-

+
_**Community contributions are encouraged!**_
diff --git a/misc/ProjectCard.png b/misc/ProjectCard.png
index 8a341e1..c7983bd 100644
Binary files a/misc/ProjectCard.png and b/misc/ProjectCard.png differ
diff --git a/misc/ProjectCardOld.png b/misc/ProjectCardOld.png
new file mode 100644
index 0000000..8a341e1
Binary files /dev/null and b/misc/ProjectCardOld.png differ
diff --git a/misc/aboutReadmeImage.png b/misc/aboutReadmeImage.png
new file mode 100644
index 0000000..632004c
Binary files /dev/null and b/misc/aboutReadmeImage.png differ
diff --git a/misc/contributingReadmeImage.png b/misc/contributingReadmeImage.png
new file mode 100644
index 0000000..2dfb5b0
Binary files /dev/null and b/misc/contributingReadmeImage.png differ
diff --git a/packages/stablestudio-ui/src-tauri/src/server.rs b/packages/stablestudio-ui/src-tauri/src/server.rs
index 980884e..0e0b49f 100644
--- a/packages/stablestudio-ui/src-tauri/src/server.rs
+++ b/packages/stablestudio-ui/src-tauri/src/server.rs
@@ -76,7 +76,7 @@ impl Builder {
Some("text/html".to_string()),
None,
),
- ["api" | "prompt" | "object_info" | "view" | "queue" | "extensions", ..] => (
+ ["api" | "prompt" | "object_info" | "view" | "history" | "queue" | "extensions", ..] => (
None,
None,
Some(
diff --git a/packages/stablestudio-ui/src/Comfy/index.tsx b/packages/stablestudio-ui/src/Comfy/index.tsx
index 060f3a0..35f8552 100644
--- a/packages/stablestudio-ui/src/Comfy/index.tsx
+++ b/packages/stablestudio-ui/src/Comfy/index.tsx
@@ -1,6 +1,7 @@
import * as StableStudio from "@stability/stablestudio-plugin";
import { useLocation } from "react-router-dom";
import { create } from "zustand";
+import { shallow } from "zustand/shallow";
import { Generation } from "~/Generation";
export type ComfyApp = {
@@ -16,14 +17,19 @@ export type ComfyApp = {
queuePrompt: (number: number, batchCount: number) => Promise;
clean: () => void;
api: ComfyAPI;
+ graph: {
+ _nodes: {
+ title: string;
+ type: string;
+ widgets_values: any[];
+ }[];
+ };
};
export type ComfyAPI = {
addEventListener: (event: string, callback: (detail: any) => void) => void;
};
-export type Comfy = { app: ComfyApp; api: ComfyAPI };
-
export type ComfyOutput = {
images: {
filename: string;
@@ -233,6 +239,27 @@ export namespace Comfy {
console.log("registered ComfyUI listeners");
use.getState().setRunning(true);
};
+
+ export const Output = () => {
+ const output = Comfy.use(({ output }) => output, shallow);
+
+ return (
+
+ {[...output].reverse().map((line, index) => (
+
+ {line.data}
+
+ ))}
+
+ );
+ };
}
function cropImage(
diff --git a/packages/stablestudio-ui/src/Generation/Image/Create/index.tsx b/packages/stablestudio-ui/src/Generation/Image/Create/index.tsx
index 9b2b1c3..b747ee2 100644
--- a/packages/stablestudio-ui/src/Generation/Image/Create/index.tsx
+++ b/packages/stablestudio-ui/src/Generation/Image/Create/index.tsx
@@ -58,6 +58,13 @@ export namespace Create {
pluginInput.width = Math.ceil((pluginInput.width ?? 512) / 64) * 64;
}
+ console.log(Comfy.get());
+
+ Comfy.get()?.graph._nodes?.forEach((node) => {
+ if (node.title === "StableStudio Image Count") {
+ node.widgets_values = count as any;
+ }
+ });
await Comfy.get()?.queuePrompt(1, 1);
} catch (caught: unknown) {
const exception = Generation.Image.Exception.create(caught);
diff --git a/packages/stablestudio-ui/src/Settings/Manifest.tsx b/packages/stablestudio-ui/src/Settings/Manifest.tsx
index 33c1b1a..ef07ede 100644
--- a/packages/stablestudio-ui/src/Settings/Manifest.tsx
+++ b/packages/stablestudio-ui/src/Settings/Manifest.tsx
@@ -23,7 +23,6 @@ export function Manifest({
settings: PluginSettings;
setSetting: (key: string, value: any) => void;
}) {
- const output = Comfy.use(({ output }) => output, shallow);
return (
@@ -83,24 +82,7 @@ export function Manifest({
- {output.length > 0 && (
- <>
-
- {[...output].reverse().map((line, index) => (
-
- {line.data}
-
- ))}
-
- >
- )}
+
{Object.keys(settings).length > 0 && (
diff --git a/packages/stablestudio-ui/vite.config.ts b/packages/stablestudio-ui/vite.config.ts
index 0350a97..3f3ae33 100644
--- a/packages/stablestudio-ui/vite.config.ts
+++ b/packages/stablestudio-ui/vite.config.ts
@@ -46,6 +46,7 @@ export default defineConfig(({ mode }) => {
"/object_info": redirectComfy,
"/view": redirectComfy,
"/queue": redirectComfy,
+ "/history": redirectComfy,
},
},