Releases: chaiNNer-org/chaiNNer
Alpha v0.21.1
This update fixes a pretty crucial bug with upscaling images with transparency with PyTorch models.
Important note: I forgot to mention last update to make sure you have the latest Nvidia drivers after you update PyTorch. If your drivers haven't been updated in over a year, PyTorch upscaling might start not working or being extremely slow.
What's Changed
- Better node errors using error messages in output types by @RunDevelopment in #2445
- Add a popup message on start for dependency updates by @joeyballentine in #2453, #2458
Bug Fixes
- Fixed upscaling with transparency by @RunDevelopment in #2457
Other/Dev Changes
- Replace global execution options with node context parameter by @RunDevelopment in #2444
- Use screenToFlowPosition() instead of project() by @joeyballentine in #2459
Full Changelog: v0.21.0...v0.21.1
Alpha v0.21.0
This might be chaiNNer's biggest update ever! Sorry for how long it took, we spent a lot of time making sure this release had the polish we deemed necessary. There are a lot of big changes in this update, but here are some highlights: Better iterators, general optimizations, support for more PyTorch models, chain auto-organization, and much more. Here are the major changes in greater detail:
Better Iterators
This might not be the final step in our goal of getting iteration in chaiNNer to where we want to be, but it's certainly a step in the right direction. Iterators are no longer gigantic nodes with their own sub-flow editor in them. Now, they are single nodes that can be attached like normal, which makes working with iteration a whole lot easier. Not only that, but it also allows mixing and matching iterators and "collectors", so now you can do things like convert an image sequence to a video, or split a spritesheet to separate images.
However, only one iterator is actually allowed to be part of the same chain "lineage", so you still are not able to do things like match multiple iterators together or combine an image iterator and a model iterator. That is a lot more complex and will hopefully come in the future. Oh yeah, and all the iterator nodes have new names as well, so instead of "Image File Iterator", look for "Load Images".
General Optimizations
We spent some time working on optimizing a few aspects of chaiNNer and generally improving speed. From making PyTorch upscales faster to optimizing things like resizing to making the frontend use less CPU, you should notice a general speedup all around.
Support for more PyTorch models
Part of what made this release take a while was that we took a small break from working on chaiNNer to separate out our model support code into a new Python package called Spandrel. Doing so allowed us to more easily add support for a variety of new models (such as SPAN, Real-CUGAN, FBCNN, and more) and we even got some contributions from the community. Spandrel is now being used in AUTOMATIC1111's stable diffusion webui, and will most likely also be used in ComfyUI soon. If you want chaiNNer's automatic model support in your Python project, go check out Spandrel. To see a list of all the currently supported models, check here.
Other notable changes
- Chains can now be auto-formatted/organized using Edit > Format Chain (or using ctrl+shift+f).
- Upscale tiling is now even more seamless, using a blending technique to avoid hard seams with certain models like SCUNet.
- Some general UI improvements and quality-of-life additions.
- Many new nodes.
And now for the changelog:
Dependency Updates
PyTorch
- Update PyTorch to 2.1.2 by @joeyballentine in #2265, #2349, #2429
- Add SafeTensors support by @joeyballentine in #2272, #2440
- Use new Spandrel package for model loading by @joeyballentine and @RunDevelopment in #2330, #2343, #2348, #2354, #2359, #2392, #2412, #2428, #2409
Changes
New Nodes
- "Alpha Matting" node by @RunDevelopment in #2292
- "Pixel Art Upscale" node by @RunDevelopment in #2326
- "Strengthen Normals" node by @RunDevelopment in #2372
- "Unified Pad" node by @RunDevelopment in #2373
- "Unified Resize" node by @RunDevelopment in #2380
- "Chroma Key" node by @RunDevelopment in #2381
- "Optimize ONNX Model" node by @RunDevelopment in #2408
Optimizations
- Optimize box blur by @RunDevelopment in #2325
- Optimize gamma implementation by @RunDevelopment in #2386
- Optimize image resizing and add more resizing algorithms by @RunDevelopment in #2387, #2390, #2394
- Optimize Split Transparency output for subsequent operations by @RunDevelopment in #2391
- Optimize PyTorch upscale by @RunDevelopment in #2407
- Optimize regex replace by @RunDevelopment in #2411
- Change edge running animation and behavior by @joeyballentine in #2424
Changes
- Iterator rewrite by @joeyballentine and @RunDevelopment in #2254, #2267, #2276, #2280, #2286, #2442, #2449
- Add chain auto-organization/formatting by @joeyballentine and @RunDevelopment in #2377, #2395
- Add type tags for number ranges by @RunDevelopment in #2284
- Improve "Remove Background" node types by @RunDevelopment in #2291
- Simple fused input-output elements by @RunDevelopment in #2338
- Improve screenshots by @RunDevelopment in #2340
- Add fused output for "Pass Through" node by @RunDevelopment in #2341
- Allow configuring multithreading for ncnn by @JeremyRand in #2342
- Make ncnn memory budget configurable by @JeremyRand in #2351
- Allow setting ONNX opset by @RunDevelopment in #2361
- Add overlap blending for auto split by @RunDevelopment in #2363
- Add open delay to status tooltips by @RunDevelopment in #2364
- Add threshold group by @RunDevelopment in #2368
- Add "tabs" style for dropdown inputs by @RunDevelopment in #2367
- Improve "Normalize Normals" node by @RunDevelopment in #2371
- Add a bit of padding to tab list by @RunDevelopment in #2374
- Add relative coordinates for Pick Color by @RunDevelopment in #2382
- Allow custom blurred images in High Pass by @RunDevelopment in #2388
- Add opset output to Convert ONNX by @RunDevelopment in #2396
- Add categories and dividers for dropdowns by @RunDevelopment in #2398
- Add Separate Alpha option to "Resize" node by @RunDevelopment in #2400
- Change default crop width & height to 100 by @RunDevelopment in #2401
- Mark ignored inputs by @RunDevelopment in #2403
- Support capturing groups in "Regex Replace" node types by @RunDevelopment in #2404
- Make tiling support colorization models by @RunDevelopment in #2406
- Add relative coordinates and tile fill for Shift node by @RunDevelopment in #2413
- Make "Resize To Side" input order consistent with Resize by @RunDevelopment in #2414
- Simplify size requirements logic in "Inpaint" node by @RunDevelopment in #2430
- Allow glob negation in image iterator by @joeyballentine in #2432
Bug Fixes
- Clamp YUV->RGB out of gamut by @RunDevelopment in #2264
- Detect HTTPS WebUI on localhost by @RunDevelopment in #2278
- Fix a^b in Math node and improved output type by @RunDevelopment in #2282
- Remove unnecessary alpha channels for loaded DDS files by @RunDevelopment in #2293
- Enable tiling for SCUNet by @joeyballentine in #2294
- Fix execution buttons disabled state by @joeyballentine in #2316
- Filter events in
/run/individual
by @RunDevelopment in #2320 - Prevent dragging on view image button by @RunDevelopment in #2339
- Refactor out onnx conversion + use data for ncnn input name by @joeyballentine in #2360
- Fix alert box closing delay by @RunDevelopment in #2383
- Fix race condition in
/run/individual
by @RunDevelopment in #2410
Other/Dev Changes
- Switch to linting & formatting the backend with Ruff by @RunDevelopment and @joeyballentine in #2296, #2301, #2303, #2302, #2300, #2304, #2306, #2305, #2308, #2314, #2315, #2435
- Update react flow by @joeyballentine in #2268, #2344
- Remove
inputSize
in save files by @RunDevelopment in #2273 - Update navi to 0.6.2 by @RunDevelopment in #2283
- Restructured API files by @RunDevelopment in #2285
- Fix release workflows on macOS by @RunDevelopment in #2298, #2299
- Add caching to backend dependency installs for both CI and application by @joeyballentine in #2311
- Fix node_check for 3.8 by @RunDevelopment in #2321
- Remove GPU list endpoints by @joeyballentine in #2333
- Rework how nodes are sorted by @RunDevelopment in #2323
- Update Navi PyTorch model types by @RunDevelopment in #2337
- Update electron forge to latest + fix mac release by @joeyballentine in #2350
- Update pyright and use library types by @RunDevelopment in #2356
- Type-safe model purpose for model inputs by @RunDevelopment in #2358
- Enforce objects by @RunDevelopment in #2357
- Updated to latest version of chakra ui by @RunDevelopment and @joeyballentine in #2365, #2366, #2370
- Migrate VSCode
settings.json
by @RunDevelopment in #2399 - Rework backend events by @RunDevelopment in #2402
- Refactor High Pass implementation to avoid code duplication by @RunDevelopment in #2415
Full Changelog: v0.20.2...v0.21.0
Alpha v0.20.2
Hey everyone, sorry it took so long to get this out. This update contains a bunch of things that I thought we had already released -- a couple bug fixes and some cool new features. Some very big things are on the way though, so be on the lookout for the next update.
Changes
- Add Multi Gaussian filter to Normal Map Generator (#2255)
- Add ability to limit the length of certain iterators (#2218)
- Add support for sub-pixel distance transform (#2235)
- (ncnn) Allow disabling Winograd/SGEMM (for cpu ncnn) (#2237 -- thanks @JeremyRand)
Bug Fixes
- Fixed being able to close the dependency manager while installing deps (#2227)
- Fixed RGBA preview image background (#2225)
- Fixed pip using bad caches on dep installs (#2232)
- Fixed dragging bug on image previews (#2236)
- Fixed bug from read-only image in CAS (#2239)
- Fixed CAS for grayscale images (#2241)
And thanks to these maintainers: @joeyballentine and @RunDevelopment
Alpha v0.20.1
This is a hotfix to fix the Windows installer installing to the wrong place. If you installed v0.20.0 on Windows, I recommend checking if your system registers two separate chaiNNer installs, and uninstalling the extra one after applying this update. If your system is not registering a second chaiNNer instance, I recommend navigating to C:\Users\[your user]\AppData\Local
and seeing if a directory called app
exists, and if it contains chaiNNer.exe
. If it does, I recommend just deleting that app
directory entirely. The v0.20.1 installer will not automatically fix this for you. I am very sorry for this inconvenience.
Bug Fixes
Alpha v0.20.0
Hey everyone! This is a pretty major update with some pretty overdue changes. The main big change is that we've upgraded to Python 3.11 (for integrated Python) as well as PyTorch 2.0 (if you're using chaiNNer for its PyTorch capabilities). Between these two changes, you should hopefully see a bit of an overall speed boost when processing things. That isn't all that got changed though, so take a look at the rest of the changelog to see everything that's new.
NOTE: After installing v0.20.0, integrated Python will be redownloaded, and you will need to re-install any dependencies you are using from the dependency manager (assuming you are not using system Python). Also, dependency-related settings have been reset in this build, so make sure to double-check that everything looks correct)
Major Changes
- Update Integrated Python to Python 3.11 (#2144, #2092)
- View Image nodes now have resizable image previews (#2167, #2174, #2205, #2214)
- Improved Video Frame Iterator codec and container selection (#2158 -- thanks @adegerard)
- Add ability to pass custom additional ffmpeg params to Video Frame Iterator (#2158 -- thanks @adegerard)
- MacOS builds are now code-signed (#2136, #2180 -- thanks @stonerl)
- MacOS builds are now universal (x64 and arm64) (#2162, #2166 -- thanks @stonerl)
Minor Changes
- (PyTorch) DAT and SRFormer support (#2153, #2155, #2156)
- (PyTorch) Support for reading .ckpt files (for certain models) (#2193)
- (PyTorch) Support for DiffBR's SwinIR models (#2202)
- (PyTorch) FP16 now gets enabled by default for compatible GPUs (#2203)
- Linux build improvements (#2179 -- thanks @stonerl)
- Wayland Linux support (#2178 -- thanks @illode)
- Added BC5_SNORM format and additional format information to DDS options in Save Image (#2199)
- Added support for uncompressed DDS (#2201, #2211)
- Performance improvement for iterator progress updates that should use less CPU and lag the UI less (#2182)
- Visually show feature-disabled nodes as disabled (#2194)
- Added docs for Mip options in Save Image (#2207)
- Added anti-aliasing to Threshold node (#2209)
New Nodes
- Text as Image (#2125, #2213 -- thanks @adegerard)
- This node allows you to create an image from text, for use with overlaying on other images.
Dependency Updates
Bug Fixes
- Fix .chn files being unable to be opened with chaiNNer on MacOS (#2150 -- thanks @stonerl)
- Fix BC5 DDS loading (#2198)
- Fix High Pass for grayscale images (#2206)
- Fixed logging empty lines (#2208)
and thanks to the following maintainers: @joeyballentine @RunDevelopment @stonerl
Alpha v0.19.4
This update contains a few bug fixes, a few new features, and a bunch of improvements specifically for macOS.
Changes
- Add position to Blend Images node (#2087 -- thanks @adegerard)
- Made some node outputs more consistent (#2111 -- thanks @stonerl)
- Add "Separate Alpha" checkbox to upscale nodes (#2127)
- Handle unsaved changes on chaiNNer restart (#2132 -- thanks @stonerl)
- Various macOS DMG improvements (#2122 -- thanks @stonerl)
- Set minimum macOS version to 11.0.0 (#2124 -- thanks @stonerl)
- Remove the macOS portable build as it was broken and has likely never worked (#2119 -- thanks @stonerl)
- Associate .chn files with chaiNNer on macOS (#2115 -- thanks @stonerl)
- Add "New Chain" and "Open Recent" menus to macOS dock (#2140 -- thanks @stonerl)
- Slight optimization for NCNN model loading when using CPU NCNN (#2142 -- thanks @JeremyRand)
Bug Fixes
- Fixed bug related to opening certain older chain files (#2116)
- Fixed tooltips being placed behind modal popups (#2128 -- thanks @stonerl)
- Fixed hotkeys (such as pressing F5 to run a chain) sometimes not working (#2114 -- thanks @stonerl)
- Fixed incorrect inputs on new unified Crop node (#2134 -- thanks @adegerard)
And thanks to the following maintainers: @joeyballentine @RunDevelopment
Alpha v0.19.3
Another update which adds a few things and fixes a few bugs.
Changes
- (PyTorch) SCUNet architecture support (#2102, thanks @adegerard)
- Threshold node improvements (#2091)
New Nodes
- Generate Threshold (#2096)
- A node to generate the threshold value for the Threshold node.
Bug Fixes
- Fixed Save Image not creating directories correctly (#2099)
- Fixed issue with displaying image previews (#2101)
- Disable multi-instance support on MacOS as it did not work correctly (#2107, thanks @stonerl)
- Display modal overlays on top of toast messages (#2110, #2112, thanks @stonerl)
And thanks to the following maintainers: @RunDevelopment
Alpha v0.19.2
This update contains a few important bug fixes as well as some new long-requested features.
Changes
- Use Rust implementation for dither nodes (#2075)
- This implementation is between 100 and 500 times faster than the previous pure-python implementation.
- Use Rust implementation for Copy to Clipboard (#2079)
- This removes the multiple platform-specific dependencies as well as enables support for this node on silicon Macs.
- Add support for saving 16 bit and 32 bit images (#2083)
- Add setting for allowing multiple concurrent chaiNNer instances (#2089)
- Light mode improvements (#2064, thanks @stonerl)
- Add support for saving BMP in Save Image (#2077)
- "Webp (Lossless)" in Save Image is now just "Webp" with a lossless checkbox (#2080)
- Added warnings in node documentation for nodes with limited color depth (#2090)
New Nodes
- Quantize to Reference (#2071)
- A custom quantization implementation that tries to emulate a reference image as closely as possible. Useful for pixel art upscales.
- Percent (#2076, thanks @adegerard)
- Similar to the Number node, this node lets you input a percentage via slider to connect to other nodes.
Bug Fixes
- Fixed dropdown settings resetting their values unintentionally (#2081)
- This fixes the ONNX execution option problem people have been reporting recently. Make sure to check that you aren't using CPU by accident.
- Fixed Image File Iterator not sorting alphabetically (#2067)
- Fixed Stretch Contrast (#2082)
- Ignore file extension case in file image iterator (#2084)
Thanks to the following maintainers: @joeyballentine @RunDevelopment @theflyingzamboni
Alpha v0.19.1
This update has a critical fix for the image file iterator as well as many MacOS improvements.
Changes
- System usage meters now use traffic-light color scheme (#2023, thanks @stonerl)
- MacOS clipboard improvements (#2031, thanks @stonerl)
- Help menu improvements (#2041, thanks @stonerl)
- Other MacOS improvements, such as a new icon (#2042, #2049, thanks @mafiosnik777)
- Per-platform dependency description improvements (#2047, thanks @stonerl)
- Add new option to enable hardware acceleration for the GUI rendering. We do not recommend enabling this unless you're using CPU upscaling as it will reduce GPU performance. (#2055, thanks @stonerl)
Bug Fixes
- Fixed glob pattern issues and related bugs with Image File Iterator (#2039)
- Fixed header layout for small screens & window sizes (#2036)
- Fixed broken input information for iterator errors (#2040)
- Fixed transparent image color contamination with Average Color Fix (#1907, thanks @Splendide-Imaginarius)
- Reduced the chances of seeing an error during an intentional backend restart (#2043, #2030)
- Fixed MacOS not quitting properly (#2051, #2049, thanks @mafiosnik777)
Alpha v0.19.0
Hey everyone. It's been a while since the last update, and in my opinion, it's been worth the wait. We have a lot of interesting improvements and new features to share with all of you.
First, we now have documentation for all available nodes. This can be accessed both by a button in the top right button bar, as well as by right-clicking on a node in the sidebar and clicking "Open Documentation". The documentation includes a lot of information about nodes and their inputs & outputs. Not to mention, the docs are also searchable. This will hopefully be a huge help to both new and existing users.
Second, the update screen has finally received a makeover. This has been a long-overdue change. Starting with 0.19.0, you will get a popup when there is a new update, which will have an option for ignoring the update or viewing the update's changelog. If you view the changelog, a modal will open that will show you a full changelog of the update -- or multiple updates if you happen to be a few versions behind. From there you can view the release on GitHub or open chaiNNer.app to download it. If you do choose to ignore the update, don't worry, because you will see a green download indicator next to chaiNNer's version number which you can click on to view the update again.
Third, we've made some improvements to how the backend sets up chaiNNer. This is mostly to prep for future features, but it also conveniently makes it slightly easier to set up chaiNNer on a remote machine, as all the necessary dependencies will be installed via the backend, instead of the frontend. This shouldn't affect existing users much, except you may notice that on starting up chaiNNer this time you see a slightly different progress indication on the splash screen as it installs the few new necessary dependencies. We also now bundle a couple of small, cross-platform dependencies that should make first-time setup a bit faster. If anyone is having trouble with the new first-time setup process, definitely let us know ASAP.
Fourth, chaiNNer is now taking advantage of some first-party Rust code. This means we were able to speed up certain nodes by a significant amount. Expect future updates to improve the speed of other nodes as we move some intensive operations over to Rust.
And now for the changelog:
Major Changes
- Node Documentation (#1880, #1900, #1902, #1923, #1925, #1928, #1926, #1932, #1929, #1930, #1937, #1946, #1950, #1952, #1956, #1961, #1962, #1963, #1993, #1992, #1995, #2004, #2009, #2017)
- Update checking improvement (#1935)
- Mandatory dependencies now get installed via the backend (#1834, #1856, #1862, #1863, #1866, #1869, #1881, #1882, #1878, #1885, #1960)
- New design for sliders (#1966, #1971, #1976, #1975, #1977, #1986, #1987, #1988)
Minor Changes
- Added Contrast-Adaptive-Sharpening to High Boost Filter (#1841)
- Added weight loading for NCNN Scale op and fix InnerProduct bug (#1864)
- Use
chainner_ext
(rust code) for Fill Alpha (#1865) - Added nearest color mode for Fill Alpha (#1883)
- Allow color inputs in merge transparency (#1888)
- Improved type error messages for colors (#1889)
- Add a wcmatch.glob field to image iterator (#1840, #1939, thanks @zeptofine)
- Hide unimportant labels (#1919)
- Add more algorithms to the Color Transfer node (#1903, thanks @adegerard)
- Update pytorch model file input label (#1927)
- Add window size detection to OmniSR (#1933)
- Splash screen is no longer always on top (#1938)
- Better computed alpha for upscaling nodes (#1942)
- Move system stats to backend (#1948)
- Changed empty-string behavior of text inputs (#1954)
- Shorter names for channel inputs/outputs in Split/Merge Transparency (#1967)
- Stack many images on Stack node (#1972)
- Consistently use sliders for blur radius-like number inputs (#1973, #1978)
- Optimized box blur implementation (#1974)
- Optimized Gaussian blur (#1981)
- Input number on enter (#1982)
- Variable precision for log-scale sliders (#1984)
- Added context menu entry to extract value into node (#1985)
- Added linked inputs group (implemented for Box Blur) (#1983)
- Use slider in Gamma node (#1989)
- Renamed "LUT" to "color palette" (#1991)
- Simplified printed structs by omitting default fields (#2003)
- Use a later version of pytorch that supports MPS for Arm MacOS (#2012)
- Update ONNX + ONNXRuntime & Improvements for ONNX on MacOS (#2010)
- Some UI fine-tuning around GPU selection on Mac (#2020, thanks @stonerl)
New Nodes
- Image Statistic (#1748)
- A node to get the min, max, mean, media, n-th percentile of an image.
- Get Bounding Box (#1884, #1901, thanks @zeptofine)
- Like Crop Content except it returns a bounding box insted of cropping.
- Regex Replace (#1893)
- Like Text Replace, but uses a regex search.
- Fast NL means (#1890, thanks @adegerard)
- Uses Fast NL means to denoise an image.
- Pick Color (#1913)
- Grab the color of a pixel in an image.
- Directory (#1921)
- Pick a directory and reuse it throughout the chain, like you can with numbers and strings currently.
- Switch (#1945)
- Connect multiple inputs and select which one you want to output.
- Stretch Contrast (#1959)
- Auto-levels-like functionality. Automatically improves contrast.
Bug Fixes
- Fixed 2 bugs in Dither Palette (#1844)
- Fixed Unsharp Mask modifying input image (#1851)
- Fixed bug with CLI mode timing out if it took too long to process (#1853)
- Fixed settings dropdowns where invalid values would get stuck with no way to change them (#1876)
- Fixed error reporting (#1908)
- Fixed ordered dithering (#1911)
- Don't check whether the directory exists in Save Image (#1912)
- Require RGB in Write Output Frame (#1920)
- Fixed linux & macos RAM usage reporting (#1948)
- Fixed wide dropdowns (#1958)
- Fixed round-half-up for negative integers (#1970)
- Enforce non-empty images (#1997)
- Add color limit for Palette from Image (#2005)
- Always estimate tile size as 256 on Mac for NCNN (#2006)
- Changed default tile size to 256 for ONNX (#2007)
Dev Changes
- Backend-defined dependencies (#1834, #1856, #1862, #1863, #1866, #1869, #1881, #1882, #1878, #1885, #1960)
- Backend-defined GPU list (#1877, #1879)
- Added more contribution documentation (#1837, #1847, #1848, #1894, #2019)
- Added emoji support for node icons (#1831, thanks @jackcarey)
- Fixed backend script path detection with external Electron (#1839, thanks @JeremyRand)
- Added
--devtools
argument (#1849, thanks @JeremyRand) - Support NCNN CPU inference (#1867, thanks @JeremyRand)
- Change
--no-backend
boolean arg to--remote-backend=<url>
(#1957) - Enforce naming conventions (#1968, #1969)
- Upgrade to Navi 0.6.0 (#2001)
- Update minor/patch version of electron (#2022)
And of course thanks to the regular maintainers of the project: @joeyballentine @RunDevelopment @theflyingzamboni