GitHub

Discord

Ko-fi

Alpha v0.22.0

Dependency Changes

  • Auto update dependencies by default, except GPU Pytorch & Torchvision by @joeyballentine in #2524
    • Most dependencies will now be auto-updated if installed, to avoid any issues due to users not updating
  • (PyTorch) Update Spandrel to v0.2.2 by @joeyballentine in #2553
    • Fixes SPAN model loading when created by updated neosr

Major Changes

  • Collapsing & expanding nodes by @joeyballentine, @RunDevelopment in #2544, #2560
    • A new button on the top-left corner of nodes to collapse or expand nodes
  • Add "Breakpoints" feature to edges for custom edge routing by @joeyballentine, @RunDevelopment in #2548, #2583, #2586
    • Right-click > Add Breakpoint or hold alt and click to add a "breakpoint" to a connection line
  • Arrow-key navigation in node search panel by @joeyballentine in #2575
    • The viewport's right-click/drag-out node search panel now supports arrow key navigation

Changes

  • Make iterator handles more square by @RunDevelopment in #2503
  • Generate tileable normal maps by @RunDevelopment in #2505
  • Make Fill Alpha output the alpha channel by @RunDevelopment in #2510
  • New inline label design for number, text, and dropdown inputs by @RunDevelopment in #2502
  • Change "Note" node styling and make it more versatile by @joeyballentine in #2465
  • Remove the unfinished experimental presets feature by @joeyballentine in #2522
  • Update Load Video node for more accurate color conversion and chroma reconstruction by @mrjschulte in #2532
  • Add more inputs/outputs to Pass Through by @joeyballentine in #2549
  • Improve UI for Text as Image and Color Levels nodes by @RunDevelopment in #2552, #2554, #2561, #2564, #2571
  • Improve color accuracy in Remove Background node by @RunDevelopment in #2557
  • Hide Copy to Clipboard input label by @RunDevelopment in #2562
  • Improve UI of Normal Map Generator node by @RunDevelopment in #2567
  • Support hints for inline labels by @RunDevelopment in #2569
  • Improved node resetting by @joeyballentine, @mrjschulte in #2566, #2547

New Nodes

  • Add "Accumulate" node for sequences of numbers by @RunDevelopment in #2507
  • Add "Edge Detection" node by @RunDevelopment in #2509, #2590
  • Add "Multiply" node by @mrjschulte in #2540
  • Add "Add" node by @mrjschulte in #2528
  • Add "Divide" node by @mrjschulte in #2541
  • Add "Log To Linear" node by @mrjschulte in #2546
  • Add "Create Colorwheel" node by @mrjschulte in #2576
  • Add "Clamp" node by @mrjschulte in #2573

Bug Fixes

  • Fix load error messages not having a stack trace by @RunDevelopment in #2508
  • List images starting with dot by @RunDevelopment in #2511
  • Disallow ONNX conversions for SAFMN by @RunDevelopment in #2512
  • Save video input fix by @RunDevelopment in #2514
  • Move model to device after pytorch interpolation by @joeyballentine in #2525
  • Avoid undefined behavior in PyTorch by @RunDevelopment in #2570
  • Fix Threshold + AA resulting in wrong broadcasting by @RunDevelopment in #2592
  • Fix pixelate node resizing the image by @RunDevelopment in #2589
  • Yield in iterator to process events by @RunDevelopment in #2535
  • Quiet FFMPEG terminal output by @mrjschulte in #2543
  • Fix color of inline code in tooltips by @RunDevelopment in #2568

New Contributors

  • @mrjschulte made their first contribution in #2532

Full Changelog: https://github.com/chaiNNer-org/chaiNNer/compare/v0.21.2...v0.22.0

Alpha v0.21.2

This update fixes a few things as well as makes some general improvements. You know the drill.

Dependency Updates

  • (PyTorch) Update to spandrel v0.2.1 by @RunDevelopment in #2487
    • Adds support for SAFMN and fixes a few minor issues with upscaling small images.

