Commit Graph

2411 Commits

Author SHA1 Message Date
psychedelicious
635e7da05d Abandons "inpainting" canvas lock 2022-11-27 03:35:49 +13:00
psychedelicious
c0005eb063 Fixes bounding box not being rounded to 64 2022-11-27 03:35:49 +13:00
psychedelicious
74485411a8 Fixes send to buttons 2022-11-27 03:35:49 +13:00
psychedelicious
ed70fc683c Fixes reset canvas view when locked 2022-11-27 03:35:49 +13:00
psychedelicious
425d3bc95d Clips lines drawn while canvas locked
When drawing with the locked canvas, if a brush stroke gets too close to the edge of the canvas and its stroke would extend past the edge of the canvas, the edge of that stroke will be seen after unlocking the canvas.

This could cause a problem if you unlock the canvas and now have a bunch of strokes just outside the init image area, which are far back in undo history and you cannot easily erase.

With this change, lines drawn while the canvas is locked get clipped to the initial image bbox, fixing this issue.

Additionally, the merge and save to gallery functions have been updated to respect the initial image bbox so they function how you'd expect.
2022-11-27 03:35:49 +13:00
psychedelicious
3994c28b77 Fixes 2px layout shift on toggle canvas lock 2022-11-27 03:35:49 +13:00
psychedelicious
0100a63b59 Stops unnecessary canvas rescales on gallery state change 2022-11-27 03:35:49 +13:00
psychedelicious
432dc704a6 Organises features/canvas 2022-11-27 03:35:49 +13:00
psychedelicious
1d540219fa Fixes bounding box ending up offscreen 2022-11-27 03:35:49 +13:00
psychedelicious
827f516baf Organises features/canvas 2022-11-27 03:35:49 +13:00
psychedelicious
48ad0c289c Rebases on dev, updates new env files w/ patchmatch 2022-11-27 03:35:49 +13:00
psychedelicious
223e0529ba Fixes app after removing in/out-painting refs 2022-11-27 03:35:49 +13:00
Kyle Schouviller
98e3bbb3bd Add patchmatch and infill_method parameter to prompt2image (options are 'patchmatch' or 'tile'). 2022-11-27 03:35:49 +13:00
psychedelicious
e3efcc620c Removes all references to split inpainting/outpainting canvas 2022-11-27 03:35:49 +13:00
psychedelicious
15dd1339d2 Initial unification of canvas 2022-11-27 03:35:49 +13:00
psychedelicious
caf8f0ae35 Removes console.log from redux-persist patch 2022-11-27 03:35:49 +13:00
psychedelicious
cfb87bc116 WIP refactor to unified canvas 2022-11-27 03:35:49 +13:00
psychedelicious
c0ad1b3469 Fixes: outpainting temp images show in gallery 2022-11-27 03:35:49 +13:00
psychedelicious
4382cd0b91 Moves image uploading to HTTP
- It all seems to work fine
- A lot of cleanup is still needed
- Logging needs to be added
- May need types to be reviewed
2022-11-27 03:35:49 +13:00
Kyle Schouviller
b049bbc64e Fix iterative outpainting by restoring original images 2022-11-27 03:35:49 +13:00
Kyle Schouviller
34395ff490 Fixes crashes during iterative outpaint. Still doesn't work correctly though. 2022-11-27 03:35:49 +13:00
psychedelicious
1bc1085542 Fixes bbox not resizing in outpainting if partially off screen 2022-11-27 03:35:49 +13:00
psychedelicious
d7884432c9 Fixes inpainting not doing img2img when no mask 2022-11-27 03:35:49 +13:00
psychedelicious
82f6402d04 Hides staging area outline on mouseover prev/next 2022-11-27 03:35:49 +13:00
psychedelicious
0e7b735611 Fixes error on inpainting paste back
`TypeError: 'float' object cannot be interpreted as an integer`
2022-11-27 03:35:49 +13:00
psychedelicious
5304ef504c Fixes wonky canvas layer ordering & compositing 2022-11-27 03:35:49 +13:00
psychedelicious
17b295871f Outpainting tab loads to empty canvas instead of upload 2022-11-27 03:35:49 +13:00
psychedelicious
70dcfa1684 Builds fresh bundle 2022-11-27 03:35:49 +13:00
psychedelicious
5d484273ed Fixes "use all" not setting variationAmount
Now sets to 0 when the image had variations.
2022-11-27 03:35:49 +13:00
psychedelicious
179656d541 Adds staging area 2022-11-27 03:35:49 +13:00
psychedelicious
73099af6ec Fixes disappearing canvas grid lines 2022-11-27 03:35:49 +13:00
blessedcoolant
c223d93b4d Fix gallery width size for Outpainting
Also fixes the canvas resizing failing n fast pushes
2022-11-27 03:35:49 +13:00
psychedelicious
4e34194479 Increases CFG Scale max to 200 2022-11-27 03:35:49 +13:00
blessedcoolant
00e2674076 Add Metadata To Viewer 2022-11-27 03:35:49 +13:00
psychedelicious
0a2e67df1a Hotkeys improvement 2022-11-27 03:35:49 +13:00
psychedelicious
7831468304 Canvas styling 2022-11-27 03:35:49 +13:00
psychedelicious
88d02585e7 Limits history to 256 for each of undo and redo 2022-11-27 03:35:49 +13:00
psychedelicious
f82e82f1bb Debounce > 300ms 2022-11-27 03:35:49 +13:00
psychedelicious
317762861f Fixes invert mask 2022-11-27 03:35:49 +13:00
psychedelicious
3f1360368d Fixes undo/redo 2022-11-27 03:35:49 +13:00
psychedelicious
d5467e7db5 Attempts to fix redux-persist debounce patch 2022-11-27 03:35:49 +13:00
psychedelicious
9284983429 Updates package.json to use redux-persist patches 2022-11-27 03:35:49 +13:00
psychedelicious
bb79c78fe8 Fixes AttributeError: 'dict' object has no attribute 'invert_mask' 2022-11-27 03:35:49 +13:00
psychedelicious
e3735ebb45 Adds debouncing 2022-11-27 03:35:49 +13:00
psychedelicious
eb17dfdeaa Patches redux-persist and redux-deep-persist with debounced persists
Our app changes redux state very, very often. As our undo/redo history grows, the calls to persist state start to take in the 100ms range, due to a the deep cloning of the history. This causes very noticeable performance lag.

