A Painting App for Open-Source AI
This app is currently in the clean-up stages of Alpha version. Bugs are being fixed and minor missing features are being added. The beta version (publicly usable binary packages) will release soon. Some documentation has been added. Complete documentation, including tutorials and videos, will be added soon.
This app is supported in Chrome on: Android, Windows 11, and Ubuntu.
(It may also work on MacOS and iOS. Untested.)
Pen pressure is now available in Windows (and was already available in Android and Linux). The app is now fully cross-platform across all features. Please ensure that your Windows pen-tablet drivers are up to date, and disable Windows Ink. ParrotLUX is not compatible with Windows Ink.
Created an auto-builder tool for designing APIFlows from ComfyUI workflows. Documentation for the auto-builder will be added soon.
Added more documentation.
All icons are now high-contrast for high readability against any background color.
Documentation is now available here.
Currently, only the user interface has been documented, including: the pinch gesture, stylus and mouse controls, and keyboard shortcuts.
Complete documentation will be added soon.
When transforming, there are now transform handles bounding the currently selected layer(s). Tap+Drag a transform handle to adjust the layer(s)' scale and rotation. (These have been added in addition to existing options: You can also adjust the scale and rotation using the sliders on the top-controls row, using the multi-touch pinch-gesture, and using mouse/keyboard shortcuts as described in the documentation.)
Fixed bugs:
- When loading a project on top of a current project, the view's pan/zoom/rotate would not reset. Now fixed.
You can now find a layer blend-mode selector on the bottom left-hand side of the layer button, beside the reorganize handle. Layer blend modes include:
- Normal - The top-layer is blended normally with the bottom-layer (luminous power simulation, or root-mean-squared blending).
- Multiply - The top-layer will darken the bottom-layer, while also tinting the bottom-layer with the top-layer's color. This might be useful for shadows.
- Add - The top-layer will brighten the bottom-layer, while also tinting the bottom-layer with the top-layer's color. This might be useful for lighting and highlights.
- Light & Shadow - The top-layer's dark colors will darken the bottom-layer, and the top-layer's bright colors will brighten the bottom-layer, both will also tint the bottom-layer with the top-layer's color. This might be useful for combining lighting and shadows on one layer. (Although I think I would keep them separate, personally?)
(Most paint programs include a long list of blend modes that are never used. I will avoid adding bloat, but if you would like a particular blend mode, please mention it in the discussion tab. I will research to see if anything other than "multiply" is ever used in production by artists. Maybe "subtract"?)
The lasso tool now supports lassoing rectangles and ellipses in addition to free-hand drawing.
Fixed bugs:
- Fixed a visual glitch mis-aligning the single-click ai tools panel.
When closing or navigating away from the app, or when opening a new project, if there are any unsaved changes, the app will ask you to confirm before deleting those unsaved changes.
Fixed bugs:
- During transform, using the rotation and scale sliders after the pinch gesture would make the layer "jump". Now fixed.
- During transform, the rotation and scale slider values would change slightly after being manually typed in (typed in "45", slider became "44"). Now fixed.
- During transform, using the rotation slider to rotate a non-square layer would squash it (view height and view width would be swapped). Now fixed.
- During transform, changing the X and Y transform sliders did not update the layer's position. Now fixed.
- During transform, changing the layer selection did not update the slider's displayed values. Now fixed.
- When transforming with multiple layers selected, crop-width and crop-height would still be displayed (cannot crop multiple layers). Now fixed.
- Re-opening the same project twice would duplicate layers. Now fixed.
- Pressing the "Escape" key would lock all layers in place and prevent painting. Now fixed.
- "Escape" and "Enter" keys were not closing or applying on the asset browser window. Now fixed.
- "Escape" and "Enter" keys were not closing the settings window. Now fixed.
- Using "undo" after the first paint stroke of a layer mask would turn the layer invisible. Now fixed.
- After an image mask had been created, it could not be un-created with "undo". Now fixed.
Added more lasso minor features (all of these support multi-layer selections):
- Invert Lasso - While activated, the non-lassoed area becomes the lassoed area, and the lassoed area becomes the non-lassoed area.
- Cut Out Lassoed Area - Create new layer(s) containing the contents of lassoed area from selected layer(s). In the selected layer(s), the contents of the lassoed area are made transparent (clear).
- Duplicate Lassoed Area - Create new layer(s) containing copies of lassoed area from selected layer(s).
- Delete Lassoed Area - Delete contents of lassoed area inside selected layer(s).
Fixed bugs:
- Fixed bugged lasso state after re-opening project.
The user interface (hovering and clicking buttons) is now 30% to 50% faster depending on the device.
Fixed bugs:
- New layer names were sometimes skipping numbers. Now fixed.
- Duplicating a pose layer now correctly copies its pose to the new layer.
- The alpha-lock button now displays correctly depending on each layer's activation status.
- Duplicated layer names now show "(copy)" to indicate which is the original.
- Duplicated groups were glitching when closed. Now fixed.
The lasso tool allows you to draw a lasso area. Painting, masking, flood-filling, and color-adjusting will affect only the lassoed area. (The abilities to transform, delete, and duplicate the lassoed area of the selected layer(s) will be added soon, as well as lasso-editing features including add/subtract, invert, expand/contract, feather, and transform.)
Paint, mask, and flood-fill now all work correctly when you have multiple layers selected, or a group selected. You will automatically paint, mask, or flood-fill whichever layer you click inside of. Multi-layer color adjust, multi-layer AI-generate, and multi-layer AI-tools still do not work.
A few UI-glitches fixed, including tool-lock that was preventing masking generative layers.
Fixed pen-pressure bug on Android. New feature settings now populate correctly when updating an existing install, instead of defaulting to 'undefined'.
You can now find view controls in the bottom-left corner of the app, beside the undo/redo buttons. These allow you to reset the view's zoom and rotation, or to lock rotation or zoom. (If rotation is locked, the pinch gesture will only pan and zoom the view, so you can keep your drawing right-way-up. If zoom is locked, the pinch gesture will only pan and rotate the view, so you can keep your drawing at a fixed size.)
Bug fixes include one resulting in saved projects not loading.
There is now an "alpha lock" icon on the paint layer button, in the top-left next to the visibility icon. When activated, paint strokes will appear only on top of already-painted regions of the layer.
Brushes now support a customizable textured appearance (like paper, for example). When creating a custom brush in-app, the brush's texture will be uploaded as a second image along with uploading the image definining the brush's tip. The intensity of the texture effect will be defined as a point-curve controlled by the pen pressure dynamics--the same as opacity and scale. Currently, only the built-in "Pencil" brush has a texture effect applied by default. (Currently, custom brushes can only be created and edited by modifying the .json files in the "/res/brushes" directory. In-app brush editing will be available in beta.)
Single-Click AI Tools are quick, one-click shortcuts for triggering generative APIFlows. They have all the same power and flexibility as full APIFlows: completely user-creatable, modifiable, and sharable, and capable of connecting to any API backend whether local or in the cloud. But, when using single-click tools, there is no need to configure settings, create new generative layers, or configure layer node-links. Just select a paint layer, single-click the desired tool, then keep working without interruption.
Two example tools ship with the app by default for now, and more will be added soon. Also, these tools are the first to include user-customizable icons, which display alongside the tool's name. :-) Many more custom-image features will soon follow! (Tags, search, favorites, and list-filtering for single-click tools and other assets will be available in beta.)
At least a few bugs have been fixed: Black background on fullscreen. Number-sliders not working right. (Finally at least a couple bugs fixed!!!)
The user interface for portrait-orientation on phone-sized displays is now slightly more usable for text-to-image generation. (Smartphone-display & non-stylus support still needs much more work. Only tablet-sized or larger displays with stylus and/or mouse are supported for now.)
Flatten Layer Group creates a new, large paint layer containing all flattened layers, while preserving their relative positions on the canvas without clipping. You can find the Flatten Group button in the lower-right corner of the layer's button. (Not yet compatible with multi-frame layers.)
Via the StabilityAI API. Includes img2img and txt2img. APIKey required. (Install APIKey in settings.)
The user interface now fits on smaller screens without zooming out. Brush select now has an icon. All canvas tools have moved to one place. Erase, blend, and mask now have easy-to-read icons. (Bugs with number sliders, element sizes, and phone-screen-sized overflows to be fixed ASAP.)>
Use the checkbox in the lower-right. Drag multiple layers to groups, transform multiple layers, paint on multiple layers, and color adjust multiple layers at once. (This feature has tons of known bugs to be fixed ASAP.)
- NodeJS. You can install it from https://nodejs.org/en.
- A PC running ComfyUI or Automatic1111 stable-diffusion-webui. You can install whichever you prefer from https://github.com/comfyanonymous/ComfyUI or https://github.com/AUTOMATIC1111/stable-diffusion-webui.
- ComfyUI should run on port 8188
- A1111 should run on port 7860
- The app will support configuring ports etc. in the future
- The Chrome or Chromium browser, running on Android, Windows, or Linux.
- MacOS and iOS are untested.
- Clone this repository to a directory on your local device.
- From the terminal, at the top-level of the repository, run
node server.js
.- Note the address
http://{local_ip_address}:6789/
logged in the terminal.
- Note the address
- On your Android tablet, launch Chrome and navigate to that address. (Only Chrome on Android is supported for now.)
- Tap the full-screen icon in the top-left. :-)
- Standard Interface
- Save, load, and export projects
- Undo and redo
- Import images as layers
- Multitouch pan/zoom/rotate
- Layers
- Rename
- Merge, duplicate, delete
- Set opacity and visibility
- Organize layer groups
- Non-destructive masks
- Multitouch transform
- Resize generative layers
- (filters coming in Beta)
- (number-slider transform in Beta)
- Painting
- Pressure sensitive brushes
- Softness
- Opacity
- Erase
- Blend
- GPU optimized
- (more default brushes coming in Beta)
- (user-custom brushes coming in Beta)
- Generation
- Text-to-Image
- Image-to-Image
- ControlNet
- ControlNet Preprocessors
- Inpainting
- A1111 and Comfy
- SD1.5, SDXL, and StableCascade
- (user-custom apiflows coming in Beta)
- Flood fill
- area or color
- padding border
- Posing
- Color Adjustment
- Saturation
- Contrast
- Brightness
- Hue
- Invert
- More features coming in Beta!