What's Changed

  • Add "Copy" to right-click context menus by @joeyballentine in #2473
  • Make Save Video input names consistent with Save Image by @RunDevelopment in #2480
  • Correctly show mixed iterator-non-iterator inputs/outputs by @RunDevelopment in #2481
  • Avoid running non-chosen "Switch" node paths by @RunDevelopment in #2477
  • Pad images according to size requirements when upscaling by @RunDevelopment in #2485
  • Add PyTorch memory budget limit setting by @joeyballentine in #2472
  • Add "Manual/Copy" install mode to dependency manager by @joeyballentine in #2462
  • Mark iterated inputs/outputs as sequenced in docs by @RunDevelopment in #2495
  • Fix iterator limit and improved output types by @RunDevelopment in #2496
  • Fix iterator lineage checks in UI by @RunDevelopment in #2494, #2498
  • Allow handles for "Merge Spritesheet" number inputs by @RunDevelopment in #2499
  • Rename "Strengthen Normals" to "Scale Normals" by @RunDevelopment in #2500

New Nodes

  • "Execution Number" node by @joeyballentine in #2433

Bug Fixes

  • Fix scale of Hq2X in output type by @RunDevelopment in #2467
  • Fix NCNN model interpolation execution context by @RunDevelopment in #2468
  • Fix accent color for any outputs by @RunDevelopment in #2479

Other/Dev Changes

  • ONNX upscale reworked by @adegerard in #2417

