Alpha v0.10.0
This is a pretty exciting update for chaiNNer! The first thing you might notice is all the new colors, but it's a lot more than just a new look. As a result, I will be going over this changelog in a bit more detail than usual.
New Type System
This update features a major overhaul of types. If you aren't a programmer or just aren't familiar with types, they're the reason chaiNNer doesn't let you connect an image output to a model input. Model and images are different types, so they aren't compatible. Previously, types were extemely simple. Without getting too technical, types were simply the name of the type (e.g. model
or image
) and types were compatible if they had the same name. Now, chaiNNer has a brand new type system called "Navi" with set-theorey-based types. These types are much more powerful and enable lots of things that would have been impossible before. E.g. inputs can now accept multiple types, and image inputs can now require the connected image to have a certain number of channels (e.g. RGB or RGBA). Per-node validation has also been improved, and now we are able to show you the output size of almost every image output without even having to run anything.
So you might be wondering to yourself: "I didn't even know types were a thing before, I just kept trying to connect things and guessing what went where. How exactly does this make anything better for me?"
Well, wonder no more. Each handle now has a dedicated color for each main type. This means that with a quick glance, you can now see what can be connected to what. E.g. images are yellow, numbers are blue, PyTorch models are orange. It should be pretty easy now to be able to see what can be connected where. Furthermore, as soon as you start dragging a connection out, any incompatible connections turn gray and slightly transparent. This way, you will always 100% know what is connectable and what isn't.
And speaking of connecting things easily...
Node Selector Context Menu
A highly requested feature, chaiNNer now has a context menu that will show up both when right-clicking in the blank space of the editor, as well as when dragging a connection from a node to the blank space. This context menu allows you to quickly find a node to place at that position, and automatically connect it (in the case of dragging a connection to the canvas). It also filters the node list automatically based on the type of the input or output you dragged from! It makes setting up chains far easier than before, to the point where I've been told by someone it makes the regular node selection panel obsolete for them. I highly recommend you play around with this, as it really can speed up making a chain.
Disabling Nodes
Another big new feature is the ability to disable nodes. You may notice now that every node has a little toggle in the bottom left corner (as well as an entry in the right-click context menu) for disabling/enabling a node. Disabling a node will prevent it from running in the chain, so now you can have floating nodes not connected to anything without worrying about getting errors. Disabling a node will also disable any nodes connected downstream from it, so it should be pretty easy now to temporarily turn off parts of a large chain.
Full Changelog:
New Features
- UI Redesign
- Both dark mode and light mode have some coloring & shading changes that make chaiNNer look a lot better (especially light mode).
- Node headers now have an accent color gradient, making nodes of different categories easier to differentiate.
- Running edges now feature a moving "chain" design rather than a traditional "crawling ants" design.
- Input & Output type colors on handles
- Input and output handles are now colored according to their types
- When connecting, invalid connections are now grayed out and semi-transparent
- Node selection context menu
- Right-click in the editor to open the pane, or drag a connection out to nothing
- Disabling nodes (thanks @RunDevelopment)
- Disable nodes and their downstream connections
- Node outputs now show special type information in "type tags" (thanks @RunDevelopment)
- Some nodes will now show type-related warning messages in the footer validation (thanks @RunDevelopment)
- New type system (thanks @RunDevelopment)
- The new internal system for handling input & output types that enables all the new type-related features to happen
- Allow numbers in some text inputs (thanks @RunDevelopment)
- "Copy File Name" and "Copy Full File Path" context menu entries on file selecting nodes (thanks @RunDevelopment)
- Optional inputs now have an indicator
- Edge "running" animations can now be disabled in settings to decrease CPU usage (thanks @RunDevelopment)
- Remember node selector panel collapse state (thanks @RunDevelopment)
- Running nodes now show a spinner in the footer to help show if a node is still running or not
- Allow selecting multiple nodes by holding down control (command on macOS)
New Nodes
- Text Pattern (thanks @RunDevelopment)
- Allows complex text formatting in a more versatile way than Text Append
- Crop (Content) (thanks @theflyingzamboni)
- Automatically crop an image with transparency to the opaque bounds
- Get Model Scale (thanks @RunDevelopment)
- Similar to Get Dimensions, this allows you to get the scale of a model to use as a number or text
- ONNX Save Model (thanks @theflyingzamboni)
- Since Convert To Onnx now converts directly to an ONNX model, this node is now necessary to save it.
Changes to existing features
- Convert To Onnx now converts directly to an ONNX model without having to go through a file first (thanks @theflyingzamboni)
- Added "tile size target" to NCNN's Upscale Image node
- This is completely optional (leave at 0 for current behavior), but allows people to bypass the auto-tiling when it gives them issues (mainly for some AMD users)
- Added "Fill color" dropdown for Shift node (thanks @theflyingzamboni)
- Added "Tile mode" option to Tile Fill node (thanks @RunDevelopment)
- ONNX upscaling now supports NHWC-shape models instead of only NCHW-shape
- Nodes inside of an iterator now have a slightly different header border, which should make them easier to tell them apart when zoomed out.
Bug Fixes
- Fixed chains not loading the saved viewport position
- Fixed Add Caption inverting colors (thanks @theflyingzamboni)
- Fixed dark mode not being set on startup
- Made window resizing more performant
- Nodes that get optimized out and will never run will now not show their edges as animating (thanks @RunDevelopment)
- Fixed iterator deleting not removing connections to nodes outside the iterator