Parcourir la source

Implement logAuthAttempt for detailed auth logging

Fszontagh il y a 3 mois
Parent
commit
186fbe2b12
100 fichiers modifiés avec 738 ajouts et 292 suppressions
  1. 12 0
      .clang-format
  2. 10 0
      .clang-tidy
  3. 19 0
      .kdev4/stable-diffusion.cpp-rest.kdev4
  4. 0 26
      agents.config.json
  5. 0 1
      auth/api_keys.json
  6. 0 19
      auth/users.json
  7. 34 34
      include/server_config.h
  8. 3 4
      src/jwt_auth.cpp
  9. 53 41
      src/main.cpp
  10. 1 2
      src/model_detector.cpp
  11. 149 151
      src/server.cpp
  12. 13 14
      src/user_manager.cpp
  13. 0 0
      webui/404.html
  14. 0 0
      webui/404/index.html
  15. 9 0
      webui/__next.__PAGE__.txt
  16. 15 0
      webui/__next._full.txt
  17. 8 0
      webui/__next._index.txt
  18. 10 0
      webui/__next._tree.txt
  19. 0 0
      webui/_next/static/chunks/130bd6bb35ac58d9.js
  20. 0 0
      webui/_next/static/chunks/16b035ace79f7f06.js
  21. 0 0
      webui/_next/static/chunks/185743d4b7e1c4e7.js
  22. 0 0
      webui/_next/static/chunks/247eb132b7f7b574.js
  23. 0 0
      webui/_next/static/chunks/2b61c36a3c1ed6a6.js
  24. 0 0
      webui/_next/static/chunks/355029048170f49e.css
  25. 0 0
      webui/_next/static/chunks/37881448663c7a5a.js
  26. 0 0
      webui/_next/static/chunks/3b2a94c6033fe723.js
  27. 0 0
      webui/_next/static/chunks/3e223e1504d0dbc8.js
  28. 0 0
      webui/_next/static/chunks/53f670d37f2f70b7.js
  29. 0 0
      webui/_next/static/chunks/58e77fc17acbf1e7.js
  30. 0 0
      webui/_next/static/chunks/603cfd5a4c73386a.js
  31. 0 0
      webui/_next/static/chunks/9ac0880816f68a97.js
  32. 0 0
      webui/_next/static/chunks/a6dad97d9634a72d.js
  33. 0 0
      webui/_next/static/chunks/ca039c30622456f6.js
  34. 0 0
      webui/_next/static/chunks/cb0e61acc3304a50.js
  35. 0 0
      webui/_next/static/chunks/cd8f8302680ec452.js
  36. 0 0
      webui/_next/static/chunks/dc593da89c38d69a.js
  37. 0 0
      webui/_next/static/chunks/df74118f27807d51.js
  38. 0 0
      webui/_next/static/chunks/e09bce3d7b047eab.js
  39. 1 0
      webui/_next/static/chunks/ff1a16fafef87110.js
  40. 0 0
      webui/_next/static/chunks/turbopack-ee49e6e42f0deff4.js
  41. BIN
      webui/_next/static/media/1bffadaabf893a1e-s.7cd81963.woff2
  42. BIN
      webui/_next/static/media/2bbe8d2671613f1f-s.76dcb0b2.woff2
  43. BIN
      webui/_next/static/media/2c55a0e60120577a-s.2a48534a.woff2
  44. BIN
      webui/_next/static/media/5476f68d60460930-s.c995e352.woff2
  45. BIN
      webui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2
  46. BIN
      webui/_next/static/media/9c72aa0f40e4eef8-s.18a48cbc.woff2
  47. BIN
      webui/_next/static/media/ad66f9afd8947f86-s.7a40eb73.woff2
  48. BIN
      webui/_next/static/media/favicon.0b3bf435.ico
  49. 11 0
      webui/_next/static/stable-diffusion-ui/_buildManifest.js
  50. 1 0
      webui/_next/static/stable-diffusion-ui/_clientMiddlewareManifest.json
  51. 1 0
      webui/_next/static/stable-diffusion-ui/_ssgManifest.js
  52. 12 0
      webui/_not-found/__next._full.txt
  53. 8 0
      webui/_not-found/__next._index.txt
  54. 5 0
      webui/_not-found/__next._not-found.__PAGE__.txt
  55. 4 0
      webui/_not-found/__next._not-found.txt
  56. 9 0
      webui/_not-found/__next._tree.txt
  57. 0 0
      webui/_not-found/index.html
  58. 12 0
      webui/_not-found/index.txt
  59. 15 0
      webui/demo/__next._full.txt
  60. 8 0
      webui/demo/__next._index.txt
  61. 10 0
      webui/demo/__next._tree.txt
  62. 9 0
      webui/demo/__next.demo.__PAGE__.txt
  63. 4 0
      webui/demo/__next.demo.txt
  64. 0 0
      webui/demo/index.html
  65. 15 0
      webui/demo/index.txt
  66. BIN
      webui/favicon.ico
  67. 1 0
      webui/file.svg
  68. 1 0
      webui/globe.svg
  69. 15 0
      webui/img2img/__next._full.txt
  70. 8 0
      webui/img2img/__next._index.txt
  71. 10 0
      webui/img2img/__next._tree.txt
  72. 9 0
      webui/img2img/__next.img2img.__PAGE__.txt
  73. 4 0
      webui/img2img/__next.img2img.txt
  74. 0 0
      webui/img2img/index.html
  75. 15 0
      webui/img2img/index.txt
  76. 0 0
      webui/index.html
  77. 15 0
      webui/index.txt
  78. 15 0
      webui/inpainting/__next._full.txt
  79. 8 0
      webui/inpainting/__next._index.txt
  80. 10 0
      webui/inpainting/__next._tree.txt
  81. 9 0
      webui/inpainting/__next.inpainting.__PAGE__.txt
  82. 4 0
      webui/inpainting/__next.inpainting.txt
  83. 0 0
      webui/inpainting/index.html
  84. 15 0
      webui/inpainting/index.txt
  85. 1 0
      webui/next.svg
  86. 15 0
      webui/settings/__next._full.txt
  87. 8 0
      webui/settings/__next._index.txt
  88. 10 0
      webui/settings/__next._tree.txt
  89. 9 0
      webui/settings/__next.settings.__PAGE__.txt
  90. 4 0
      webui/settings/__next.settings.txt
  91. 0 0
      webui/settings/index.html
  92. 15 0
      webui/settings/index.txt
  93. 15 0
      webui/text2img/__next._full.txt
  94. 8 0
      webui/text2img/__next._index.txt
  95. 10 0
      webui/text2img/__next._tree.txt
  96. 9 0
      webui/text2img/__next.text2img.__PAGE__.txt
  97. 4 0
      webui/text2img/__next.text2img.txt
  98. 0 0
      webui/text2img/index.html
  99. 15 0
      webui/text2img/index.txt
  100. 15 0
      webui/upscaler/__next._full.txt