Full Changelog: https://github.com/chaiNNer-org/chaiNNer/compare/v0.21.1...v0.21.2

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: https://github.com/chaiNNer-org/chaiNNer/compare/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: https://github.com/chaiNNer-org/chaiNNer/compare/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

  • Fix windows installer installing to the wrong place (#2219)
  • Fix PyTorch erroring when both CPU and FP16 modes were enabled (#2217)

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

  • Update PyTorch to 2.0.1 (#2143)
  • Update ONNX-related dependencies for better 3.11 support (#2153)

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

Alpha v0.18.9

I know I just did a release, but I couldn't wait to get this out. I finally fixed the broken windows installer :)

Bug Fixes

  • Fixed the windows installer not opening after install/update (#1830)
  • Fixed being unable to pass in electron-specific launch arguments to chaiNNer (#1830)
  • (unconfirmed) Fixed MacOS and Linux portable builds to be truly portable (#1829)

Alpha v0.18.8

Note: this is another reminder that the windows installer doesn't open after installing. It's a known bug we haven't been able to fix

Another small update with some bug fixes and a couple of new features.

Changes

  • Add FFv1 support to Video Frame Iterator (#1779)
  • (onnx) Add FP16 option for tensorrt (#1795)
  • (pytorch) OmniSR Support (#1804, #1813, #1815)

New Nodes

  • Pixelate (#1777, thanks @harisreedhar)
    • Pixelate an image, similar to Photoshop's "Mosaic" filter

Bug Fixes

  • Fixed bug with generating hashes after an upscale (#1797, thanks @Zarxrax)
  • Fixed a bug that would show invalid nodes in the right-click node-selector context menu (#1821)

Also, thanks to the following maintainers: @joeyballentine @RunDevelopment

Alpha v0.18.7

This is a small update with some new features and bug fixes.

Changes

  • Small performance optimizations (#1743)
  • Colors are now a data type and are selectable via color picker in many nodes (#1732)
  • Added missing previewing features on Text Areas (#1766)

New Nodes

  • Generate Hash (thanks @Zarxrax) (#1738)
  • Z-Stack Images (thanks @JustNoon) (#1745)
  • (webui integration) Image Upscale (thanks @mateusz) (#1692)

Bug Fixes

  • (webui integration) fixed caching not respecting image changes (#1762)
  • Fixed Fill Alpha causing errors in certain chains (#1768)
  • Fixed iterators not properly catching certain types of errors (#1771)

Also thanks to the maintainers who contributed to this release: @joeyballentine @RunDevelopment

Alpha v0.18.6

This is a slightly bigger update that didn't quite qualify for a major version number. It includes lots of bug fixes and a few new highly-requested features.

Changes

  • Changed some node ordering and group names (#1679)
  • Add weight support to CodeFormer when using Face Upscale (#1714)
  • Add ETA to iterators (#1730)
  • Optimizations (#1710, #1717)
  • Rename Spritesheet Iterator's dimension inputs (#1716)
  • Only show the "Separate Alpha" option for RGBA images (#1721)
  • Better generated error reports (#1724)
  • Removed the "disable hardware acceleration" option, and always disable hardware acceleration (#1722). A user noticed that having it off significantly improved upscaling times, so we figure there is no reason to use it (all of us devs have had it off). If you need an override because disabled hw acceleration is causing issues, please let us know.

Bug Fixes

  • Fixed a bug with Combine RGB if no alpha channel was given (#1715)
  • Fixed some bugs with output normalization (#1717)
  • Fix ESRGAN-2c2 scale detection for lower scales (#1712, #1729)
  • Fix "isDestroyed" startup errors (#1724)
  • Fixed SD nodes not having text input handles (#1728)
  • Fixed "Copy audio" when input video does not have an audio stream (#1733)
  • Added support for using a later version of PyTorch when using system Python with 3.10, as previously it would just fail (#1672)

Thanks to the maintainers that contributed to this release: @joeyballentine @RunDevelopment @theflyingzamboni

Alpha v0.18.5

This is a small bugfix release that addresses a few issues some users noticed since the last release.

Changes

  • Add ISNet support to ONNX background removal (#1706)

Bug Fixes

  • Fix ONNX RemBG node error (#1706)
  • Fixed iterators constantly reloading starting nodes (#1702)
  • Fix "dynamic scale" (they aren't really dynamic scale, but they act like it) realesrgan NCNN models (#1698)
  • Fixed image dimensions in error messages (#1701)

Thanks to the contributing maintainers: @RunDevelopment and @theflyingzamboni

Alpha v0.18.4

This version fixes a critical error that many people have experienced trying to install chaiNNer today, as well as adds a bunch of small new things and fixes some other bugs. While this is a smaller release, big things are coming soon :)

Changes/Additions

  • Allow numbers as seeds (#1633)
  • Reload starting nodes on file change (#1640)
  • Various optimizations (#1653, #1664, #1667)
  • Ctrl+Click on export button to export viewport to clipboard (#1658)
  • Added model directory output for NCNN Load Model (#1663)
  • Added blur noise to Create Noise (#1669)
  • Added support for 2C2-ESRGAN architecture in PyTorch Load Model (#1670)
  • Larger settings modal (#1675)

New Nodes

  • Parse Number (#1621, thanks @JustNoon)
    • Parses numerical text into a number
  • High Pass Filter (#1630, thanks @harisreedhar)
    • Performs a high pass filter on an image

Bug Fixes

  • Fixed issue with backend starting up that started recently (#1695)
  • Fixed overlapping handle connect radius (#1637)
  • Fixed a bug connecting to SD webui (#1648)
  • Fixed tiling for grayscale images (#1668)
  • Fixed device detection for M2 Macbooks (#1674)

and as always thanks to the maintainers that contributed to this release: @joeyballentine @rundevelopment @adodge

Alpha v0.18.3

This is a hotfix to fix an issue affecting all stable diffusion nodes.

Bug Fixes

  • Fixed issue causing Stable Diffusion nodes to not work (#1623, thanks @adodge)

Alpha v0.18.2

NOTE: This is another reminder that the installer still has an issue that makes chaiNNer not open automatically after install. It does still install, so just open it manually after.

This update addresses a few bugs, but mostly adds a few cool nodes.

Minor Changes

  • Consistent UI font between platforms + switch to using Open Sans (#1610, #1614)
  • Seeds are now their own datatype rather than numbers (#1611)

New Nodes

  • Text Slice (#1580)
    • A node for getting a substring of text
  • Text Length (#1580)
    • A node for getting the length of text
  • Round (#1603, thanks @adodge)
    • A math node for performing rounding operations
  • Derive Seed (#1611)
    • Use various sources to derive a seed for use with nodes that deal with randomness
  • (PyTorch) Guided Upscale (#1506, #1616)
    • Based on PixTransform, guided upscaling upscales an image based on another
    • For example, you can use a high quality diffuse texture to upscale a lower quality normal map of that texture

Bug Fixes

  • Fixed running MAT on GPU (#1599)
  • Fixed loading SRGB DDS (#1606)
  • Fixed being able to drag on the + button on some nodes (#1607)

And thanks to the normal maintainers, @joeyballentine @RunDevelopment

Alpha v0.18.1

NOTE: The installer still doesn't open after it is done installing. It does still install, so just manually open it after. We are still working on fixing that.

This is a small update which addresses some issues and adds a few features.

  • Don't forget to check out the previous changelog if you havent already updated to 0.18.0.

Minor Changes

  • Better SD url detection (#1588, thanks @adodge)
    • Now compatible when the SD webui is running under --nowebui and TLS
  • (PyTorch) Add MAT support to inpainting (#1596, thanks @theflyingzamboni)

New Nodes

  • Create Noise (#1585, thanks @adodge)
    • Create images made up of Value/Simplex noise

Bug Fixes

  • Fixed iterator child nodes appearing underneath an iterator when the iterator was selected (#1593, thanks @joeyballentine)
  • Fixed SD not working on macos (#1588, thanks @adodge)

Alpha v0.18.0

NOTE: The windows installer still doesn't open after it is done installing. It does still install, so just manually open it after.

A huge requested feature is finally here! (well, kinda). Stable Diffusion support was something I've wanted to add for a while. However, I never thought I'd be able to match the experience from the AUTOMATIC1111 webui. Luckily for us, @adodge thought of a brilliant workaround for that: Just use the webui. Specifically, the webui's API. This way, we wouldn't have to set up any new dependencies or worry about integrating the code incorrectly -- it would just work. The only problem with this approach is it does require you to run the webui in api mode (by running ./webui.(sh|bat) --api before chaiNNer starts up. This will make a new category with the SD nodes appear. At the moment adodge is looking into an internal implementation, but for now this works pretty well.

There's plenty of other new features in this update as well, such as inpainting support (both via opencv and LaMa), rembg support, a bunch of new nodes, and more. See the full changelog below:

Major Changes

  • Stable Diffusion support via the AUTOMATIC1111 webui API (#1500, #1540, #1553, #1559, #1562, #1557, #1575, #1586, #1583 thanks @adodge)
    • Adds Stable Diffusion support to chaiNNer by running the webui in API mode
    • Supports Text-To-Image, Image-To-Image, Outpaining, and clip interrogation
  • Node recatigorization (#1576, #1581)
  • LaMa inpainting support (#1569)
  • RemBG background removal support (#1533)

New Nodes

  • The external Stable Diffusion nodes mentioned above.
  • Color Levels (#1532, thanks @harisreedhar)
    • Color levels adjustment similar to Gimp and Photoshop.
  • Dither & _Dither (Palette) (#1502, thanks @adodge)
    • Dither an image, either by number of colors or with a specified palette.
  • Palette From Image (#1502, thanks @adodge)
    • Generates a palette from an image, to be used with dithering.
  • Convert Normal Maps
    • Allows conversion between DirectX and OpenGL normal maps, as well as to and from the octahedral normal map format used by RTX Remix
  • Inpaint (#1546, thanks @harisreedhar)
    • Uses a mask image to inpaint. This is not an AI inpainting node, but something more similar to content aware fill.
  • Create Gradient (#1544, thanks @adodge)
    • Generates a grayscale gradient with a variety of options, which can then be colorized using the LUT node.
  • Signed Distance Field (#1552, thanks @adodge)
    • Can be used to create low-resolution textures that can be scaled up rendered at a higher resolution with fewer artifacts.
  • Dilate & Erode (#1565, thanks @harisreedhar)
    • These two nodes work similarly to the dilate and erode features in Gimp and Blender.
  • (PyTorch) Inpaint (#1569)
    • Inpaint using the LaMa model, which performs significantly better than the opencv implementation used in the normal Inpaint node.
  • (ONNX) Remove Background (#1533)
    • Remove the background of an image using .onnx RemBG models.

Minor Changes

  • Added option to duplicate node with input connections (#1541)
  • Slightly improved type error messages (#1542, #1579)
  • Rearrange inputs on upscale nodes for consistency with other nodes (#1539, thanks @Zarxrax)
  • Added "export viewport to clipboard" in the file menu (#1550)
  • Added more DDS output format options (#1555)
  • Added "Copy Audio" toggle for video iteration (#1563)
  • Added "Use Pip Directly" toggle in the dependency manager (#1560)
  • Changed the design of resize handles (#1584)
  • Create node on enter in search pane, when only one node is an option (#1578)

Bug Fixes

  • Fixed the bug that would cause TextAreas (like what is used in the Note node) to randomly get much larger (#1582)

And of course, thanks to the maintainers: @joeyballentine @RunDevelopment @theflyingzamboni

Alpha v0.17.1

NOTE: As a reminder, the windows installer still does not open after installing anymore. It still does install though, so just manually open it after installation. We are actively investigating why this happened.

This update includes some new nodes, a quality-of-life improvement related to stopping execution, even more portability, and a bit more. See the full changelog below:

Minor Changes

  • Long-running upscales can now be stopped, without chaiNNer seeming to hang (#1521)
  • Added DDS option for separating alpha (#1510)
  • Slight styling changes for slider input numbers (#1504)

New Nodes

  • Random Number (#1499, thanks @Zarxrax)
    • Allows using a randomly generated number for number inputs
  • NCNN Model File Iterator
    • Similar to the PyTorch model file iterator, these allow you to iterate over folders of NCNN models.
  • ONNX Model File Iterator
    • Ditto above, but for ONNX
  • Lens Blur (#1516, thanks @harisreedhar)
    • Applies lens blur to an image

Bug Fixes

  • Fixed RGBA DDS loading (#1514)
  • Fixed chaiNNer closing when visiting the update link, or dismissing the box (#1518)
  • Fixed some missing portability when using a portable zip (#1523, #1530)

And of course, thanks @joeyballentine and @RunDevelopment

Alpha v0.17.0

NOTE: with this release it seems chaiNNer no long automatically opens after installing an update -- don't worry though, the installer still works.

This update adds a few somewhat important dependency updates for system compatibility reasons, as well as a few major new features, and lots of minor ones.

I'll keep this brief this time, and just have you read the changelog below:

Dependency Updates

  • ONNX -> 1.13
    • With this update, ARM (M1/M2) MacOS users can now use ONNX, since this update provides an arm64 MacOS version. This means you can properly convert to NCNN through ONNX.
  • OpenCV -> 4.7 (automatic)
    • Usually I don't mention dependencies that update automatically, but I wanted to mention this one specifically -- because now we should theoretically support MacOS versions under 10.15, specifically to 10.13 now. This has not been officially tested by us, but it should work. We probably scared away all the < 10.15 people by now, but if any of you see this, please give it a try now.

Major Changes

  • CLI Mode (#1469, #1470, #1468, #1489, #1492, #1494)
    • This was our first-ever commissioned feature, so thanks to Flaviu Radulescu for funding this feature.
    • This feature now allows you to execute chains from the command-line, without needing the GUI to run. This includes being able to override inputs for easier chain reuse.
    • Documentation can be found by running chainner run --help in the command line.
  • True portability for zip builds (#1484, #1487, #1489)
    • ZIP builds were never truly portable as integrated python, settings, and a few other things were saved to appdata. Now, these will download & save to the root directory of the exe.
    • If you don't want this functionality, simply delete the portable file that is now present in the zip builds.
  • Improved startup speed (#1468)
    • chaiNNer now starts up significantly faster than it used to (assuming it has already gone through first-time setup and updates)

New Nodes

  • Image Convolve (#1442, thanks @JumpyJacko)
    • Runs arbitrary convolution with a user-defined kernel
  • Metal to Specular & Specular to Metal (#1457)
    • Converts metal/specular maps to specular/metal maps
  • Number & Text
    • These nodes allow easy re-use of numbers or text between nodes
  • Apply LUT
    • You can now apply a Look-Up Table (LUT) to images

Minor Changes

  • Support for mode DDS formats (#1471)
    • This is specifically DXT1, DXT3, and DXT5. This is still a Windows-only feature.
  • Improved JPEG saving options (#1480, #1483)
    • This includes adding a chroma subsampling dropdown as well as a "progressive" option
  • Allow dragging videos into chaiNNer for loading like images/models (#1488)
  • Enhanced type tag size (#1404, #1478)
  • Added output alpha option to Change Colorspace (#1405)
  • Made directory and file name output types immediately computed (#1408)
  • Added angle addition method for normal maps (#1409)
  • Better error message when loading a PyTorch model fails (#1433)
  • Add seed input to Add Noise node (#1444)
  • Made the output type for Math node a bit better (#1452)
  • Improved some type error messages (#1493)
  • Improved logging (#1495)

Bug Fixes

  • Fixed a small issue with number input width (#1443)
  • Fixed potential errors caused by manually clearing PyTorch memory during out-of-vram events (#1456)

And as always thanks to the maintainers: @joeyballentine @RunDevelopment @theflyingzamboni

Alpha v0.16.1

This is just a minor update which includes a couple of fixes and QOL improvements. Make sure to check last version's changelog if you haven't grabbed that version yet.

Minor Changes

  • Better execution time formatting (#1392, #1394)
  • Increase default codeformer weight to 0.7 (#1381)
  • Replaced some true/false dropdown inputs with checkboxes (#1377)
  • Changed max of Add Normals amount to 200% (#1398)

Bug Fixes

  • Made text of dropdown options larger (#1375)
  • Fixed DDS rename not working across drives (#1376)
  • Removed broken window menu from menu bar (#1386)
  • Fixed some errors not showing in the UI (#1407)

As always thanks to @joeyballentine @RunDevelopment and @theflyingzamboni for contributing to this release.

Alpha v0.16.0

This is a pretty big update with some noticeable changes and improvements, including a design overhaul and many quality-of-life features.

Major Changes

  • Major UI improvements (#1305, #1326, #1302, #1313, #1314, #1330, #1340)

    • The first thing you might notice in this version is a bit of a redesign. Nodes have been majorly overhauled to be much more compact. While it might be a bit of a shock how different it looks at first, I guarantee you'll quickly get used to it and prefer this new look. The compactness of the nodes gives you much more space to fill out your chains with, and there is just a lot less wasted space overall. Check out this comparison of the space used by the old vs the new nodes
    • With this compactness change also came a change to sliders. In my opinion, they are now a lot easier to see and interact with, and are closer to something like you'd see in blender.
    • There have also been changes to pop-up boxes. Settings had a bit of an overhaul to fix some scrolling issues, and all pop-ups now have a darker color. Alerts also got icons representing the type of alert.
  • Node-on-Connection insertion (#1231, #1341)

    • Something we all have always wanted in chaiNNer was the ability to insert a compatible node in-between two connected nodes, without having to delete the connection and make two new ones. Well, now this is a reality. All you have to do is hold alt while dragging a node in the editor, and both the node and the connection line will visually show you that the node is able to be connected this way. It's really convenient to be able to insert nodes into existing chains this way, and can save a lot of time.
  • Informing you about invalid connections (#1299, #1306, #1308)

    • The UI now will inform you when a connection you are trying to make is invalid. Before, we would tell you why a node was invalid after it was already connected and then made invalid. However, we had never explained why some connections were not possible to begin with. This had confused many users as they would try to do things like connect a GFPGAN model to Upscale Image and think there was something wrong rather than it being something intentional. While the UI would not let these users make that connection, it would not tell them why. This update adds an explanation tooltip that explains why a connection can't be made as you attempt to drop the connection on a handle. This should hopefully improve the user experience and lead to less confusion when this happens.
  • Increased View Image preview resolution (#1290, #1342, #1351)

    • View Image just became a lot more useful. Now, instead of seeing only a 512x512 preview of your image, you will see a maximum of 2K resolution when zoomed in to the max. This still isn't ideal for extremely large images (larger than 2k) where you need to zoom in even more than chaiNNer allows, but a feature for that will be coming in the future. For now, this is a huge improvement and makes in-line previewing much much better. We also improved the performance of the node, so you may notice previews loading a bit faster than they used to.
  • Better DDS Support (Reading & writing, Windows only) (#1266, #1356)

    • With this update, previously unsupported DDS textures files can now be read and written on Windows. We make use of Texconv, which is a small texture utility that we now bundle with chaiNNer. Unfortunately, Textconv is Windows-only, meaning Linux & MacOS users will not be able to take advantage of this. But we figured it was still better to have it than not.

Minor Changes

  • CodeFormer support (#1327)
    • This Face Upscaling architecture was highly requested to be added, and now you can use it in chaiNNer with the Face Upscale node.
  • NCNN Optimizer (#1259)
    • NCNN models now get optimized on load as well as on convert, which can save help them save a little bit of time when upscaling. For most models, this will only be minute optimizations, but for batch upscaling it can save quite a lot of time overall.
  • Show current overall execution progress on taskbar (#1343, #1365)
  • Made amount input a slider in High Boost Filter (#1288)
  • Added amount and threshold inputs for Unsharp Mask (#1293, #1294)
  • Added the ability to cache ONNX TensorRT conversions (#1287)
  • Added a context menu for multi-node selections (#1289)
  • Added Ko-fi donation button to header (#1300)
  • Improved Convert Colorspace node to be more generalized for alpha modes (#1322)
  • Add .avs support to the video selection menu (#1345)
  • Allow users to select alert text (#1349)
  • Support node-search context menu in iterators (#1369)

New Nodes

  • Create Color (#1285)
    • Three new nodes that allow you to create single-color images in RGB, RGBA, or Grayscale.
  • Surface Blur (#1292)
    • This node blurs an image using a bilateral blur filter, also known as "surface blur."

Bug Fixes

  • Fixed picking a custom python path (#1283, #1284, #1315)
  • Fixed FaceSR (GFPGAN, RestoreFormer) and Transformer-model (SwinIR, HAT, Swin2SR) interpolation (#1281)
  • Fixed the file select window prompting you to create files when opening directories that do not exist (#1282)
  • Fixed the integrated FFMPEG download error to just be a warning (#1279)
  • Fixed blurry checkers in image preview (#1320)
  • Fixed being able to select text in file and directory inputs (#1331)
  • Fixed opening a file with chaiNNer while an existing chaiNNer instance is already open (#1344)
  • Fixed exact-size ONNX models not being properly run (#1336)
  • Disallow negative crop values (#1350)

Experimental Features

  • While not enabled/disable behind the experimental features setting, both Apple MPS (via pytorch-nightly) and Microsoft DML (via pytorch-directml) support should theoretically work with a proper environment set up through your system python. People who have tried to set this up have had issues though, and ultimately I need more people to test this before I can officially say we support these things. However, if you want to test it yourself and know how to set these things up, feel free to give it a go and report back to us. (#1280, #1359)

As always, thanks to @joeyballentine @RunDevelopment and @theflyingzamboni

Alpha v0.15.3

Theoretically, all model loading should now be fixed. However, if you are still running into models that previously worked but are now broken, let us know ASAP.

Bug Fixes

  • Fixed another missing torch type when loading a model, which caused certain models to not load properly (#1272)

Experimental Features

  • Fixed iterator child node positions when placing presets (#1264)
  • Fixed presets not being recorded in undo history properly (#1270)

Alpha v0.15.2

Just a quick bugfix since we accidentally broke loading certain models in the last release. You don't really need this version unless you plan on using SwinIR, Swin2SR, or HAT. To see the previous changelog, go here.

Bug Fixes

  • Fixed model loading for certain models being blocked by the new restricted loader (#1263)

Thanks @theflyingzamboni for fixing that

Alpha v0.15.1

Major Changes

  • Viewport Export (#1243) (thanks @Sryvkver)
    • Export the current chain as a PNG using the bottom-most button in the button panel located at the bottom left of the chain editor.
  • Ctrl+D now duplicates selected nodes (#1252)

Minor Changes

  • Added a context menu for connections (#1255)
  • Blur and sharpen nodes have been reorganized and renamed (#1254)
  • Iterators now have a "resize" indicator (#1257)

New Nodes

  • Add Noise (#1251)
    • Add different types of noise to an image
  • High Boost Filter (#1254)
    • A more traditional type of sharpening

Bug Fixes

  • Fixed face upscaling causing broken video outputs (#1246)
  • Fixed unsaved changes dialog box having extraneous &s on Linux (#1249)
  • Fixed categories not hiding when a search would return no results for that category (#1253)
  • Patched a security vulnerability

And thanks to the usual contributors, @joeyballentine @RunDevelopment @theflyingzamboni

Alpha v0.15.0

This update contains a decent amount of quality-of-life changes. We have some new systems in place for making the experiences with inputs better (which will be brought to more nodes in the future), as well as some general UX improvements.

We also now have an opt-in experimental features setting that we are starting to use in order to get feedback on unfinished features, but without interrupting the regular experience of chaiNNer.

Major Changes

  • Variable-length inputs (#1176, #1184)
    • Now certain nodes can have more than just 4 inputs, with a button that lets you add more.
    • This is limited to just Text Append and Text Pattern at the moment, but will be brought to more nodes in the future.
  • Conditional inputs (#1200)
    • Now certain nodes can show or hide some inputs based on things like items selected in a dropdown.
    • This is currently only present in the Save Image node, but will probably be used with more nodes in the future.
  • Experimental Features Toggle (#1142)
    • We now have a setting (in the advanced tab) for turning on "experimental features". This will opt you into using anything we deem "experimental" that is in chaiNNer but not quite ready for prime-time. I will list anything new that is experimental under a new Experimental Features heading in the changelog.

Minor Changes

  • Drag N' Drop support for more filetypes (#1215)
    • This mainly includes all model file types (.pth, .param/.bin, .onnx)
  • Added "WEBP (Lossless)" option to Save Image (#1186)
    • We had previously accidentally made it impossible to save lossless WEBP, and now you can
  • Better "Save Changes" popup (#1191)
    • The "Save Changes" dialog box that appears when you try to quit with unsaved changes is now a more standard format, with "Save", "Don't Save", and "Cancel" options.
  • Show the current position of alerts in the alert box queue (#1193)
  • Added menu entry for manually reloading/refreshing starting nodes and their previews (#1194)
  • Added "Copy to clipboard" button for all alerts (#1203)
  • Added type tags to strings and directories (#1216, #1226, #1244)
  • Changed placeholder text on some inputs (#1223)
  • Added custom installation animation on Windows (#1230)
  • Moved update check to after the main window opens (#1232)

New Nodes

  • Normal Map Generator (#1181, #1208)
    • Generate Normal Maps from images, with a variety of customization options similar to Nvidia Texture Tool

Experimental Features

  • Presets (#1142, #1240, #1241)
    • We now have some built-in bundles of nodes that we figure could be useful for setting up a variety of chains. However, they are not what we would consider feature complete yet (hence why they are behind the experimental features toggle). We would like to hear feedback from users as to what they think would be helpful (for example, clusters of nodes they tend to use all the time) and we can change/add presets accordingly. There is also still a lot of UI to be done around these, but they are at least usable at the moment.

Bug Fixes

  • Fixed being unable to read MKV video duration (#1189)
  • Fixed saving as GIF in Save Image (#1201)
  • Fixed pressing arrow keys inside text and number inputs moving nodes around (#1205, #1212)
  • Fixed FP mode not being loaded correctly for NCNN (#1210)
  • Disable shortcuts while alerts are open (#1214)
  • Fixed clear not affecting text inputs (#1217)
  • Fixed iterator helper node type persistence (#1222)
  • Reset invalid dropdown values (#1227)
  • Fixed supported video format list in file open window (#1242)

Thanks as always to the main contributors: @joeyballentine @RunDevelopment @theflyingzamboni