Git Product home page Git Product logo

auto-sd-paint-ext's Introduction

Hi there ๐Ÿ‘‹

Yes empty README till I decide better content. Rebranding coming soon...

Anyways, here's my stack (the parts that aren't rusty yet):

Daily Drivers: Gentoo (KWin + Bismuth) ObsidianMD laptop

Coding: VSCode VIM Starship.rs

Frontend: Capacitor TypeScript React Vite Yarn Tailwind

Backend: Docker Python Flask Express Socketio Firebase

Number of Unused ESP8266s in room: Expressif Expressif Expressif Expressif Expressif Expressif Expressif

(Free Preset badges from https://github.com/alexandresanlim/Badges4-README.md-Profile)

Email me at: [email protected]. I am currently researching chromium extensions in my free time, in particularly tree-style tab managers. So far, I've been using Tabs Outliner and think it would be the best one if the keybinds weren't paywalled.

Say, where do people get all those pretty Github statistics from?

Profile Summary Languages

Profile Stats Contribution Streak Trophies

auto-sd-paint-ext's People

Contributors

36db avatar arcticfaded avatar aria1th avatar automatic1111 avatar brkirch avatar c43h66n12o12s2 avatar captin411 avatar connum avatar d8ahazard avatar dfaker avatar discus0434 avatar dtlnor avatar eyedeck avatar huntervacui avatar innovaciones avatar interpause avatar jc-array avatar jjisnow avatar krisfail avatar malumadev avatar milly avatar mozoloa avatar nuke777 avatar orionaskatu avatar random-thoughtss avatar sddebz avatar timntorres avatar w-e-w avatar xmodar avatar yfszzx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

auto-sd-paint-ext's Issues

Upscaler / SD Model / Scripts dropdown lists are not sorted alphabetically

Describe the bug
Upscaler / SD Model / Scripts lists are not sorted alphabetically, making it a bit uncomfy to use

To Reproduce
Steps to reproduce the behavior:

  1. Withing Krita
  2. Click on SD model / Upscaler / (Experimental) Scripts drop down lists
  3. List are sorted randomly

Screenshots

Upscale
image

SD Models
image

Scripts*
image

Desktop

  • OS: Windows
  • Commit revision SD webui : 4cb27f704d9a2ebefaae29a5c9091bf99fcbf005 / Auto SD Paint Ext : ffa78f9

Add automatic image scaling to outpainting mk2 to complete functionality

Is your feature request related to a problem? Please describe.
Outpainting mk2 is fully functional, the only downside is that you have to manual scale the image using the "Scale Image to New Size" option under the "Image" tab in Krita for it not to look stretched.

Describe the solution you'd like
I think it would be nice if the plugin could grab the size you are extending by and whether it is width or height and scale the image accordingly

Describe alternatives you've considered
As stated the user can do this manually within the "Images" tab in Krita

Additional context
Perhaps you are already aware of this way, so I am sorry to waste your time if that is the case. I wasn't sure if you had the time to tinker with it. I am sure you will complete this feature when you have the time. Thank you for you hard work!

Next Milestone

Overview

The plan was to finish this milestone by the WD 1.4 release date, 1st December. Due to my current workload, I will probably have to push this back to around 20th December. Oh, and after this milestone, I don't think there should any more major things to implement, so I will just do mostly maintenance.

Tabs

  • Dedicated Outpainting Tab
    • Outpainting Mk 2
    • Sketch & Outpaint
  • Dedicated Upscale Tab
    • Simple Upscale
    • SD Upscale

Configuration

  • Save & load presets
    • Prompt, model used, model config, etc
  • Allow all prompt/negative prompt to be linked.
  • Show all webUI config options dynamically + Search Bar
    • Check if official API for settings work properly, i.e., calls reset callbacks after changing settings that require resets like the model used; Might be useful.

Maintenance

  • Switch to official API

QoL

  • Split all tabs into their own rearrangeable dockers (87c6f39)
  • Show the ETA (0399739)
  • Interrupt button (7631bda)
  • Mechanism to send images to/from webUI
  • Inserting batches into a group layer (e32c9dc)

Documentation

  • Usage videos for each feature
  • New demo video

Not Planned Yet

Not sure where to put these for now:

  • Tab showing requests in queue.

  • Skipping batches.

  • #65

Generated images not being pulled into Krita

Describe the bug
Connection between the Krita plugin and the SD extension appears to work and even generate images, but the layers within Krita are all plain white (the images generated look fine if I go find them in explorer).

To Reproduce
Steps to reproduce the behavior:

  1. Have automatic1111's repository up to date at time of posting (cd5eafaf03a25d2b0e35154666947b9489078af9)
  2. Have auto-sd-paint-ext repository up to date and successfully symlinked (have checked in explorer) (4ef0b4e)
  3. Krita plugin installed and enabled, config .ini files deleted, config reset
  4. Krita up to date (5.1.1), plugin is enabled
  5. Enter a prompt in txt2img, click 'start txt2img'
  6. Image is generated by SD, Krita makes blank white layers

Screenshots
image

  • Screenshot of backend console output
auto-sd-paint-ext:INFO: img size: 512x512, target: 512x512
auto-sd-paint-ext:INFO: output sizes: [426588]
auto-sd-paint-ext:INFO: finished txt2img!
auto-sd-paint-ext:INFO: txt2img:
restore_faces=False face_restorer='None' codeformer_weight=0.5 sd_model='model.ckpt [7460a6fa]' script='None' script_args=[] prompt='blimp' negative_prompt=None seed=-1 seed_enable_extras=False subseed=-1 subseed_strength=0.0 seed_resize_from_h=0 seed_resize_from_w=0 sampler_name='Euler a' steps=20 cfg_scale=7.0 denoising_strength=0.7 batch_count=1 batch_size=1 base_size=512 max_size=768 tiling=False highres_fix=False firstphase_height=512 firstphase_width=512 upscaler_name='None' filter_nsfw=False include_grid=False sample_path='outputs/krita-out' save_samples=False orig_width=512 orig_height=512
auto-sd-paint-ext:INFO: img size: 512x512 -> 512x512, aspect ratio: 1.00 -> 1.00, 0.00% change
100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 20/20 [00:01<00:00, 14.02it/s]
Total progress: 20it [00:01, 15.01it/s]
auto-sd-paint-ext:INFO: img size: 512x512, target: 512x512
auto-sd-paint-ext:INFO: output sizes: [416220]
auto-sd-paint-ext:INFO: finished txt2img!

Desktop (please complete the following information):

  • OS: Windows 10 Professional
  • Commit revision: see above

Additional context
Frustratingly close to working correctly!

Inpainting offset by a pixel under specific situations

Inserted layer:

image

After manually moving layer:

image

Might be a byproduct of inproper image resize? Seems to be a 1 pixel offset, so could be due to rounding error when the selection area is small. Didn't occur for larger selection area.

Inpainting has a noticeable border

Describe the bug
Inpainting has a noticeable border even with blur. It has never really bothered me, but is bothering enough people so I have to fix it.

Maybe try and fix #3 while you are at it.

Screenshots
Insert later under various test scenarios.

Things to Test

  • with color correction on and off
    • check if color correction actually turns on/off
    • try doing color correction at different steps/with reference to different areas
  • Use alpha to mask instead
    • Allow user to exactly control blending; insert as tip to turn off mask blur whilst doing so
    • Current approach of using luminance, then converting to bitmask if its brighter than 1, is stupid

Additional Context

Higres fix

Describe the bug

Hi, awesome plugin I love it :) great work, I was wondering if there is a chance to update/improve.
It seems that highers fix works differently from AUTO111