+ 12 - 0
.clang-format

@@ -0,0 +1,12 @@
+BasedOnStyle: Chromium
+UseTab: Never
+IndentWidth: 4
+TabWidth: 4
+AllowShortIfStatementsOnASingleLine: false
+ColumnLimit: 0
+AccessModifierOffset: -4
+NamespaceIndentation: All
+FixNamespaceComments: false
+AlignAfterOpenBracket: true
+AlignConsecutiveAssignments: true
+IndentCaseLabels: true

+ 10 - 0
.clang-tidy

@@ -0,0 +1,10 @@
+Checks: >
+  modernize-make-shared,
+  modernize-use-nullptr,
+  modernize-use-override,
+  modernize-pass-by-value,
+  modernize-return-braced-init-list,
+  modernize-deprecated-headers,
+HeaderFilterRegex: '^$'
+WarningsAsErrors: ''
+FormatStyle: none

+ 19 - 0
.kdev4/stable-diffusion.cpp-rest.kdev4

@@ -0,0 +1,19 @@
+[Buildset]
+BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x002\x00s\x00t\x00a\x00b\x00l\x00e\x00-\x00d\x00i\x00f\x00f\x00u\x00s\x00i\x00o\x00n\x00.\x00c\x00p\x00p\x00-\x00r\x00e\x00s\x00t)
+
+[CMake]
+Build Directory Count=1
+Current Build Directory Index-Host System=0
+
+[CMake][CMake Build Directory 0]
+Build Directory Path=/data/stable-diffusion.cpp-rest/build
+Build Type=
+CMake Binary=/usr/bin/cmake
+CMake Executable=/usr/bin/cmake
+Environment Profile=
+Extra Arguments=
+Install Directory=/usr/local
+Runtime=Host System
+
+[Project]
+VersionControlSupport=kdevgit

+ 0 - 26
agents.config.json

@@ -1,26 +0,0 @@
-{
-  "nanocoder": {
-"providers":[
-         {
-            "name":"ollama",
-            "models":[
-               "gemma3:1b"
-            ],
-            "baseUrl":"http://localhost:11434/v1"
-         }
-      ],
-    "mcpServers": [
-             {
-            "name":"gogs",
-            "command":"node",
-            "args":[
-               "/data/gogs-mcp/dist/index.js"
-            ],
-            "env":{
-               "GOGS_ACCESS_TOKEN":"5c332ecdfea7813602bbc52930334c3853732791",
-               "GOGS_SERVER_URL":"https://git.fsociety.hu"
-            }
-         }
-       ]
-  }
-}

+ 0 - 1
auth/api_keys.json

@@ -1 +0,0 @@
-{}

+ 0 - 19
auth/users.json

@@ -1,19 +0,0 @@
-{
-  "fszontagh": {
-    "active": true,
-    "api_keys": [],
-    "created_at": 1762207366,
-    "created_by": "system",
-    "email": "fszontagh@localhost",
-    "id": "user_1762207366_9383",
-    "last_login_at": -1140902984,
-    "password_changed_at": -336,
-    "password_hash": "",
-    "permissions": [
-      "read",
-      "generate"
-    ],
-    "role": "user",
-    "username": "fszontagh"
-  }
-}

+ 34 - 34
include/server_config.h

