1.3.0
Added
- • Dockable panels: drag panel title bars to rearrange the layout, save it between sessions, and lock everything in place via Window > Lock Layout.
- • Pop any panel out into its own OS window for multi-monitor use, with per-panel Always on Top toggles.
- • Window menu lists every panel with show/hide toggles, plus Reset Layout and Lock Layout entries.
- • Ctrl+Shift+L, Ctrl+Shift+P, and Ctrl+Shift+I toggle the Library, Preview, and Properties panels; each shortcut is shown next to its Window menu entry.
- • Workspace presets (Window > Workspace): Default, Big Graph, and Vertical built-ins, plus Save Workspace As... and Manage Workspaces... for custom layouts.
- • Application Log and Generation Log are now dockable panels.
- • Windows: dragging an image directly out of a Chrome, Edge, Brave, or Vivaldi tab into the canvas now creates an Image In node; unsupported formats surface a toast instead of failing silently.
- • Per-monitor DPI scaling: text and UI chrome rescale cleanly when a popped-out panel moves between mixed-DPI displays.
- • Drop a node onto a wire to splice it in: the wire under the cursor highlights and both halves rewire as a single undo step.
- • Shake a node while dragging to disconnect every wire from it; upstream and downstream are bridged automatically where possible.
- • Node graph snapping: dragging a node aligns its edges to nearby nodes with dashed guide lines and snaps it into evenly-spaced runs marked by double-arrow badges; hold Ctrl to move freely.
- • Ctrl+Plus / Ctrl+Equal / Ctrl+Minus (numpad too) zoom shortcuts on the Node Graph and Preview, with matching View menu entries.
- • View > Hide Thumbnails (Lazy Eval) toggle: hides every on-canvas thumbnail and only evaluates the selected node's chain, with a status-bar indicator.
- • Selected node is now saved with the project and restored on reopen.
- • Settings > Privacy shows a Machine ID preview; the install ID used for anonymous telemetry is now stable across settings wipes.
- • Help > Join Discord opens the ArcBrush Discord server in your browser.
- • Ctrl+R swaps two selected nodes, trading positions and rewiring connections by pin name.
- • Arrange node accepts any number of input images via a variable-count pin array.
- • Settings > Display: Wire Curving slider controls how much Curved wires bend (range 0 to 10, default 4).
- • Hold Q on the Node Graph to bring every wire on top of the nodes in a high-contrast overlay for tracing connections.
- • Layer node: composite any number of inputs as a layer stack with per-layer blend mode, opacity, and visibility; drag rows in Properties to physically reorder the wires on the canvas.
- • Film Grain node: per-channel analog film grain with eight stock presets (Kodak Vision3 250D/500T, Portra 400, Tri-X 400, Cinestill 800T, Fuji Eterna 250, Ilford HP5+, plus Custom) and an optional mask.
- • Halftone node: dot screening with five spot shapes (Round / Square / Diamond / Line / Ellipse), three color modes (Grayscale / RGB / CMYK), eight presets, and an optional mask.
- • Multi-node connect: with several nodes selected, drag from one of their output pins onto an array input to fan the whole selection into consecutive pins, or onto empty canvas to add a new Arrange / Layer / Collect node already wired to every selected output.
- • New nodes get a unique number appended to their name on creation (e.g. Channel Merge 1, Channel Merge 2); custom labels remain optional and counters survive save and reload.
- • Right-click a file-referencing node (Image In, SVG Import, Export Image, Export Batch) for a Reveal in Explorer / Finder entry that opens your OS file manager.
- • Transform, Text, Mesh Warp, and Corner Pin nodes expose Blend Mode and Opacity controls when Output Mode is set to Composite.
- • View > Zoom to Selected (F hotkey) frames the selected nodes, groups, and sticky notes; with nothing selected it fits the whole graph.
- • AI Remove Background: Ideogram (illustrations / art / typography) and Pixelcut (product / studio photography) engines, both at the same flat 1 credit per image.
- • AI Text to Image: new GPT Image 2 tier with six output sizes (1024x768 to 3840x2160) and three quality levels (Low / Medium / High).
- • AI Image Edit: new GPT Image 2 Edit tier with Auto (match input) plus the same six size presets and three quality levels.
- • AI Image Edit: FLUX.2 Pro and FLUX.2 Max expose an Output Size combo (Auto plus six presets) to control per-megapixel cost.
- • Batch processing: wire a batch output into any image-consuming node and the graph evaluates every frame through it automatically. Build pipelines that process an entire folder of images through chains of filters, color corrections, and exports in one pass.
- • Insert any filter (Blur, Levels, Sharpen, Posterize, Drop Shadow, etc.) between Palette Remap and Export Batch; each variant flows through the filter and re-bundles automatically. AI nodes still gate behind their Generate button.
- • Export Batch node body shows a live file-write progress bar while a run is in flight, so progress is visible without keeping the parameter panel focused on the node.
- • Package as Zip success dialog has a Reveal in Explorer / Finder button next to OK that opens your OS file manager with the .zip selected.
- • Reroute node: double-click any wire to insert a compact routing dot that passes the signal through unchanged. Chain multiple reroute dots for cleaner paths, and fan out from one reroute output to several selected nodes at once.
- • Batch processing shows a live progress bar on each node body during evaluation, displaying frame count and completion status.
- • AI batch confirmation: when AI nodes receive batch input, a confirmation modal shows total cost (with cache hits pre-deducted) before dispatching, with per-frame caching and one-click retry for failed frames.
- • Collect node: bundles any number of IMAGE inputs into a single batch output with per-frame names and drag-to-reorder.
- • Image Folder node: loads all images from a folder as a batch, with file type filtering, recursive scan, sort by name/date/size, and a frame limit for testing.
- • Input pins fed by a batch source show the frame count on the pin label (e.g. "image (x4)").
- • Split Batch node: decompose a batch back into individual images or sub-batches with four modes (Individual outputs, equal Chunks, contiguous Slice, or glob-pattern Filter routing). Output pins rebuild dynamically as you switch modes.
- • Sprite Sheet and Export Batch: trim transparency, extrude edge pixels (1-8 px) to prevent texture bleeding, and constrain output dimensions to Power of Two, Multiple of 4, or Word Aligned.
- • Sprite Sheet: Show Outlines toggle draws colored sprite bounds in the preview panel, and the output size label appears in the parameters panel.
- • Export Batch: configurable filename template with tokens for frame name, source label, index, dimensions, date, node label, and graph name. Live preview of the resolved filename below the template field.
- • Export Image: output path field supports the same filename tokens; hovering shows the expanded path in a tooltip.
- • Drag a folder from the OS file explorer onto the node graph canvas to create an Image Folder node with the folder path pre-filled.
- • Optional input pins render as hollow shapes to distinguish them from required pins at a glance.
- • Settings > Performance: batch concurrency cap and memory ceiling sliders control how many batch frames run in parallel and when frames spill to disk. The memory ceiling defaults to half of your installed RAM and the slider scales to your machine, so large-memory systems are not throttled and low-memory systems are not overcommitted.
- • Chromatic Aberration node: per-channel radial dispersion simulating lens chromatic aberration, with Radial (vignette-style center falloff) and Uniform (fixed-angle shift) modes, and a Shift/Smear method toggle for clean separation or motion-blur-like channel streaking.
- • Batch preview: Magic Wand, Vignette, Gradient, and Transform / Crop / Smart Scale handles now work while previewing a single frame of a batch, track whichever frame you are viewing, and apply edits across every frame.
- • Smart Scale: target width and height accept px or % units; % scales each frame to a percentage of its own size, so a varying-size batch scales proportionally instead of snapping to one fixed pixel count.
- • Pixel sliders (Crop, Smart Scale, Offset, Pad, and the like) turn the px toggle amber when a fixed pixel value will apply per-frame across a varying-size batch, hinting that % scales each frame proportionally.
- • Resize node: with a size_ref connected, match its width, its height, or both; matching one axis keeps the source aspect ratio.
- • Arrange Nodes menu (Edit > Arrange Nodes, also on the canvas right-click menu): Distribute spreads the selected nodes with equal spacing while keeping the outer nodes in place; Pack reflows the whole selection into a tidy line toward the left, right, top, or bottom with a constant gap (wider horizontally than vertically, to leave room for wires). Both also line the nodes up straight. Shortcuts: Ctrl+Shift+H and Ctrl+Shift+V distribute, Ctrl+Shift+Arrow packs toward that direction.
Changed
- • Settings > Interface: canvas snapping is now one Snap Mode selector (Snap to Nodes / Snap to Grid / None) with Snap to Nodes the default, so grid snapping is no longer on by default.
- • Align Horizontally and Align Vertically now live under the new Edit > Arrange Nodes menu.
- • Zoom to Fit moved from F to Ctrl+0 / Cmd+0; View menu labels updated to match.
- • Shake to disconnect now works with any number of selected nodes: drag a multi-node selection and shake to cut every wire crossing the selection boundary while preserving the internal connections.
- • Dragging a mixed selection of nodes, groups, and sticky notes now moves every selected item together as a single undo step, matching how alt+drag duplication already worked.
- • Crop, Smart Scale, Corner Pin, and Transform preview handles have larger grab zones, so handles flush against the panel edge are easier to land on.
- • Crop and Smart Scale: dragging a handle leaves the preview at its current zoom instead of refitting every frame, so the handles stop moving under the cursor as the output resizes. Press the toolbar Fit button to refit when done.
- • Panel layout is now built on a docking system instead of fixed left/middle/right columns; first launch after upgrade rebuilds to the new default.
- • Panel tabs read as Library, Node Graph, Preview, and Properties (previously the title bars were blank).
- • Menu items throughout the app align icons, labels, shortcuts, and check marks in columns.
- • Workspace and layout preset names now allow up to 128 bytes (was 64); built-in names (Default, Big Graph, Vertical) are reserved.
- • Reset Layout confirmation dialog closes with the Escape key, matching the rest of the app's modals.
- • Preview panel: switching to a different node while in Fit mode re-fits the new image and re-centers the pan instead of snapping to a fixed zoom stop.
- • Curved wires no longer overshoot on shallow-angle connections; backward connections still loop smoothly, and the new Wire Curving slider tunes bend strength.
- • Preview Locked badge now shows the locked node's name and updates live as you rename it.
- • Node Graph minimum zoom dropped from 10% to 5% so very large graphs frame in one view.
- • AI Text to Image and AI Image Edit: removed the Safety Tolerance slider; underlying value is set to the most permissive supported by each model.
- • AI Text to Image and AI Image Edit: model info card no longer duplicates the cost; the credit cost is shown only above the Generate / Edit button.
- • AI nodes: when your balance is short, the action button reads "Need X more credits to Generate / Edit / Run" and opens the purchase flow on click.
- • AI Text to Image and AI Image Edit: tier picker descriptions now match what each model is actually good at.
- • AI Remove Background: each entry in the Model combo carries a parenthetical hint (rembg fastest; Bria RMBG 2.0 default; Ideogram and Pixelcut high quality).
- • Dialog windows throughout the app share consistent padding, button sizing, icons, button order (Cancel left / affirmative right), Esc-to-dismiss, and stable width across every modal.
- • Color Balance and Black and White nodes: the gradient color sliders now support the middle-mouse ladder for fine adjustment, matching the rest of the app's sliders.
- • Palette Remap processes all palette slots in parallel, so batches with many variants finish faster on multi-core machines.
- • Batch filmstrip thumbnails render at their actual pixel size relative to the largest frame, so a 16x16 sprite appears smaller than a 64x64 in the same batch.
- • Batch node bodies show a dimension summary below the filmstrip (e.g. "512 x 512, RGBA, x47" or "mixed sizes, RGBA, x47") with an amber error count when frames have failed.
- • Batches with more than 128 frames show an ellipsis tile in the filmstrip instead of rendering sub-pixel cells.
- • Clicking a frame in the Preview panel highlights the corresponding filmstrip cell on the node body.
- • Preview panel tab strip for non-palette batches shows source labels in neutral gray instead of blank colored buttons.
- • Sprite Sheet packs mixed-size sprites into a near-square sheet using MaxRects bin packing instead of wasting space with a uniform grid. Existing uniform-size batches with an explicit column count produce the same layout as before.
- • Sprite Sheet JSON manifest matches the TexturePacker JSON Hash format for direct import into game engines.
- • Node body thumbnails, Preview channel view switches, and histogram computation run asynchronously, keeping the interface responsive during large batch processing.
- • Performance: eliminated a full-image memory copy at the end of every node evaluation, reducing allocation by hundreds of megabytes on large graphs.
- • Performance: Shape node grid rendering is parallelized across CPU cores for faster evaluation on large canvases.
- • UI elements throughout the app scale correctly at 125%, 150%, and 200% system DPI instead of rendering at fixed pixel sizes.
- • Layer node per-layer controls are split into a two-row card layout: identity row (drag, visibility, name, disconnect) above a property row (blend mode, opacity), so layer names are no longer truncated at narrow panel widths.
- • Node groups automatically resize to keep their contents enclosed, growing and shrinking as the nodes inside them change size and sliding neighbouring groups aside instead of overlapping.
Fixed
- • Image In: the Large Image warning now respects the node's Custom Size setting, so a 5000x5000 source resized to 512x512 on import no longer shows the warning.
- • Crop, Smart Scale, Corner Pin, and Transform manipulator handles stay inert when the node is bypassed instead of letting you drag invisible parameters.
- • Ctrl+F node-search popup hides and resets its matches when you open a new file or start a new project, instead of carrying over stale results.
- • Settings file is written atomically; a crash or power loss during save no longer wipes preferences.
- • A single malformed entry in
recent_filesorfavoritesinsidesettings.jsonno longer discards every other setting. - • Out-of-range window positions in a corrupt settings file fall back to OS default placement instead of putting the window off-screen.
- • Out-of-range zoom values in a project file are clamped to a safe range, and non-finite values fall back to 1:1.
- • Pasting a node from a version with unrecognized types now drops the unknowns with a toast instead of silently creating wrong-shape Canvas nodes.
- • AI Text to Image FLUX size presets: "1920x1080" and "1080x1920" labels now match what is actually requested.
- • Linux: dragging a window edge to resize on Wayland feels responsive again (the canvas now repaints at the end of the drag instead of live).
- • Linux: ArcBrush's app icon now appears in the taskbar, dock, and Activities overview on Wayland desktops (GNOME, KDE, Cosmic, Sway, niri).
- • Linux: opening a file dialog no longer triggers a "ArcBrush is not responding" prompt.
- • Linux: GPU acceleration turns on when OpenCL is available on your system; ArcBrush re-probes for OpenCL each launch when previously unavailable.
- • Paint node: stacking soft brush strokes no longer produces concentric rings of unrelated colors at iso-alpha contours.
- • Opening or creating a project no longer carries thumbnails or selection state over from the previously open project.
- • Drop-on-wire splice and the Y-key wire cutter now hit-test against the visible wire path when Wire Style is Right Angle.
- • 16-bit-per-channel TIFF, 16-bit WebP, and floating-point TIFF files now decode correctly instead of loading as solid white blocks.
- • Adding a node and immediately setting its initial values (Image In file path, palette slot colors, Canvas dimensions) is now part of the same undo step.
- • Changing UI Scale in Settings is now undoable; Ctrl+Z after a scale change restores the previous node positions and group bounds.
- • AI generations fail fast on a misconfigured proxy URL instead of stalling before reporting the error.
- • Noise node: scrubbing parameter sliders no longer leaves rectangular transparency bands through the preview, and previews refresh faster while scrubbing.
- • Shift+click on a sticky note body or resize handle, or a group's resize handle, no longer clears the selected nodes on the canvas.
- • Deleting an AI node while its generation is still queued on the server no longer deducts credits; deletions after the run has actually started still bill the run that was already in progress.
- • Settings > Performance: turning off GPU Acceleration now affects the running session; previously the toggle was silently ignored by worker threads, so older laptop GPUs that occasionally tripped an OpenCL error couldn't be worked around by disabling it.
- • Export Image no longer blocks the UI while writing the file to disk.
- • Clicking "Run" on an AI node while upstream is still evaluating no longer silently fails; the run is deferred until upstream completes.
- • Image In and SVG Import no longer crash on Windows when the file path contains CJK, emoji, or other non-ASCII characters.
- • Settings file save no longer crashes if the target path is locked by another process.
- • Stale recent file entries are pruned on startup instead of accumulating dead entries in the File menu.
- • Opening a malformed .arcb file skips bad entries gracefully instead of aborting the entire load.
- • Resize and Pad: wiring only the size_ref pin no longer passes the reference image through; the nodes now require an image input.
- • Linux Wayland: a file or image dropped onto the canvas now creates the node under the cursor instead of at a stale position.
- • Dropping several files onto the canvas in one drop is now a single undo step, instead of one undo per file.
Known issues
- • Linux Wayland: pop-out into a separate OS window is disabled because the protocol does not yet provide cross-display window drag; X11 (including XWayland) and Windows / macOS still support pop-out.
- • macOS: a popped-out panel does not follow you when you switch Spaces in Mission Control with "Displays have separate Spaces" enabled; use the Window menu to recall the panel.