Quality is poor compared to AUTO, I notice that Krita highres is 3 time faster โ€“ maybe this is issue โ€“ I am not a coder

Quality in terms of sharpness and detail :

Screenshots
Krita
City_Base1

AUTO
00013-2639058253

extention not loading on the webui

Describe the bug
extention tab doesnt show up on the webui and krita plugin doesnt recognize there being a server

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Screenshots
If applicable, add screenshots to help explain your problem.

  • Screenshot of backend console output
  • Status bar message when error occured
  • All contents of Krita error popup (if any)
    krita just says no connection when i try to run it or it cant reach back end
    logs
    [auto-sd-paint-ext] Attempting auto-update...
    [auto-sd-paint-ext] Fetch upstream.
    [auto-sd-paint-ext] Pull upstream.

Closing server running on port: 7860
Reloading extensions
Reloading custom scripts
Error loading script: main.py
Traceback (most recent call last):
File "/home/user/stable-diffusion-webui/modules/scripts.py", line 164, in load_scripts
module = script_loading.load_module(scriptfile.path)
File "/home/user/stable-diffusion-webui/modules/script_loading.py", line 13, in load_module
exec(compiled, module.dict)
File "/home/user/stable-diffusion-webui/extensions/auto-sd-paint-ext/scripts/main.py", line 4, in
import backend
File "/home/user/stable-diffusion-webui/extensions/auto-sd-paint-ext/backend/init.py", line 1, in
from .app import router
File "/home/user/stable-diffusion-webui/extensions/auto-sd-paint-ext/backend/app.py", line 11, in
from modules.call_queue import wrap_gradio_gpu_call
ModuleNotFoundError: No module named 'modules.call_queue'

Reloading modules: modules.ui
Refreshing Model List
Restarting Gradio
Running on local URL: http://127.0.0.1:7860

To create a public link, set share=True in launch().

Desktop (please complete the following information):

im on arch linux

  • OS: [e.g. Windows, Linux]
  • Commit revision [looks like this: e684845; can be seen when launching webui.bat, or obtained manually by running git rev-parse HEAD]

Additional context
Add any other context about the problem here.

Slower than previous version for some reasons?

Describe the bug
Updated to last version, it stay freezed for like 10-15 seconds before start doing something on each run.
Previous version of this plugin was working perfectly.
I reinstalled everything to be sure i did everything correctly..

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows

Additional context
Add any other context about the problem here.

Support for Krita Android

Hi, this is part question part request. Does this work on Krita Android? If not would you consider supporting it? Thanks :)

Repeating error on Auto1111 console after opening Krita (windows)

There is a repeating error, pasted below, everytime I open Krita after installing sd plugin

To Reproduce
Steps to reproduce the behavior:
Install https://github.com/Interpause/auto-sd-paint-ext in auto1111 extension manager
Install Krita
Follow steps from auto-sd-paint-ext Guide/Panel in auto1111 UI to add sd plugin to krita