@@ -8,66 +8,66 @@
  * @brief Authentication method enumeration
  */
 enum class AuthMethod {
-    NONE,           ///< No authentication required
-    JWT,            ///< JWT token authentication
-    API_KEY,        ///< API key authentication
-    UNIX,           ///< Unix system authentication
-    PAM,            ///< PAM authentication
-    OPTIONAL        ///< Authentication optional (guest access allowed)
+    NONE,     ///< No authentication required
+    JWT,      ///< JWT token authentication
+    API_KEY,  ///< API key authentication
+    UNIX,     ///< Unix system authentication
+    PAM,      ///< PAM authentication
+    OPTIONAL  ///< Authentication optional (guest access allowed)
 };
 
 /**
  * @brief Authentication configuration structure
  */
 struct AuthConfig {
-    AuthMethod authMethod = AuthMethod::NONE;   ///< Primary authentication method
-    bool enableGuestAccess = false;              ///< Allow unauthenticated access
-    std::string jwtSecret = "";                  ///< JWT secret key (auto-generated if empty)
-    int jwtExpirationMinutes = 60;               ///< JWT token expiration in minutes
-    std::string authRealm = "stable-diffusion-rest"; ///< Authentication realm
-    std::string dataDir = "./auth";              ///< Directory for authentication data
-    std::string pamServiceName = "stable-diffusion-rest"; ///< PAM service name
-    std::vector<std::string> publicPaths;        ///< Paths that don't require authentication
-    std::vector<std::string> adminPaths;         ///< Paths that require admin access
-    std::vector<std::string> userPaths;          ///< Paths that require user access
-    std::string customPublicPaths;               ///< Custom public paths (comma-separated)
+    AuthMethod authMethod      = AuthMethod::NONE;         ///< Primary authentication method
+    bool enableGuestAccess     = false;                    ///< Allow unauthenticated access
+    std::string jwtSecret      = "";                       ///< JWT secret key (auto-generated if empty)
+    int jwtExpirationMinutes   = 60;                       ///< JWT token expiration in minutes
+    std::string authRealm      = "stable-diffusion-rest";  ///< Authentication realm
+    std::string dataDir        = "./auth";                 ///< Directory for authentication data
+    std::string pamServiceName = "stable-diffusion-rest";  ///< PAM service name
+    std::vector<std::string> publicPaths;                  ///< Paths that don't require authentication
+    std::vector<std::string> adminPaths;                   ///< Paths that require admin access
+    std::vector<std::string> userPaths;                    ///< Paths that require user access
+    std::string customPublicPaths;                         ///< Custom public paths (comma-separated)
 };
 
 // Server configuration structure
 struct ServerConfig {
     // Server settings
-    std::string host = "0.0.0.0";
-    int port = 8080;
+    std::string host             = "0.0.0.0";
+    int port                     = 8080;
     int maxConcurrentGenerations = 1;
-    bool verbose = false;
+    bool verbose                 = false;
 
     // Required directory parameter
-    std::string modelsDir = "";         // Base models directory (required, must be set via --models-dir)
+    std::string modelsDir = "";  // Base models directory (required, must be set via --models-dir)
 
     // Model type directory parameters
     // All default to standard folder names under modelsDir if not explicitly set
-    std::string checkpoints = "";       // Checkpoints directory (default: checkpoints)
-    std::string controlnetDir = "";     // ControlNet directory (default: controlnet)
-    std::string embeddingsDir = "";     // Embeddings directory (default: embeddings)
-    std::string esrganDir = "";         // ESRGAN directory (default: ESRGAN)
-    std::string loraDir = "";           // LoRA directory (default: loras)
-    std::string taesdDir = "";          // TAESD directory (default: TAESD)
-    std::string vaeDir = "";            // VAE directory (default: vae)
-    std::string diffusionModelsDir = "";      // Diffusion models directory (default: diffusion_models)
+    std::string checkpoints        = "";  // Checkpoints directory (default: checkpoints)
+    std::string controlnetDir      = "";  // ControlNet directory (default: controlnet)
+    std::string embeddingsDir      = "";  // Embeddings directory (default: embeddings)
+    std::string esrganDir          = "";  // ESRGAN directory (default: ESRGAN)
+    std::string loraDir            = "";  // LoRA directory (default: loras)
+    std::string taesdDir           = "";  // TAESD directory (default: TAESD)
+    std::string vaeDir             = "";  // VAE directory (default: vae)
+    std::string diffusionModelsDir = "";  // Diffusion models directory (default: diffusion_models)
 
     // Queue and output directories
-    std::string queueDir = "./queue";        // Directory to store queue job files
-    std::string outputDir = "./output";      // Directory to store generated images/videos
+    std::string queueDir  = "./queue";   // Directory to store queue job files
+    std::string outputDir = "./output";  // Directory to store generated images/videos
 
     // UI directory (optional - for serving static web UI)
-    std::string uiDir = "";                  // Directory containing static web UI files
+    std::string uiDir = "";  // Directory containing static web UI files
 
     // Logging options
-    bool enableFileLogging = false;
+    bool enableFileLogging  = false;
     std::string logFilePath = "/var/log/stable-diffusion-rest/server.log";
 
     // Authentication configuration
     AuthConfig auth;
 };
 
-#endif // SERVER_CONFIG_H
+#endif  // SERVER_CONFIG_H

+ 3 - 4
src/jwt_auth.cpp

@@ -8,7 +8,6 @@
 #include <algorithm>
 #include <cctype>
 