The deep cloning is required because we need to blacklist certain items in redux from being persisted (e.g. the app's connection status).

Debouncing the whole process of persistence is a simple and effective solution. Unfortunately, `redux-persist` dropped `debounce` between v4 and v5, replacing it with `throttle`. `throttle`, instead of delaying the expensive action until a period of X ms of inactivity, simply ensures the action is executed at least every X ms. Of course, this does not fix our performance issue. 

The patch is very simple. It adds a `debounce` argument - a number of milliseconds - and debounces `redux-persist`'s `update()` method (provided by `createPersistoid`) by that many ms.

Before this, I also tried writing a custom storage adapter for `redux-persist` to debounce the calls to `localStorage.setItem()`. While this worked and was far less invasive, it doesn't actually address the issue. It turns out `setItem()` is a very fast part of the process.

We use `redux-deep-persist` to simplify the `redux-persist` configuration, which can get complicated when you need to blacklist or whitelist deeply nested state. There is also a patch here for that library because it uses the same types as `redux-persist`.

Unfortunately, the last release of `redux-persist` used a package `flat-stream` which was malicious and has been removed from npm. The latest commits to `redux-persist` (about 1 year ago) do not build; we cannot use the master branch. And between the last release and last commit, the changes have all been breaking.

Patching this last release (about 3 years old at this point) directly is far simpler than attempting to fix the upstream library's master branch or figuring out an alternative to the malicious and now non-existent dependency.
2022-11-27 03:35:49 +13:00
psychedelicious
1114ac97e2 Fixes (?) spacebar issues 2022-11-27 03:35:49 +13:00
psychedelicious
c7ef41af54 Changes "Invert Mask" to "Preserve Masked Areas" 2022-11-27 03:35:49 +13:00
psychedelicious
7075a17091 Implements invert mask 2022-11-27 03:35:49 +13:00
blessedcoolant
7f0fb47cf3 Remove save button from Canvas Controls (cleanup) 2022-11-27 03:35:49 +13:00
blessedcoolant
775f032c56 Mask Brush Preview now always at 0.5 opacity
The new mask is only visible properly at max opacity but at max opacity the brush preview becomes fully opaque blocking the view. So the mask brush preview no remains at 0.5 no matter what the Brush opacity is.
2022-11-27 03:35:49 +13:00