Screenshots

ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 404, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\fastapi\applications.py", line 269, in __call__
    await super().__call__(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\applications.py", line 124, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
    raise exc
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in __call__
    await self.app(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\cors.py", line 84, in __call__
    await self.app(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\exceptions.py", line 93, in __call__
    raise exc
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\exceptions.py", line 82, in __call__
    await self.app(scope, receive, sender)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
    raise e
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\routing.py", line 670, in __call__
    await route.handle(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\routing.py", line 266, in handle
    await self.app(scope, receive, send)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\starlette\routing.py", line 65, in app
    response = await func(request)
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\fastapi\routing.py", line 231, in app
    raw_response = await run_endpoint_function(
  File "C:\sd\auto1111\stable-diffusion-webui\venv\lib\site-packages\fastapi\routing.py", line 160, in run_endpoint_function
    return await dependant.call(**values)
  File "C:\sd\auto1111\stable-diffusion-webui\extensions\auto-sd-paint-ext\backend\app.py", line 73, in get_state
    "scripts_txt2img": get_scripts_metadata(False),
  File "C:\sd\auto1111\stable-diffusion-webui\extensions\auto-sd-paint-ext\backend\script_hack.py", line 99, in get_scripts_metadata
    metadata[name] = inspect_ui(script, is_img2img)
  File "C:\sd\auto1111\stable-diffusion-webui\extensions\auto-sd-paint-ext\backend\script_hack.py", line 23, in inspect_ui
    for elem in elems:
TypeError: 'NoneType' object is not iterable

image

Desktop (please complete the following information):

  • OS: Windows 11
  • Commit revision 172c4bc09f0866e7dd114068ebe0f9abfe79ef33

Additional context
The sd docker appears, but with "retrieval failed" everywhere.
The error message in auto1111 repeats every second or so, even if the docker is not visible/selected. It stops when I close Krita.

installation just doesnt work, invalid backend

Describe the bug
installed step by step, default all in plugin, installed api added listen and alll...
when i try to generate im getting this

`48
auto-sd-paint-ext:INFO: Script selected: F:\sd\scripts\xy_grid.py, Args Range: [5:12]
auto-sd-paint-ext:INFO: Script selected: F:\sd\scripts\xy_grid.py, Args Range: [5:12]
auto-sd-paint-ext:INFO: Script args:
[3, 0, 0, 0, 0, 1, '', 0, '', True, False, False]
auto-sd-paint-ext:INFO: Script args:
[3, 0, 0, 0, 0, 1, '', 0, '', True, False, False]
auto-sd-paint-ext:INFO: img size: 279x248 -> 576x512, aspect ratio: 1.12 -> 1.12, 0.00% change
auto-sd-paint-ext:INFO: img size: 279x248 -> 576x512, aspect ratio: 1.12 -> 1.12, 0.00% change
X/Y plot will create 0 images on a 0x1 grid. (Total steps to process: 0)
Unexpected error: draw_xy_grid failed to return even a single processed image
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "F:\sd\venv\lib\site-packages\anyio\streams\memory.py", line 94, in receive
return self.receive_nowait()
File "F:\sd\venv\lib\site-packages\anyio\streams\memory.py", line 89, in receive_nowait
raise WouldBlock
anyio.WouldBlock

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 77, in call_next
message = await recv_stream.receive()
File "F:\sd\venv\lib\site-packages\anyio\streams\memory.py", line 114, in receive
raise EndOfStream
anyio.EndOfStream

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "F:\sd\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 407, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "F:\sd\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 78, in call
return await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\fastapi\applications.py", line 270, in call
await super().call(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\applications.py", line 124, in call
await self.middleware_stack(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\middleware\errors.py", line 184, in call
raise exc
File "F:\sd\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in call
await self.app(scope, receive, _send)
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 106, in call
response = await self.dispatch_func(request, call_next)
File "F:\sd\extensions\auto-sd-paint-ext\backend\app.py", line 344, in app_encryption_middleware
res: StreamingResponse = await call_next(req)
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 80, in call_next
raise app_exc
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 69, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 106, in call
response = await self.dispatch_func(request, call_next)
File "F:\sd\extensions\auto-sd-paint-ext\backend\app.py", line 344, in app_encryption_middleware
res: StreamingResponse = await call_next(req)
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 80, in call_next
raise app_exc
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 69, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "F:\sd\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in call
await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in call
raise exc
File "F:\sd\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in call
await self.app(scope, receive, sender)
File "F:\sd\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in call
raise e
File "F:\sd\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\routing.py", line 706, in call
await route.handle(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
File "F:\sd\venv\lib\site-packages\fastapi\routing.py", line 235, in app
raw_response = await run_endpoint_function(
File "F:\sd\venv\lib\site-packages\fastapi\routing.py", line 161, in run_endpoint_function
return await dependant.call(**values)
File "F:\sd\extensions\auto-sd-paint-ext\backend\app.py", line 107, in f_txt2img
images, info, html = modules.txt2img.txt2img(
File "F:\sd\modules\txt2img.py", line 46, in txt2img
processed = modules.scripts.scripts_txt2img.run(p, *args)
File "F:\sd\modules\scripts.py", line 317, in run
processed = script.run(p, *script_args)
File "F:\sd\scripts\xy_grid.py", line 374, in run
processed = draw_xy_grid(
File "F:\sd\scripts\xy_grid.py", line 216, in draw_xy_grid
return Processed()
TypeError: Processed.init() missing 2 required positional arguments: 'p' and 'images_list'

`

Installation instructions for remote setup

Is your feature request related to a problem? Please describe.
I would like to use the SD+Krita in a remote setup, where SD is running on a different machine than Krita and they communicate through the (local) network. The (linux) installation instructions mention that one needs to create a simlink between a Krita directory and the plugin code, but this is not possible across the network.

Describe the solution you'd like
Add instructions for setting up the plugin in a remote setting. Is copying the files enough or does one need to do something more? I presume one needs to change the IP address in default.py afterwards.

Additional context
I assume that running in a remote setting is possible as the instructions mention to use --listen in such case.

Cancel Button

Is your feature request related to a problem? Please describe.
Yes, I am over anxious and hit START before I check which layer is selected at least 25% of the time. It wastes energy (4090 nvidia) and time.

Describe the solution you'd like
Add a cancel button just as the WebUI

Describe alternatives you've considered
I could stop being excited about making beautiful art and sit down? :)

Additional context
I am a programmer, and can look into this myself if you are open to a pull request.

Network error: invalid JSON response

Describe the bug
After updating webui from 9e78d2c to 4b3c5bc, I get a Network error: invalid JSON response when attempting to produce an image with the plugin.

On another note, is there any log saying what the JSON response was, perhaps?

Clearing the address field nukes Krita

Describe the bug
Clearing the config address field crashes Krita and permanently prevents restarting it.

To Reproduce
Steps to reproduce the behavior:

  1. Go to config
  2. Select the address
  3. press backspace
  4. Krita freezes. It won't start up again until the plugin links are deleted from the pykrita folder.
  5. (bonus) If you reinstall the plugin, krita will again fail to start. Hilarious.

As you can imagine, nuking your Krita install is bad.
My webui was not started at the time.

Desktop (please complete the following information):

  • OS: Windows 11
  • Commit revision 6ceff2a

So um... what do I do to restore the address field to normal without being able to start krita?
I've tried deleting %localappdata%/kritarc, but same thing happens.
Where is the address config stored on disk so I can delete it?

Installation Through Extensions Tab may not work

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Screenshots
If applicable, add screenshots to help explain your problem.

  • Screenshot of backend console output
  • Status bar message when error occured
  • All contents of Krita error popup (if any)

Desktop (please complete the following information):

  • OS: [e.g. Windows, Linux]
  • Commit revision [looks like this: e684845; can be seen when launching webui.bat, or obtained manually by running git rev-parse HEAD]

Additional context
Add any other context about the problem here.

New Layer from Visible is empty white space

Describe the bug
I have followed your installation and Krita can see that I have SD and can see what "checkpoint" is open. Yet New Layer from Visible just loads a white empty page. No error messages anywhere. I have even added --listen to the command args though thats probably not needed.

Desktop (please complete the following information):

  • OS: Windows
  • Commit revision: 98947d173e3f1667eba29c904f681047dea9de90

Other info
I have tried using the 1.5 inpainting checkpoint and others but none make anything appear in the visble layer.

Possible to use running on a remote Runpod instance?

I followed the instructions in the here to try to get the plugin working based on a remote instance of the AUTOMATIC1111 WebUI running on Runpod. I actually successfully use the plugin on a local installation, so the plugin works fine on Krita, but connecting to the remote server doesn't seem to work. I have the WebUI starting up with both --api and --listen, and I put in the public URL for accessing the remote WebUI interface into the "Backend URL" section of the Krita plugin, it says "Network error: Forbidden" under "Status" in the Krita plugin directly above the "Backend URL" field.

Am I doing something wrong in entering that URL, or perhaps there are more steps I have to take to expose the remotely running WebUI to my locally running Krita plugin? The remote install instructions say to run ipconfig on the remote machine to get its IP address, but on the Runpod instance, the IP that's returned looks like the local network IP, which is why I'm entering the URL.

The AUTOMATIC WebUI git hash is: 4b3c5bc24bffdf429c463a465763b3077fe55eb8
The auto-sd-paint-ext git hash is: 183cb96

extention wont load on the webui

    i think this might be the issue

Launching Web UI with arguments: --api --medvram --opt-split-attention --no-half
Error loading script: main.py
Traceback (most recent call last):
File "/home/xirishpvp/stable-diffusion-webui/modules/scripts.py", line 164, in load_scripts
module = script_loading.load_module(scriptfile.path)
File "/home/xirishpvp/stable-diffusion-webui/modules/script_loading.py", line 13, in load_module
exec(compiled, module.dict)
File "/home/xirishpvp/stable-diffusion-webui/extensions/auto-sd-paint-ext/scripts/main.py", line 4, in
import backend
File "/home/xirishpvp/stable-diffusion-webui/extensions/auto-sd-paint-ext/backend/init.py", line 1, in
from .app import router
File "/home/xirishpvp/stable-diffusion-webui/extensions/auto-sd-paint-ext/backend/app.py", line 11, in
from modules.call_queue import wrap_gradio_gpu_call
ModuleNotFoundError: No module named 'modules.call_queue'

seems like a module isnt being called properly

sorry if this is incorect commenting new to github/commenting

Image2Image generation doesn't seem to work

Describe the bug
When running img2img from within Krita 5.1.3 on Windows Pro no image is being generated and errors are displayed in the SD Web UI console.

To Reproduce
Steps to reproduce the behavior:

  1. generate an image with the txt2img option (fine, it works)
  2. select the tab img2img, input a prompt and click on Start img2img
  3. no image is generated and a series of error messages are displayed in the SD Web UI console

Screenshots
If applicable, add screenshots to help explain your problem.

  • Screenshot of backend console output (See below)
  • Status bar of the plug-in inside Krita doesn't show any errors
  • There are no error messages in the Krita console o register

Desktop (please complete the following information):

  • OS: Windows Pro 64bit
  • Commit hash: cefb5d6d7dbb35e68467bb7965f7139abfaf290d

Additional context
Here follow the messages on the SD Web UI console starting from the step 1 above described:

Total progress: 24it [00:16, 1.49it/s]
auto-sd-paint-ext:INFO: img size: 512x512, target: 512x512
auto-sd-paint-ext:INFO: img size: 512x512, target: 512x512
auto-sd-paint-ext:INFO: saved: ['C:\stable-diffusion-webui\outputs\krita-out\1670102255_0.png']
auto-sd-paint-ext:INFO: saved: ['C:\stable-diffusion-webui\outputs\krita-out\1670102255_0.png']
auto-sd-paint-ext:INFO: output sizes: [702136]
auto-sd-paint-ext:INFO: output sizes: [702136]
auto-sd-paint-ext:INFO: finished txt2img!
auto-sd-paint-ext:INFO: finished txt2img!
auto-sd-paint-ext:INFO: img2img:
{'restore_faces': False, 'face_restorer': 'None', 'codeformer_weight': 0.5, 'inpainting_fill': 1, 'inpaint_full_res': False, 'inpaint_full_res_padding': 0, 'mask_blur': 0, 'invert_mask': False, 'inpaint_mask_weight': 1.0, 'sd_model': 'model.ckpt [7460a6fa]', 'script': 'None', 'script_args': [], 'prompt': 'an illustration of a menacing T-rex dynosaur with a tropical forest in the backgroud', 'negative_prompt': None, 'seed': -1, 'seed_enable_extras': False, 'subseed': -1, 'subseed_strength': 0.0, 'seed_resize_from_h': 0, 'seed_resize_from_w': 0, 'sampler_name': 'DDIM', 'steps': 40, 'cfg_scale': 7.0, 'denoising_strength': 0.8, 'batch_count': 1, 'batch_size': 1, 'base_size': 704, 'max_size': 512, 'tiling': False, 'highres_fix': False, 'firstphase_height': 512, 'firstphase_width': 512, 'upscaler_name': 'None', 'filter_nsfw': False, 'include_grid': False, 'sample_path': 'outputs/krita-out', 'save_samples': True, 'mode': 0, 'resize_mode': 1, 'color_correct': False, 'do_exact_steps': True}
auto-sd-paint-ext:INFO: img2img:
{'restore_faces': False, 'face_restorer': 'None', 'codeformer_weight': 0.5, 'inpainting_fill': 1, 'inpaint_full_res': False, 'inpaint_full_res_padding': 0, 'mask_blur': 0, 'invert_mask': False, 'inpaint_mask_weight': 1.0, 'sd_model': 'model.ckpt [7460a6fa]', 'script': 'None', 'script_args': [], 'prompt': 'an illustration of a menacing T-rex dynosaur with a tropical forest in the backgroud', 'negative_prompt': None, 'seed': -1, 'seed_enable_extras': False, 'subseed': -1, 'subseed_strength': 0.0, 'seed_resize_from_h': 0, 'seed_resize_from_w': 0, 'sampler_name': 'DDIM', 'steps': 40, 'cfg_scale': 7.0, 'denoising_strength': 0.8, 'batch_count': 1, 'batch_size': 1, 'base_size': 704, 'max_size': 512, 'tiling': False, 'highres_fix': False, 'firstphase_height': 512, 'firstphase_width': 512, 'upscaler_name': 'None', 'filter_nsfw': False, 'include_grid': False, 'sample_path': 'outputs/krita-out', 'save_samples': True, 'mode': 0, 'resize_mode': 1, 'color_correct': False, 'do_exact_steps': True}
auto-sd-paint-ext:INFO: img size: 512x512 -> 512x512, aspect ratio: 1.00 -> 1.00, 0.00% change
auto-sd-paint-ext:INFO: img size: 512x512 -> 512x512, aspect ratio: 1.00 -> 1.00, 0.00% change
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\stable-diffusion-webui\venv\lib\site-packages\anyio\streams\memory.py", line 94, in receive
return self.receive_nowait()
File "C:\stable-diffusion-webui\venv\lib\site-packages\anyio\streams\memory.py", line 89, in receive_nowait
raise WouldBlock
anyio.WouldBlock

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 77, in call_next
message = await recv_stream.receive()
File "C:\stable-diffusion-webui\venv\lib\site-packages\anyio\streams\memory.py", line 114, in receive
raise EndOfStream
anyio.EndOfStream

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\stable-diffusion-webui\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 407, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "C:\stable-diffusion-webui\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 78, in call
return await self.app(scope, receive, send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\fastapi\applications.py", line 270, in call
await super().call(scope, receive, send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\applications.py", line 124, in call
await self.middleware_stack(scope, receive, send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 184, in call
raise exc
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in call
await self.app(scope, receive, _send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 106, in call
response = await self.dispatch_func(request, call_next)
File "C:\stable-diffusion-webui\extensions\auto-sd-paint-ext\backend\app.py", line 344, in app_encryption_middleware
res: StreamingResponse = await call_next(req)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 80, in call_next
raise app_exc
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 69, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 106, in call
response = await self.dispatch_func(request, call_next)
File "C:\stable-diffusion-webui\extensions\auto-sd-paint-ext\backend\app.py", line 344, in app_encryption_middleware
res: StreamingResponse = await call_next(req)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 80, in call_next
raise app_exc
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 69, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in call
await self.app(scope, receive, send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in call
raise exc
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in call
await self.app(scope, receive, sender)
File "C:\stable-diffusion-webui\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in call
raise e
File "C:\stable-diffusion-webui\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\routing.py", line 706, in call
await route.handle(scope, receive, send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "C:\stable-diffusion-webui\venv\lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
File "C:\stable-diffusion-webui\venv\lib\site-packages\fastapi\routing.py", line 235, in app
raw_response = await run_endpoint_function(
File "C:\stable-diffusion-webui\venv\lib\site-packages\fastapi\routing.py", line 161, in run_endpoint_function
return await dependant.call(**values)
File "C:\stable-diffusion-webui\extensions\auto-sd-paint-ext\backend\app.py", line 204, in f_img2img
images, info, html = modules.img2img.img2img(
TypeError: img2img() missing 1 required positional argument: 'img2img_batch_output_dir'

Followed instructions but I can't see the plugin listed?

I installed this using the Extensions tab from automatic's gradio webui.
I then refreshed the UI, the auto-sd-paint tab showed up
I followed the instructions on how to setup the symlink, right now if I redo it again, it would say
Cannot create a file when that file already exists.

I restart Krita then go to plugins. I don't see the Stable Diffusion Plugin listed.

I restarted Stable Diffusion, changed the commandline arg thing, added both --listen and --api because both was mentioned, not sure which one is the more updated one. I added both to webui-user.bat and webui-user.sh

I've now restarted both and still can't see the plugin listed.

some errors that popped up in the SD command prompt

ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\anyio\streams\memory.py", line 94, in receive
    return self.receive_nowait()
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\anyio\streams\memory.py", line 89, in receive_nowait
    raise WouldBlock
anyio.WouldBlock

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 404, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\fastapi\applications.py", line 270, in __call__
    await super().__call__(scope, receive, send)
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\starlette\applications.py", line 124, in __call__
    await self.middleware_stack(scope, receive, send)
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
    raise exc
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 72, in __call__
    response = await self.dispatch_func(request, call_next)
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\extensions\auto-sd-paint-ext\backend\app.py", line 344, in app_encryption_middleware
    res: StreamingResponse = await call_next(req)
  File "F:\stable-diffusion\git-automatic1111\stable-diffusion-webui\venv\lib\site-packages\starlette\middleware\base.py", line 47, in call_next
    raise RuntimeError("No response returned.")
RuntimeError: No response returned.

and that error pretty much repeats.

Window 10
Krita 5.2.0 prealpha git 31ed09f
SD Commit hash: cefb5d6d7dbb35e68467bb7965f7139abfaf290d

the folder is there though, not sure why it's not detecting the plugin from it...

explorer_ToWdj8moIc.mp4

Some improvements that would make things easier

Utility Buttons:

Some buttons (honestly can just be hotkeys for pros but not everyone is as experienced in Krita) that does most of the common things and I think should be visible on all the panels, much like the top section where Face Restorer and Upscaler are always visible regardless of what tab you're on.

Blur Layer- for doing the gaussian blur for Masking for Inpainting.
Select>Feather Selection - for doing selections of img2img but you don't want the edges to have visible seams. I feel like the size of the blur should depend on the current canvas size. When you're doing stuff in 512 x 512 of course you just want a smaller blur size but when you upscale that and you're now above 1k pixels, the size of the blur needs to be bigger as well.

Rescale Image presets - Add a x4, x2, x0.5, x0.25, (+nearest neighbor option, maybe for pixel art?)
btw in the outdated video you made, there's an option for rescaling into percentage, so you don't need to do any math.

krita_TGdfwFpD8E.mp4

Layer>Transform>Offset Layer - really useful for creating tileable stuff. The usual problem with tiles is when you upscale, you also introduce seams, this honestly should just be an Automatic1111 script rather than over here ๐Ÿค” I'll try to make a feature request there too. Offset Layer will make the edges be at the center of the canvas so the upscaler can do a proper upscale of those sections, then you can just blend the two together or inpaint to remove the seams.

Outpainting

Outpainting feels wonky? Haven't really understood why, but I understand it's also hard to predict what the user wants with outpainting. I feel like the selection part is being used in a way, at least for me personally, that doesn't make sense.

For inpainting, it's used as "hey SD, look over here, disregard everything else on the canvas" and it's the same here in outpainting, but the problem then is SD also resizes the outputs into the same selection. So you get non-uniform scaling from the outpainting result. I feel like there should be either a checkbox or this "resize into selection" function should be turned off by default when using Outpainting. But the problem then is the user might not be able to see what was generated, and need to move the resulting images around if it ever clips the actual canvas borders.

Perhaps it opens the outpainting results in a new document? Or changes the canvas size to accommodate for any possible canvas clipping? Not entirely sure, so let me know your thoughts on that.

syntax is incorrect when foloowing in gradio install directions

Describe the bug
when trying to comeplte the setup in gradio in the command prompt step (opened as admin) when copy pasting it into the prompt i get the following error - syntax is incorrect for the 2nd and 3r lines pasted.

cd C:\Users***\AppData\Roaming\krita\pykrita - WORKS FINE
mklink /j krita_diff C:\AUTOMATIC stable-diffusion-webui\extensions\auto-sd-paint-ext-main\frontends\krita\krita_diff - SYNTAX IS INCORRECT
mklink krita_diff.desktop C:\AUTOMATIC stable-diffusion-webui\extensions\auto-sd-paint-ext-main\frontends\krita\krita_diff.desktop - SYNTAX IS INCORRECT

Desktop (please complete the following information):

  • OS: win 10
  • Commit revision [looks like this: cd5eafaf03a25d2b0e35154666947b9489078af9

Additional context
Add any other context about the problem here.

when inpainting is used the active layer is hidden and a white image seems to be submitted

When I try and use inpainting the active layer is hidden, and then it seems(?) a white image is submitted to the Stable Diffusion GUI.

To Reproduce
Steps to reproduce the behavior:

  1. Inpaint tab
  2. Active layer
  3. Click Start Inpaint button
  4. Active layer is hidden

Screenshots
image
image
with background turned back on:
image
what should have been submitted
image

image

Desktop (please complete the following information):

  • OS: Windows 10
  • Commit revision: 6ceff2a
  • Python venv version 3.10.8

errors out even tho it detects ckpt files and all in webui...

`

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "F:\sd\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 407, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "F:\sd\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 78, in call
return await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\fastapi\applications.py", line 270, in call
await super().call(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\applications.py", line 124, in call
await self.middleware_stack(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\middleware\errors.py", line 184, in call
raise exc
File "F:\sd\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in call
await self.app(scope, receive, _send)
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 72, in call
response = await self.dispatch_func(request, call_next)
File "F:\sd\extensions\auto-sd-paint-ext\backend\app.py", line 350, in app_encryption_middleware
res: StreamingResponse = await call_next(req)
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 46, in call_next
raise app_exc
File "F:\sd\venv\lib\site-packages\starlette\middleware\base.py", line 36, in coro
await self.app(scope, request.receive, send_stream.send)
File "F:\sd\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in call
await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\middleware\exceptions.py", line 75, in call
raise exc
File "F:\sd\venv\lib\site-packages\starlette\middleware\exceptions.py", line 64, in call
await self.app(scope, receive, sender)
File "F:\sd\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in call
raise e
File "F:\sd\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\routing.py", line 680, in call
await route.handle(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\routing.py", line 275, in handle
await self.app(scope, receive, send)
File "F:\sd\venv\lib\site-packages\starlette\routing.py", line 65, in app
response = await func(request)
File "F:\sd\venv\lib\site-packages\fastapi\routing.py", line 231, in app
raw_response = await run_endpoint_function(
File "F:\sd\venv\lib\site-packages\fastapi\routing.py", line 160, in run_endpoint_function
return await dependant.call(**values)
File "F:\sd\extensions\auto-sd-paint-ext\backend\app.py", line 107, in f_txt2img
output_images, info, html = modules.txt2img.txt2img(
File "F:\sd\modules\txt2img.py", line 45, in txt2img
processed = modules.scripts.scripts_txt2img.run(p, *args)
File "F:\sd\modules\scripts.py", line 296, in run
processed = script.run(p, *script_args)
File "F:\sd\scripts\xy_grid.py", line 384, in run
processed = draw_xy_grid(
File "F:\sd\scripts\xy_grid.py", line 226, in draw_xy_grid
return Processed()
TypeError: Processed.init() missing 2 required positional arguments: 'p' and 'images_list'`

colab

there are many great colabs
I tried some and managed to install the extensions correctly however I struggled with enabling api as I'm not a programmer

Please consider adding simple colab
thanks

img2img results sometimes stretched depending on image/selection dimensions

Describe the bug
Img2img in this and the original plugin is pretty smart and mostly prevents stretching at varying selection sizes
(or entire images when not using selections)

1% aspect ratio changes between the selection and the result image is workable, feathered selections get around that issue beautifully
But the change % does reach crazy numbers sometimes

When I was making the video to report this bug I hit the highest aspect ratio change I've ever seen - pretty lucky.

for reference, this was the message in the terminal when I did img2img on a selection:
img size: 581x218 -> 512x256, aspect ratio: 2.67 -> 2.00, -24.96% change
*this -24.96% aspect ratio change also happens without using selections if the image was that size

To Reproduce

  1. Create a non-square selection on an image
  2. press img2img
  3. look at terminal to see if the aspect ratio changed
  4. if the aspect ratio changed, the result from the img2img should be slightly stretched compared to the source image
    Depending on your luck you might not even see this issue, which is why I've included an exact selection/image size that consistently shows this issue (581x218)

Screenshots
Video of reproducing the behavior, with subtitles and stable diffusion terminal visible
base size used: 1280 (changing this value later to 512 didn't affect the stretch % at all)
max size used: 512

Desktop (please complete the following information):

  • OS: Windows

Additional context
This issue was present even in the original plugin, which is how I learned to mostly live with it using feathered selections
(or square selections if the portion I'm working on is important)
But no amount of feathering will save images stretched more than 5%

Why the indefinite updating?

Final edit: Everything's good, this was a misunderstanding on my end.

After following all of the steps and restarting the webui-user.bat file, the automatic update goes on for ages, consuming internet with no end.

What is downloading? Where is it downloading to? And what for?

There really needs to be some more transparency as Windows already makes such things difficult - and the odd "server-108-158-61-54.bom78.r.cloudfront.net" source of the download stream further adds suspicion to it.

Edit: I don't intend to make much of a drama about it, but would still like to make a point that it would be really appreciated to have more (transparency) than just silence after "[auto-sd-paint-ext] Pull upstream." As I also don't have a very fast internet connection, so an hour of waiting (approx +5GB downloaded) becomes rather concerning, for an extension.

2nd Edit: After two hours and about 7GB downloaded, I've decided to move install.py out of the folder. Stuff works alright and I will leave it that way until this makes more sense to me.

AttributeError: 'Selection' object has no attribute 'duplicate'

Describe the bug
Whenever I click any of the "Start" buttons with a selection made, I just get this error.

To Reproduce
Steps to reproduce the behavior:

  1. See above

Traceback

Traceback (most recent call last):
  File "/home/username/.local/share/krita/pykrita/krita_diff/pages/img2img.py", line 29, in <lambda>
    self.btn.released.connect(lambda: script.action_img2img())
  File "/home/username/.local/share/krita/pykrita/krita_diff/script.py", line 279, in action_img2img
    self.apply_img2img(mode=0)
  File "/home/username/.local/share/krita/pykrita/krita_diff/script.py", line 181, in apply_img2img
    mask_trigger = self.transparency_mask_inserter()
  File "/home/username/.local/share/krita/pykrita/krita_diff/script.py", line 244, in transparency_mask_inserter
    orig_selection = self.selection.duplicate() if self.selection else None
AttributeError: 'Selection' object has no attribute 'duplicate'

Desktop (please complete the following information):

  • OS: Linux
  • Commit revision: 55bfe13d43e03bee332ffa06a32c0d0c39f8cd1a

Additional context
Was already getting that error before the move to the extension version

Exception in ASGI application

Describe the bug
Whenever trying to use any function of the plugin I get the following error

ERROR: Exception in ASGI application
Traceback (most recent call last):
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\anyio\streams\memory.py", line 94, in receive
return self.receive_nowait()
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\anyio\streams\memory.py", line 89, in receive_nowait
raise WouldBlock
anyio.WouldBlock

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\base.py", line 77, in call_next
message = await recv_stream.receive()
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\anyio\streams\memory.py", line 114, in receive
raise EndOfStream
anyio.EndOfStream

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 407, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 78, in call
return await self.app(scope, receive, send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\fastapi\applications.py", line 270, in call
await super().call(scope, receive, send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\applications.py", line 124, in call
await self.middleware_stack(scope, receive, send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\errors.py", line 184, in call
raise exc
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in call
await self.app(scope, receive, _send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\base.py", line 106, in call
response = await self.dispatch_func(request, call_next)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\extensions\auto-sd-paint-ext\backend\app.py", line 358, in app_encryption_middleware
res: StreamingResponse = await call_next(req)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\base.py", line 80, in call_next
raise app_exc
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\base.py", line 69, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in call
await self.app(scope, receive, send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in call
raise exc
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in call
await self.app(scope, receive, sender)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in call
raise e
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\routing.py", line 706, in call
await route.handle(scope, receive, send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\fastapi\routing.py", line 235, in app
raw_response = await run_endpoint_function(
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\fastapi\routing.py", line 163, in run_endpoint_function
return await run_in_threadpool(dependant.call, **values)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\starlette\concurrency.py", line 41, in run_in_threadpool
return await anyio.to_thread.run_sync(func, *args)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\anyio\to_thread.py", line 31, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\anyio_backends_asyncio.py", line 937, in run_sync_in_worker_thread
return await future
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\venv\lib\site-packages\anyio_backends_asyncio.py", line 867, in run
result = context.run(func, *args)
File "C:\Users\josep\Desktop\stable-diffusion-webui-master\extensions\auto-sd-paint-ext\backend\app.py", line 252, in f_img2img
if len(images) < 1:
TypeError: object of type 'NoneType' has no len()

I may just be being dumb but any way for me to fix this?

txt2img works, img2img and inpaint gives Index error: list out of range

Describe the bug
Using txt2img works just fine
Trying to use img2img or inpaint does not, and gives an Index error: list out of range message on the console

To Reproduce
Steps to reproduce the behavior:

  1. open any image, or create a new image
  2. click img2img
  3. error message appears

Screenshots
image

video here: https://youtu.be/Nz7_ZmkXM0E

Desktop (please complete the following information):

  • OS: Windows

Additional context
Started happening some time between today and Dec 3
I have tried completely uninstalling Krita and this extension, img2img and inpaint still didn't work after reinstallation
I've tried "Restore Defaults" under the Config tab, img2img and inpaint still doesn't work

Status: Network error: Not Found

I had enabled a public link on the webUI so a friend could try it, now, even after disabling the public link configs, krita plugin can't find my webui server

Steps to reproduce the behavior:

  1. add --listen to the webui-user.sh
  2. change the line in webui.py to "share=true"
  3. Utilize the public link
  4. revert changes
  5. See error

as seen here the server is running with all changes reverted, but the plugin does not connect
https://i.imgur.com/KlXCtuP.png

Desktop (please complete the following information):

  • OS: Linux Endeavour OS
  • Commit hash: 98947d173e3f1667eba29c904f681047dea9de90

Not all images from a batch are added as layers

Describe the bug
To me it seems that if the batch size is more than 1, the first image of the batch doesn't get added as a layer. I've tested with batch sizes of 6 and 7.

Desktop (please complete the following information):

  • OS: Linux
  • Commit revision 828438b4a190759807f9054932cae3a8b880ddf1

Starting krita with this plugin enabled causes webui to stop responding

Describe the bug
webui functions normally, but as soon as Krita is started with this plugin enabled, the plugin fails to communicate with the webui and the webui itself stops responding to any requests (e.g. in the browser). There are no errors shown in the webui or krita console output. After closing Krita, the webui starts responding again after several minutes.

Desktop

  • OS: Arch Linux
  • Commit revision: 98947d173e3f1667eba29c904f681047dea9de90

Additional context
This happens with with both the Arch krita package as well as the krita-appimage AUR package. This is configured as a "remote" setup, with the remote machine being on the LAN. No encryption key has been used.

As an aside, the Configure all settings in webUI opens http://127.0.0.1:7860, regardless of the backend URL.

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Hello, when I launch Krita after performing the installation on both SD and Krita I get the following error. It prevents the plugin from functioning; the plugin does not appear in the UI.

I am using Krita version 5.1.3 (latest at time of writing).

JSONDecodeError
Python 3.8.1: C:\Program Files\Krita (x64)\bin\krita.exe
Mon Dec  5 15:40:25 2022

A problem occurred in a Python script.  Here is the sequence of
function calls leading up to the error, in the order they occurred.

 C:\Program Files\Krita (x64)\lib\krita-python-libs\krita\dockwidgetfactory.py in createDockWidget(self=<krita.dockwidgetfactory.DockWidgetFactory object>)
   14         super(DockWidgetFactory, self).__init__(_id, _dockPosition)
   15         self.klass = _klass
   16 
   17     def createDockWidget(self):
   18         return self.klass()
self = <krita.dockwidgetfactory.DockWidgetFactory object>
self.klass = <class 'krita_diff.docker.SDPluginDocker'>

 C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\docker.py in __init__(self=<krita_diff.docker.SDPluginDocker object>, *args=(), **kwargs={})
   31         super(SDPluginDocker, self).__init__(*args, **kwargs)
   32         self.setWindowTitle("SD Plugin")
   33         self.create_interfaces()
   34         self.update_remote_config()
   35         self.update_interfaces()
self = <krita_diff.docker.SDPluginDocker object>
self.create_interfaces = <bound method SDPluginDocker.create_interfaces of <krita_diff.docker.SDPluginDocker object>>

 C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\docker.py in create_interfaces(self=<krita_diff.docker.SDPluginDocker object>)
   39     def create_interfaces(self):
   40         self.quick_widget = SDCommonWidget()
   41         self.txt2img_widget = Txt2ImgTabWidget()
   42         self.img2img_widget = Img2ImgTabWidget()
   43         self.inpaint_widget = InpaintTabWidget()
self = <krita_diff.docker.SDPluginDocker object>
self.txt2img_widget undefined
global Txt2ImgTabWidget = <class 'krita_diff.pages.txt2img.Txt2ImgTabWidget'>

 C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\txt2img.py in __init__(self=<krita_diff.pages.txt2img.Txt2ImgTabWidget object>, *args=(), **kwargs={})
    8 class Txt2ImgTabWidget(ImgTabBaseWidget):
    9     def __init__(self, *args, **kwargs):
   10         super(Txt2ImgTabWidget, self).__init__(cfg_prefix="txt2img", *args, **kwargs)
   11 
   12         self.highres = QCheckBox(script.cfg, "txt2img_highres", "Highres fix")
builtinsuper = <class 'super'>
global Txt2ImgTabWidget = <class 'krita_diff.pages.txt2img.Txt2ImgTabWidget'>
self = <krita_diff.pages.txt2img.Txt2ImgTabWidget object>
).__init__ = <bound method Txt2ImgTabWidget.__init__ of <krita_diff.pages.txt2img.Txt2ImgTabWidget object>>
cfg_prefix undefined
args = ()
kwargs = {}

 C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\img_base.py in __init__(self=<krita_diff.pages.txt2img.Txt2ImgTabWidget object>, cfg_prefix='txt2img', *args=(), **kwargs={})
   36         )
   37 
   38         self.ext_layout = ExtSectionLayout(cfg_prefix)
   39 
   40         inline_layout = QHBoxLayout()
self = <krita_diff.pages.txt2img.Txt2ImgTabWidget object>
self.ext_layout undefined
global ExtSectionLayout = <class 'krita_diff.pages.extension.ExtSectionLayout'>
cfg_prefix = 'txt2img'

 C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\extension.py in __init__(self=<krita_diff.pages.extension.ExtSectionLayout object>, cfg_prefix='txt2img', *args=(), **kwargs={})
   91         self.ext_names = partial(script.cfg, f"{cfg_prefix}_script_list", "QStringList")
   92         self.ext_widgets = {}
   93         self.init_ui_once_if_ready()
   94 
   95     def init_ui_once_if_ready(self):
self = <krita_diff.pages.extension.ExtSectionLayout object>
self.init_ui_once_if_ready = <bound method ExtSectionLayout.init_ui_once_if_r...ta_diff.pages.extension.ExtSectionLayout object>>

 C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\extension.py in init_ui_once_if_ready(self=<krita_diff.pages.extension.ExtSectionLayout object>)
  102         self.is_init = True
  103         for ext_name in self.ext_names():
  104             ext_widget = ExtWidget(script.ext_cfg, self.ext_type, ext_name)
  105             ext_widget.setVisible(False)
  106             self.addWidget(ext_widget)
ext_widget undefined
global ExtWidget = <class 'krita_diff.pages.extension.ExtWidget'>
global script = <krita_diff.script.Script object>
script.ext_cfg = <krita_diff.config.Config object>
self = <krita_diff.pages.extension.ExtSectionLayout object>
self.ext_type = 'scripts_txt2img'
ext_name = 'None'

 C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\extension.py in __init__(self=<krita_diff.pages.extension.ExtWidget object>, ext_cfg=<krita_diff.config.Config object>, ext_type='scripts_txt2img', ext_name='None', *args=(), **kwargs={})
   30 
   31         get_key = partial(get_ext_key, ext_type, ext_name)
   32         meta: List[dict] = json.loads(ext_cfg(get_key()))
   33 
   34         layout = QVBoxLayout()
meta undefined
global List = typing.List
builtindict = <class 'dict'>
global json = <module 'json' from 'C:\\Program Files\\Krita (x64)\\python\\python38.zip\\json\\__init__.pyc'>
json.loads = <function loads>
ext_cfg = <krita_diff.config.Config object>
get_key = functools.partial(<function get_ext_key at 0x00000158AD702940>, 'scripts_txt2img', 'None')

 C:\Program Files\Krita (x64)\json\__init__.py in loads(s='', cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw={})


 C:\Program Files\Krita (x64)\json\decoder.py in decode(self=<json.decoder.JSONDecoder object>, s='', _w=<built-in method match of re.Pattern object>)


 C:\Program Files\Krita (x64)\json\decoder.py in raw_decode(self=<json.decoder.JSONDecoder object>, s='', idx=0)

JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    __cause__ = None
    __class__ = <class 'json.decoder.JSONDecodeError'>
    __context__ = StopIteration(0)
    __delattr__ = <method-wrapper '__delattr__' of JSONDecodeError object>
    __dict__ = {'colno': 1, 'doc': '', 'lineno': 1, 'msg': 'Expecting value', 'pos': 0}
    __dir__ = <built-in method __dir__ of JSONDecodeError object>
    __doc__ = None
    __eq__ = <method-wrapper '__eq__' of JSONDecodeError object>
    __format__ = <built-in method __format__ of JSONDecodeError object>
    __ge__ = <method-wrapper '__ge__' of JSONDecodeError object>
    __getattribute__ = <method-wrapper '__getattribute__' of JSONDecodeError object>
    __gt__ = <method-wrapper '__gt__' of JSONDecodeError object>
    __hash__ = <method-wrapper '__hash__' of JSONDecodeError object>
    __init__ = <bound method JSONDecodeError.__init__ of JSONDe...ror('Expecting value: line 1 column 1 (char 0)')>
    __init_subclass__ = <built-in method __init_subclass__ of type object>
    __le__ = <method-wrapper '__le__' of JSONDecodeError object>
    __lt__ = <method-wrapper '__lt__' of JSONDecodeError object>
    __module__ = 'json.decoder'
    __ne__ = <method-wrapper '__ne__' of JSONDecodeError object>
    __new__ = <built-in method __new__ of type object>
    __reduce__ = <bound method JSONDecodeError.__reduce__ of JSON...ror('Expecting value: line 1 column 1 (char 0)')>
    __reduce_ex__ = <built-in method __reduce_ex__ of JSONDecodeError object>
    __repr__ = <method-wrapper '__repr__' of JSONDecodeError object>
    __setattr__ = <method-wrapper '__setattr__' of JSONDecodeError object>
    __setstate__ = <built-in method __setstate__ of JSONDecodeError object>
    __sizeof__ = <built-in method __sizeof__ of JSONDecodeError object>
    __str__ = <method-wrapper '__str__' of JSONDecodeError object>
    __subclasshook__ = <built-in method __subclasshook__ of type object>
    __suppress_context__ = True
    __traceback__ = <traceback object>
    __weakref__ = None
    args = ('Expecting value: line 1 column 1 (char 0)',)
    colno = 1
    doc = ''
    lineno = 1
    msg = 'Expecting value'
    pos = 0
    with_traceback = <built-in method with_traceback of JSONDecodeError object>

The above is a description of an error in a Python program.  Here is
the original traceback:

Traceback (most recent call last):
  File "C:\Program Files\Krita (x64)\lib\krita-python-libs\krita\dockwidgetfactory.py", line 18, in createDockWidget
    return self.klass()
  File "C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\docker.py", line 33, in __init__
    self.create_interfaces()
  File "C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\docker.py", line 41, in create_interfaces
    self.txt2img_widget = Txt2ImgTabWidget()
  File "C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\txt2img.py", line 10, in __init__
    super(Txt2ImgTabWidget, self).__init__(cfg_prefix="txt2img", *args, **kwargs)
  File "C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\img_base.py", line 38, in __init__
    self.ext_layout = ExtSectionLayout(cfg_prefix)
  File "C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\extension.py", line 93, in __init__
    self.init_ui_once_if_ready()
  File "C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\extension.py", line 104, in init_ui_once_if_ready
    ext_widget = ExtWidget(script.ext_cfg, self.ext_type, ext_name)
  File "C:\Users\celia\AppData\Roaming\krita\pykrita\krita_diff\pages\extension.py", line 32, in __init__
    meta: List[dict] = json.loads(ext_cfg(get_key()))
  File "json\__init__.py", line 357, in loads
  File "json\decoder.py", line 337, in decode
  File "json\decoder.py", line 355, in raw_decode
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Network error

Describe the bug
Network error since last commit

To Reproduce
Steps to reproduce the behavior:

  1. run webui-user

  2. run krita
    3.issue in cmd
    obraz
    obraz

  3. issue in krita
    obraz
    obraz

Desktop (please complete the following information):

  • OS,Windows
  • Commit revision [ac085628540d0ec6a988fad93f5b8f2154209571]

Additional context
Add any other context about the problem here.

Use from Krita running on an other machine

Is your feature request related to a problem? Please describe.

I run my Automatic1111 on a windows machine which I access remotely over the local network from my Linux machine. My Krita is running on my Linux machine.

Describe the solution you'd like

A way to use Krita on Linux and connect to the Automatic1111 webui on another machine.

Support for safetensors

WebUI seems to have recently started supporting safetensors, or at least now it's more accessible in the checkpoint merger UI. I don't see the plugin listing those as models, though. I suggest listing them and having WebUI handle actually making use out of them.

Script not appearing in Python Plugin Manager

Describe the bug
Script not appearing in Python Plugin Manager

To Reproduce
Steps to reproduce the behavior:
Following the guide it doesn't appear in krita plugin manager

Screenshots
Plugin Manager:
plugin

My folder
folder2

Syslink:
folder1

My webui bat: set COMMANDLINE_ARGS=--xformers --api --gradio-img2img-tool color-sketch --deepdanbooru

Retrieval failed everywhere...

Describe the bug
I have installed the plugin with the newest Krita, it says 'Retrieval Failed' in various option boxes and does not start.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.