-using json = nlohmann::json;
 
 JWTAuth::JWTAuth(const std::string& secret,
                  int tokenExpirationMinutes,
@@ -259,7 +258,7 @@ std::string JWTAuth::base64UrlDecode(const std::string& input) {
 }
 
 std::string JWTAuth::createHeader() const {
-    json header = {
+    nlohmann::json header = {
         {"alg", "HS256"},
         {"typ", "JWT"}
     };
@@ -267,7 +266,7 @@ std::string JWTAuth::createHeader() const {
 }
 
 std::string JWTAuth::createPayload(const Claims& claims) const {
-    json payload = {
+    nlohmann::json payload = {
         {"sub", claims.userId},
         {"username", claims.username},
         {"role", claims.role},
@@ -295,7 +294,7 @@ JWTAuth::Claims JWTAuth::parsePayload(const std::string& token) const {
         }
 
         std::string payloadStr = base64UrlDecode(parts[1]);
-        json payload = json::parse(payloadStr);
+        nlohmann::json payload = nlohmann::json::parse(payloadStr);
 
         claims.userId = payload.value("sub", "");
         claims.username = payload.value("username", "");

+ 53 - 41
src/main.cpp

@@ -1,19 +1,19 @@
-#include <iostream>
-#include <memory>
 #include <signal.h>
-#include <string>
+#include <algorithm>
 #include <atomic>
-#include <thread>
 #include <chrono>
 #include <filesystem>
-#include <algorithm>
-#include "server.h"
-#include "model_manager.h"
+#include <iostream>
+#include <memory>
+#include <string>
+#include <thread>
+#include "auth_middleware.h"
 #include "generation_queue.h"
-#include "server_config.h"
 #include "logger.h"
+#include "model_manager.h"
+#include "server.h"
+#include "server_config.h"
 #include "user_manager.h"
-#include "auth_middleware.h"
 
 // Global flag for signal handling
 std::atomic<bool> g_running(true);
@@ -66,14 +66,14 @@ ServerConfig parseArguments(int argc, char* argv[]) {
     ServerConfig config;
 
     // Track which parameters were explicitly set
-    bool modelsDirSet = false;
+    bool modelsDirSet   = false;
     bool checkpointsSet = false;
-    bool controlnetSet = false;
-    bool embeddingsSet = false;
-    bool esrganSet = false;
-    bool loraSet = false;
-    bool taesdSet = false;
-    bool vaeSet = false;
+    bool controlnetSet  = false;
+    bool embeddingsSet  = false;
+    bool esrganSet      = false;
+    bool loraSet        = false;
+    bool taesdSet       = false;
+    bool vaeSet         = false;
 
     for (int i = 1; i < argc; i++) {
         std::string arg = argv[i];
@@ -84,28 +84,28 @@ ServerConfig parseArguments(int argc, char* argv[]) {
             config.port = std::stoi(argv[++i]);
         } else if (arg == "--models-dir" && i + 1 < argc) {
             config.modelsDir = argv[++i];
-            modelsDirSet = true;
+            modelsDirSet     = true;
         } else if (arg == "--checkpoints" && i + 1 < argc) {
             config.checkpoints = argv[++i];
-            checkpointsSet = true;
+            checkpointsSet     = true;
         } else if (arg == "--controlnet-dir" && i + 1 < argc) {
             config.controlnetDir = argv[++i];
-            controlnetSet = true;
+            controlnetSet        = true;
         } else if (arg == "--embeddings-dir" && i + 1 < argc) {
             config.embeddingsDir = argv[++i];
-            embeddingsSet = true;
+            embeddingsSet        = true;
         } else if (arg == "--esrgan-dir" && i + 1 < argc) {
             config.esrganDir = argv[++i];
-            esrganSet = true;
+            esrganSet        = true;
         } else if (arg == "--lora-dir" && i + 1 < argc) {
             config.loraDir = argv[++i];
-            loraSet = true;
+            loraSet        = true;
         } else if (arg == "--taesd-dir" && i + 1 < argc) {
             config.taesdDir = argv[++i];
-            taesdSet = true;
+            taesdSet        = true;
         } else if (arg == "--vae-dir" && i + 1 < argc) {
             config.vaeDir = argv[++i];
-            vaeSet = true;
+            vaeSet        = true;
         } else if (arg == "--max-concurrent" && i + 1 < argc) {
             config.maxConcurrentGenerations = std::stoi(argv[++i]);
         } else if (arg == "--queue-dir" && i + 1 < argc) {
@@ -118,7 +118,7 @@ ServerConfig parseArguments(int argc, char* argv[]) {
             config.verbose = true;
         } else if (arg == "--log-file" && i + 1 < argc) {
             config.enableFileLogging = true;
-            config.logFilePath = argv[++i];
+            config.logFilePath       = argv[++i];
         } else if (arg == "--enable-file-logging") {
             config.enableFileLogging = true;
         } else if ((arg == "--auth-method" || arg == "--auth") && i + 1 < argc) {
@@ -259,19 +259,18 @@ ServerConfig parseArguments(int argc, char* argv[]) {
     }
 
     // Resolve all directory paths (absolute paths used as-is, relative resolved from models-dir)
-    config.checkpoints = resolveDirectoryPath(config.checkpoints, config.modelsDir);
+    config.checkpoints   = resolveDirectoryPath(config.checkpoints, config.modelsDir);
     config.controlnetDir = resolveDirectoryPath(config.controlnetDir, config.modelsDir);
     config.embeddingsDir = resolveDirectoryPath(config.embeddingsDir, config.modelsDir);
-    config.esrganDir = resolveDirectoryPath(config.esrganDir, config.modelsDir);
-    config.loraDir = resolveDirectoryPath(config.loraDir, config.modelsDir);
-    config.taesdDir = resolveDirectoryPath(config.taesdDir, config.modelsDir);
-    config.vaeDir = resolveDirectoryPath(config.vaeDir, config.modelsDir);
+    config.esrganDir     = resolveDirectoryPath(config.esrganDir, config.modelsDir);
+    config.loraDir       = resolveDirectoryPath(config.loraDir, config.modelsDir);
+    config.taesdDir      = resolveDirectoryPath(config.taesdDir, config.modelsDir);
+    config.vaeDir        = resolveDirectoryPath(config.vaeDir, config.modelsDir);
 
     return config;
 }
 
 int main(int argc, char* argv[]) {
-
     // Parse command line arguments
     ServerConfig config = parseArguments(argc, argv);
 
@@ -329,7 +328,7 @@ int main(int argc, char* argv[]) {
                 std::cerr << "Error: " << name << " directory is required but not specified" << std::endl;
                 return false;
             }
-            return true; // Empty path is valid for optional directories
+            return true;  // Empty path is valid for optional directories
         }
 
         std::filesystem::path dirPath(path);
@@ -339,7 +338,7 @@ int main(int argc, char* argv[]) {
                 return false;
             } else {
                 std::cerr << "Warning: " << name << " directory does not exist: " << path << std::endl;
-                return true; // Optional directory can be missing
+                return true;  // Optional directory can be missing
             }
         }
 
@@ -399,7 +398,7 @@ int main(int argc, char* argv[]) {
         }
 
         auto userManager = std::make_shared<UserManager>(config.auth.dataDir,
-                                                           static_cast<UserManager::AuthMethod>(config.auth.authMethod));
+                                                         static_cast<UserManager::AuthMethod>(config.auth.authMethod));
         if (!userManager->initialize()) {
             std::cerr << "Error: Failed to initialize user manager" << std::endl;
             return 1;
@@ -409,11 +408,24 @@ int main(int argc, char* argv[]) {
             std::cout << "User manager initialized" << std::endl;
             std::cout << "Authentication method: ";
             switch (config.auth.authMethod) {
-                case AuthMethod::NONE: std::cout << "None"; break;
-                case AuthMethod::JWT: std::cout << "JWT"; break;
-                case AuthMethod::API_KEY: std::cout << "API Key"; break;
-                case AuthMethod::UNIX: std::cout << "Unix"; break;
-                case AuthMethod::OPTIONAL: std::cout << "Optional"; break;
+                case AuthMethod::NONE:
+                    std::cout << "None";
+                    break;
+                case AuthMethod::JWT:
+                    std::cout << "JWT";
+                    break;
+                case AuthMethod::API_KEY:
+                    std::cout << "API Key";
+                    break;
+                case AuthMethod::UNIX:
+                    std::cout << "Unix";
+                    break;
+                case AuthMethod::OPTIONAL:
+                    std::cout << "Optional";
+                    break;
+                case AuthMethod::PAM:
+                    std::cout << "PAM";
+                    break;
             }
             std::cout << std::endl;
         }
@@ -426,10 +438,10 @@ int main(int argc, char* argv[]) {
         }
 
         // Initialize components
-        auto modelManager = std::make_unique<ModelManager>();
+        auto modelManager    = std::make_unique<ModelManager>();
         auto generationQueue = std::make_unique<GenerationQueue>(modelManager.get(), config.maxConcurrentGenerations,
                                                                  config.queueDir, config.outputDir);
-        auto server = std::make_unique<Server>(modelManager.get(), generationQueue.get(), config.outputDir, config.uiDir);
+        auto server          = std::make_unique<Server>(modelManager.get(), generationQueue.get(), config.outputDir, config.uiDir);
 
         // Set authentication components in server
         server->setAuthComponents(userManager, authMiddleware);

+ 1 - 2
src/model_detector.cpp

@@ -4,7 +4,6 @@
 #include <algorithm>
 #include <cstring>
 
-using json = nlohmann::json;
 
 // Helper function for C++17 compatibility (ends_with is C++20)
 static bool endsWith(const std::string& str, const std::string& suffix) {
@@ -168,7 +167,7 @@ bool ModelDetector::parseSafetensorsHeader(
 
     // Parse JSON
     try {
-        json headerJson = json::parse(headerBuffer.begin(), headerBuffer.end());
+        nlohmann::json headerJson = nlohmann::json::parse(headerBuffer.begin(), headerBuffer.end());
 
         // Extract metadata if present
         if (headerJson.contains("__metadata__")) {

Fichier diff supprimé car celui-ci est trop grand
+ 149 - 151
src/server.cpp


+ 13 - 14
src/user_manager.cpp

@@ -14,7 +14,6 @@
 #include <sys/types.h>
 #include <openssl/sha.h>
 
-using json = nlohmann::json;
 
 // Define static permission constants
 const std::string UserManager::Permissions::READ = "read";
@@ -854,11 +853,11 @@ std::string UserManager::generateKeyId() {
 
 bool UserManager::saveUserData() {
     try {
-        json usersJson = json::object();
+        nlohmann::json usersData = nlohmann::json::object();
 
         for (const auto& pair : m_users) {
             const UserInfo& user = pair.second;
-            json userJson = {
+            nlohmann::json userData = {
                 {"id", user.id},
                 {"username", user.username},
                 {"email", user.email},
@@ -872,7 +871,7 @@ bool UserManager::saveUserData() {
                 {"password_changed_at", user.passwordChangedAt},
                 {"created_by", user.createdBy}
             };
-            usersJson[user.username] = userJson;
+            usersData[user.username] = userData;
         }
 
         std::string filename = m_dataDir + "/users.json";
@@ -881,7 +880,7 @@ bool UserManager::saveUserData() {
             return false;
         }
 
-        file << usersJson.dump(2);
+        file << usersData.dump(2);
         file.close();
 
         return true;
@@ -899,7 +898,7 @@ bool UserManager::loadUserData() {
             return false; // File doesn't exist is OK for first run
         }
 
-        json usersJson;
+        nlohmann::json usersJson;
         file >> usersJson;
         file.close();
 
@@ -907,7 +906,7 @@ bool UserManager::loadUserData() {
 
         for (auto& item : usersJson.items()) {
             const std::string& username = item.key();
-            json& userJson = item.value();
+            nlohmann::json& userJson = item.value();
 
             UserInfo user;
             user.id = userJson.value("id", "");
@@ -935,11 +934,11 @@ bool UserManager::loadUserData() {
 
 bool UserManager::saveApiKeyData() {
     try {
-        json apiKeysJson = json::object();
+        nlohmann::json apiKeysData = nlohmann::json::object();
 
         for (const auto& pair : m_apiKeys) {
             const ApiKeyInfo& keyInfo = pair.second;
-            json keyJson = {
+            nlohmann::json keyData = {
                 {"key_id", keyInfo.keyId},
                 {"key_hash", keyInfo.keyHash},
                 {"name", keyInfo.name},
@@ -951,7 +950,7 @@ bool UserManager::saveApiKeyData() {
                 {"expires_at", keyInfo.expiresAt},
                 {"created_by", keyInfo.createdBy}
             };
-            apiKeysJson[keyInfo.keyId] = keyJson;
+            apiKeysData[keyInfo.keyId] = keyData;
         }
 
         std::string filename = m_dataDir + "/api_keys.json";
@@ -960,7 +959,7 @@ bool UserManager::saveApiKeyData() {
             return false;
         }
 
-        file << apiKeysJson.dump(2);
+        file << apiKeysData.dump(2);
         file.close();
 
         return true;
@@ -978,7 +977,7 @@ bool UserManager::loadApiKeyData() {
             return false; // File doesn't exist is OK for first run
         }
 
-        json apiKeysJson;
+        nlohmann::json apiKeysJson;
         file >> apiKeysJson;
         file.close();
 
@@ -987,7 +986,7 @@ bool UserManager::loadApiKeyData() {
 
         for (auto& item : apiKeysJson.items()) {
             const std::string& keyId = item.key();
-            json& keyJson = item.value();
+            nlohmann::json& keyJson = item.value();
 
             ApiKeyInfo keyInfo;
             keyInfo.keyId = keyJson.value("key_id", keyId);
@@ -1063,4 +1062,4 @@ bool UserManager::canManageUser(const std::string& requestingUserId, const std::
     // Check if requester is admin
     UserInfo requester = getUserInfo(requestingUserId);
     return requester.role == roleToString(UserRole::ADMIN);
-}
+}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/404.html


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/404/index.html


+ 9 - 0
webui/__next.__PAGE__.txt

@@ -0,0 +1,9 @@
+1:"$Sreact.fragment"
+2:I[47257,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ClientPageRoot"]
+3:I[31713,["/ui/_next/static/chunks/cd8f8302680ec452.js","/ui/_next/static/chunks/ca039c30622456f6.js"],"default"]
+6:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
+7:"$Sreact.suspense"
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ui/_next/static/chunks/ca039c30622456f6.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
+4:{}
+5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
+8:null

Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/__next._full.txt


+ 8 - 0
webui/__next._index.txt

@@ -0,0 +1,8 @@
+1:"$Sreact.fragment"
+2:I[89554,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"ThemeProvider"]
+3:I[91432,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"AuthProvider"]
+4:I[44,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"VersionChecker"]
+5:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+6:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/chunks/355029048170f49e.css","precedence":"next"}],["$","script","script-0",{"src":"/ui/_next/static/chunks/cd8f8302680ec452.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"src":"/ui/config.js"}]}],["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}]}]}]]}]]}],"loading":null,"isPartial":false}

+ 10 - 0
webui/__next._tree.txt

@@ -0,0 +1,10 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
+4:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
+5:"$Sreact.suspense"
+7:I[27201,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+:HL["/ui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
+0:{"buildId":"stable-diffusion-ui","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"head":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isHeadPartial":false,"staleTime":300}
+3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
+6:[["$","title","0",{"children":"Stable Diffusion REST - Web UI"}],["$","meta","1",{"name":"description","content":"Modern web interface for Stable Diffusion image generation"}],["$","link","2",{"rel":"icon","href":"/ui/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L7","3",{}]]

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/130bd6bb35ac58d9.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/16b035ace79f7f06.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/185743d4b7e1c4e7.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/247eb132b7f7b574.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/2b61c36a3c1ed6a6.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/355029048170f49e.css


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/37881448663c7a5a.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/3b2a94c6033fe723.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/3e223e1504d0dbc8.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/53f670d37f2f70b7.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/58e77fc17acbf1e7.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/603cfd5a4c73386a.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/9ac0880816f68a97.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/a6dad97d9634a72d.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/ca039c30622456f6.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/cb0e61acc3304a50.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/cd8f8302680ec452.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/dc593da89c38d69a.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/df74118f27807d51.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/e09bce3d7b047eab.js


+ 1 - 0
webui/_next/static/chunks/ff1a16fafef87110.js

@@ -0,0 +1 @@
+(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}}]);

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_next/static/chunks/turbopack-ee49e6e42f0deff4.js


BIN
webui/_next/static/media/1bffadaabf893a1e-s.7cd81963.woff2


BIN
webui/_next/static/media/2bbe8d2671613f1f-s.76dcb0b2.woff2


BIN
webui/_next/static/media/2c55a0e60120577a-s.2a48534a.woff2


BIN
webui/_next/static/media/5476f68d60460930-s.c995e352.woff2


BIN
webui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2


BIN
webui/_next/static/media/9c72aa0f40e4eef8-s.18a48cbc.woff2


BIN
webui/_next/static/media/ad66f9afd8947f86-s.7a40eb73.woff2


BIN
webui/_next/static/media/favicon.0b3bf435.ico


+ 11 - 0
webui/_next/static/stable-diffusion-ui/_buildManifest.js

@@ -0,0 +1,11 @@
+self.__BUILD_MANIFEST = {
+  "__rewrites": {
+    "afterFiles": [],
+    "beforeFiles": [],
+    "fallback": []
+  },
+  "sortedPages": [
+    "/_app",
+    "/_error"
+  ]
+};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()

+ 1 - 0
webui/_next/static/stable-diffusion-ui/_clientMiddlewareManifest.json

@@ -0,0 +1 @@
+[]

+ 1 - 0
webui/_next/static/stable-diffusion-ui/_ssgManifest.js

@@ -0,0 +1 @@
+self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()

Fichier diff supprimé car celui-ci est trop grand
+ 12 - 0
webui/_not-found/__next._full.txt


+ 8 - 0
webui/_not-found/__next._index.txt

@@ -0,0 +1,8 @@
+1:"$Sreact.fragment"
+2:I[89554,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"ThemeProvider"]
+3:I[91432,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"AuthProvider"]
+4:I[44,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"VersionChecker"]
+5:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+6:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/chunks/355029048170f49e.css","precedence":"next"}],["$","script","script-0",{"src":"/ui/_next/static/chunks/cd8f8302680ec452.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"src":"/ui/config.js"}]}],["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}]}]}]]}]]}],"loading":null,"isPartial":false}

+ 5 - 0
webui/_not-found/__next._not-found.__PAGE__.txt

@@ -0,0 +1,5 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
+3:"$Sreact.suspense"
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false}
+4:null

+ 4 - 0
webui/_not-found/__next._not-found.txt

@@ -0,0 +1,4 @@
+1:"$Sreact.fragment"
+2:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+3:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}

+ 9 - 0
webui/_not-found/__next._tree.txt

@@ -0,0 +1,9 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
+4:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
+5:"$Sreact.suspense"
+7:I[27201,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"/_not-found","paramType":null,"paramKey":"/_not-found","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"head":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isHeadPartial":false,"staleTime":300}
+3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
+6:[["$","title","0",{"children":"Stable Diffusion REST - Web UI"}],["$","meta","1",{"name":"description","content":"Modern web interface for Stable Diffusion image generation"}],["$","link","2",{"rel":"icon","href":"/ui/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L7","3",{}]]

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/_not-found/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 12 - 0
webui/_not-found/index.txt


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/demo/__next._full.txt


+ 8 - 0
webui/demo/__next._index.txt

@@ -0,0 +1,8 @@
+1:"$Sreact.fragment"
+2:I[89554,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"ThemeProvider"]
+3:I[91432,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"AuthProvider"]
+4:I[44,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"VersionChecker"]
+5:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+6:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/chunks/355029048170f49e.css","precedence":"next"}],["$","script","script-0",{"src":"/ui/_next/static/chunks/cd8f8302680ec452.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"src":"/ui/config.js"}]}],["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}]}]}]]}]]}],"loading":null,"isPartial":false}

+ 10 - 0
webui/demo/__next._tree.txt

@@ -0,0 +1,10 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
+4:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
+5:"$Sreact.suspense"
+7:I[27201,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+:HL["/ui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
+0:{"buildId":"stable-diffusion-ui","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"demo","paramType":null,"paramKey":"demo","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"head":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isHeadPartial":false,"staleTime":300}
+3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
+6:[["$","title","0",{"children":"Stable Diffusion REST - Web UI"}],["$","meta","1",{"name":"description","content":"Modern web interface for Stable Diffusion image generation"}],["$","link","2",{"rel":"icon","href":"/ui/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L7","3",{}]]

+ 9 - 0
webui/demo/__next.demo.__PAGE__.txt

@@ -0,0 +1,9 @@
+1:"$Sreact.fragment"
+2:I[47257,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ClientPageRoot"]
+3:I[38999,["/ui/_next/static/chunks/cd8f8302680ec452.js","/ui/_next/static/chunks/3b2a94c6033fe723.js","/ui/_next/static/chunks/df74118f27807d51.js"],"default"]
+6:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
+7:"$Sreact.suspense"
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ui/_next/static/chunks/3b2a94c6033fe723.js","async":true}],["$","script","script-1",{"src":"/ui/_next/static/chunks/df74118f27807d51.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
+4:{}
+5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
+8:null

+ 4 - 0
webui/demo/__next.demo.txt

@@ -0,0 +1,4 @@
+1:"$Sreact.fragment"
+2:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+3:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/demo/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/demo/index.txt


BIN
webui/favicon.ico


+ 1 - 0
webui/file.svg

@@ -0,0 +1 @@
+<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>

+ 1 - 0
webui/globe.svg

@@ -0,0 +1 @@
+<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>

Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/img2img/__next._full.txt


+ 8 - 0
webui/img2img/__next._index.txt

@@ -0,0 +1,8 @@
+1:"$Sreact.fragment"
+2:I[89554,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"ThemeProvider"]
+3:I[91432,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"AuthProvider"]
+4:I[44,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"VersionChecker"]
+5:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+6:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/chunks/355029048170f49e.css","precedence":"next"}],["$","script","script-0",{"src":"/ui/_next/static/chunks/cd8f8302680ec452.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"src":"/ui/config.js"}]}],["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}]}]}]]}]]}],"loading":null,"isPartial":false}

+ 10 - 0
webui/img2img/__next._tree.txt

@@ -0,0 +1,10 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
+4:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
+5:"$Sreact.suspense"
+7:I[27201,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+:HL["/ui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
+0:{"buildId":"stable-diffusion-ui","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"img2img","paramType":null,"paramKey":"img2img","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"head":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isHeadPartial":false,"staleTime":300}
+3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
+6:[["$","title","0",{"children":"Stable Diffusion REST - Web UI"}],["$","meta","1",{"name":"description","content":"Modern web interface for Stable Diffusion image generation"}],["$","link","2",{"rel":"icon","href":"/ui/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L7","3",{}]]

+ 9 - 0
webui/img2img/__next.img2img.__PAGE__.txt

@@ -0,0 +1,9 @@
+1:"$Sreact.fragment"
+2:I[47257,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ClientPageRoot"]
+3:I[29478,["/ui/_next/static/chunks/cd8f8302680ec452.js","/ui/_next/static/chunks/df74118f27807d51.js","/ui/_next/static/chunks/cb0e61acc3304a50.js"],"default"]
+6:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
+7:"$Sreact.suspense"
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ui/_next/static/chunks/df74118f27807d51.js","async":true}],["$","script","script-1",{"src":"/ui/_next/static/chunks/cb0e61acc3304a50.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
+4:{}
+5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
+8:null

+ 4 - 0
webui/img2img/__next.img2img.txt

@@ -0,0 +1,4 @@
+1:"$Sreact.fragment"
+2:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+3:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/img2img/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/img2img/index.txt


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/index.txt


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/inpainting/__next._full.txt


+ 8 - 0
webui/inpainting/__next._index.txt

@@ -0,0 +1,8 @@
+1:"$Sreact.fragment"
+2:I[89554,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"ThemeProvider"]
+3:I[91432,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"AuthProvider"]
+4:I[44,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"VersionChecker"]
+5:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+6:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/chunks/355029048170f49e.css","precedence":"next"}],["$","script","script-0",{"src":"/ui/_next/static/chunks/cd8f8302680ec452.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"src":"/ui/config.js"}]}],["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}]}]}]]}]]}],"loading":null,"isPartial":false}

+ 10 - 0
webui/inpainting/__next._tree.txt

@@ -0,0 +1,10 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
+4:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
+5:"$Sreact.suspense"
+7:I[27201,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+:HL["/ui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
+0:{"buildId":"stable-diffusion-ui","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"inpainting","paramType":null,"paramKey":"inpainting","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"head":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isHeadPartial":false,"staleTime":300}
+3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
+6:[["$","title","0",{"children":"Stable Diffusion REST - Web UI"}],["$","meta","1",{"name":"description","content":"Modern web interface for Stable Diffusion image generation"}],["$","link","2",{"rel":"icon","href":"/ui/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L7","3",{}]]

+ 9 - 0
webui/inpainting/__next.inpainting.__PAGE__.txt

@@ -0,0 +1,9 @@
+1:"$Sreact.fragment"
+2:I[47257,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ClientPageRoot"]
+3:I[30131,["/ui/_next/static/chunks/cd8f8302680ec452.js","/ui/_next/static/chunks/9ac0880816f68a97.js"],"default"]
+6:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
+7:"$Sreact.suspense"
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ui/_next/static/chunks/9ac0880816f68a97.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
+4:{}
+5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
+8:null

+ 4 - 0
webui/inpainting/__next.inpainting.txt

@@ -0,0 +1,4 @@
+1:"$Sreact.fragment"
+2:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+3:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/inpainting/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/inpainting/index.txt


+ 1 - 0
webui/next.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>

Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/settings/__next._full.txt


+ 8 - 0
webui/settings/__next._index.txt

@@ -0,0 +1,8 @@
+1:"$Sreact.fragment"
+2:I[89554,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"ThemeProvider"]
+3:I[91432,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"AuthProvider"]
+4:I[44,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"VersionChecker"]
+5:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+6:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/chunks/355029048170f49e.css","precedence":"next"}],["$","script","script-0",{"src":"/ui/_next/static/chunks/cd8f8302680ec452.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"src":"/ui/config.js"}]}],["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}]}]}]]}]]}],"loading":null,"isPartial":false}

+ 10 - 0
webui/settings/__next._tree.txt

@@ -0,0 +1,10 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
+4:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
+5:"$Sreact.suspense"
+7:I[27201,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+:HL["/ui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
+0:{"buildId":"stable-diffusion-ui","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"settings","paramType":null,"paramKey":"settings","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"head":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isHeadPartial":false,"staleTime":300}
+3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
+6:[["$","title","0",{"children":"Stable Diffusion REST - Web UI"}],["$","meta","1",{"name":"description","content":"Modern web interface for Stable Diffusion image generation"}],["$","link","2",{"rel":"icon","href":"/ui/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L7","3",{}]]

+ 9 - 0
webui/settings/__next.settings.__PAGE__.txt

@@ -0,0 +1,9 @@
+1:"$Sreact.fragment"
+2:I[47257,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ClientPageRoot"]
+3:I[32545,["/ui/_next/static/chunks/cd8f8302680ec452.js","/ui/_next/static/chunks/3e223e1504d0dbc8.js","/ui/_next/static/chunks/16b035ace79f7f06.js"],"default"]
+6:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
+7:"$Sreact.suspense"
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ui/_next/static/chunks/3e223e1504d0dbc8.js","async":true}],["$","script","script-1",{"src":"/ui/_next/static/chunks/16b035ace79f7f06.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
+4:{}
+5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
+8:null

+ 4 - 0
webui/settings/__next.settings.txt

@@ -0,0 +1,4 @@
+1:"$Sreact.fragment"
+2:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+3:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/settings/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/settings/index.txt


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/text2img/__next._full.txt


+ 8 - 0
webui/text2img/__next._index.txt

@@ -0,0 +1,8 @@
+1:"$Sreact.fragment"
+2:I[89554,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"ThemeProvider"]
+3:I[91432,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"AuthProvider"]
+4:I[44,["/ui/_next/static/chunks/cd8f8302680ec452.js"],"VersionChecker"]
+5:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+6:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ui/_next/static/chunks/355029048170f49e.css","precedence":"next"}],["$","script","script-0",{"src":"/ui/_next/static/chunks/cd8f8302680ec452.js","async":true}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"src":"/ui/config.js"}]}],["$","body",null,{"className":"inter_b2991b2-module__9mH_6q__variable font-sans antialiased","children":["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":[["$","$L4",null,{}],["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]]}]}]}]]}]]}],"loading":null,"isPartial":false}

+ 10 - 0
webui/text2img/__next._tree.txt

@@ -0,0 +1,10 @@
+1:"$Sreact.fragment"
+2:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"]
+4:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"]
+5:"$Sreact.suspense"
+7:I[27201,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"IconMark"]
+:HL["/ui/_next/static/chunks/355029048170f49e.css","style"]
+:HL["/ui/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
+0:{"buildId":"stable-diffusion-ui","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"text2img","paramType":null,"paramKey":"text2img","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"head":["$","$1","h",{"children":[null,["$","$L2",null,{"children":"$@3"}],["$","div",null,{"hidden":true,"children":["$","$L4",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$@6"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isHeadPartial":false,"staleTime":300}
+3:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
+6:[["$","title","0",{"children":"Stable Diffusion REST - Web UI"}],["$","meta","1",{"name":"description","content":"Modern web interface for Stable Diffusion image generation"}],["$","link","2",{"rel":"icon","href":"/ui/favicon.ico?favicon.0b3bf435.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L7","3",{}]]

+ 9 - 0
webui/text2img/__next.text2img.__PAGE__.txt

@@ -0,0 +1,9 @@
+1:"$Sreact.fragment"
+2:I[47257,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"ClientPageRoot"]
+3:I[91271,["/ui/_next/static/chunks/cd8f8302680ec452.js","/ui/_next/static/chunks/130bd6bb35ac58d9.js","/ui/_next/static/chunks/603cfd5a4c73386a.js"],"default"]
+6:I[97367,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"]
+7:"$Sreact.suspense"
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ui/_next/static/chunks/130bd6bb35ac58d9.js","async":true}],["$","script","script-1",{"src":"/ui/_next/static/chunks/603cfd5a4c73386a.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
+4:{}
+5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
+8:null

+ 4 - 0
webui/text2img/__next.text2img.txt

@@ -0,0 +1,4 @@
+1:"$Sreact.fragment"
+2:I[39756,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+3:I[37457,["/ui/_next/static/chunks/ff1a16fafef87110.js","/ui/_next/static/chunks/247eb132b7f7b574.js"],"default"]
+0:{"buildId":"stable-diffusion-ui","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
webui/text2img/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/text2img/index.txt


Fichier diff supprimé car celui-ci est trop grand
+ 15 - 0
webui/upscaler/__next._full.txt


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff