Skip to content

Releases: DenRakEiw/scumble

Scumble 0.1.42: Realism Pass, RTX upscaling, a portable zip

Choose a tag to compare

@github-actions github-actions released this 05 Oct 01:29
  • Realism Pass (Windows only, RTX only). A new local recipe sends the selection's box at its own size through
    DLSS 5 Neural Rendering on your own ComfyUI and lays the answer over it as a layer, so generated skin, hair and
    fabric look less waxy. It needs a ComfyUI on Windows with an RTX 30, 40 or 50 card and the community node pack
    ComfyUI-DLSS5-Enhancer with its runtime, installed there by you; Scumble ships none of it. The recipe comes with two
    presets, L (the default) and M, for the DLSS model. Before anything is sent, Scumble checks the server and says why
    it cannot run there (not Windows, no supported card, the pack missing, the selection with its surroundings smaller
    than 64 px or larger than 7680 × 4320 or 27.9 megapixels); RTX 30 cards run with a note. The pack's own errors come back as plain
    sentences that say what to do. There is no Comfy Cloud version of the pass. The manual has a chapter of the same
    name: what the pass needs, how to install the pack and its runtime on your ComfyUI (with the workaround for the
    runtime installer's download address and the antivirus exclusion the pack's README advises), and what each message
    means.
  • Realism Pass (Windows only, RTX only) over the whole picture. Upscale (also Image › Realism Pass (Windows
    only, RTX only)...
    ) lists the pass beside the upscalers. At 1× it sends the whole visible picture through DLSS 5 on
    your own ComfyUI and adds the answer as a new layer above it, at full size and without a colour match (the layer's
    match slider, set to match the picture underneath, takes a colour shift back); the picture keeps its size. Filter layers at the top of the stack, such as a
    film look or grain, stay live above the new layer and are not sent; reference layers stay out. A second run reads
    the first pass layer with the rest and stacks its own above it. Style and Strength sit in the dialog's Realism Pass
    row and count for the recipe on a selection too; the row's DLSS model preset is the whole-picture pass's own (on a
    selection the recipe's Preset row picks it), and a preset the runtime refused shows as Default there and can be set
    back. The dialog says why the pass cannot run before anything is sent (the requirements above, or a picture larger
    than 7680 × 4320 or 27.9 megapixels: DLSS answers near 30 megapixels sometimes came back with broken colours when
    it was measured). The title row's timer shows the pass and its Cancel ends it; closing the tab ends it too.
    Agents run it with the realism_pass command; list_recipes says whether the connected ComfyUI can run it and
    status whether it can run on the document, with the reason when not. The in-app assistant asks before it runs
    the pass, its card showing Style, Strength and the model preset; where the pass cannot run it gets the reason
    instead and no card is shown.
  • While an API Generate, an API upscale or the Realism Pass (Windows only, RTX only) runs on a document, until its
    result is in, a second Generate with an API model, an upscale or Generate new on it is refused with a note instead
    of starting beside it (Generate new with a recipe on your own ComfyUI used to clear the document before it was
    refused). Generate with a recipe on your own ComfyUI still queues, except while an upscale of the whole picture or
    the Realism Pass (Windows only, RTX only) above 1× runs: those resize the document, so Generate, a selection by text,
    a cutout, the object tool and Ctrl+Z of a crop, a resize or a turn are refused with the reason until the result is
    in (they would land in the old size).
  • RTX Video Super Resolution on your ComfyUI. A new upscale recipe on NVIDIA's RTX Video Super Resolution node
    (the node pack Nvidia_RTX_Nodes_ComfyUI, which you install on your ComfyUI): 1 to 4 times, with a Quality setting.
    The Upscale dialog shows the box's size and the answer's, and refuses a box whose answer would pass 8192 px.
  • The whole picture on your ComfyUI. Upscale recipes on your own ComfyUI now enlarge the whole picture too: the
    answer becomes the new base and every layer, mask and the selection scale along, in one undo step. A cut-out picture
    comes back opaque on this route, black where it was transparent. For the whole picture the Upscale model (ComfyUI) recipe takes at most 2048 px on
    the long side, so a 4× model answers at most 8192 px; a selection has no such cap. The whole picture at 1× is
    refused before anything is sent (its answer would be the picture's own size): select all and upscale the selection
    for a cleanup at 1×. While it runs, the title row's timer shows it and its Cancel takes the job off your ComfyUI;
    pressed while the answer is fetched, nothing lands.
  • RTX Video Super Resolution on Comfy Cloud. The same upscaler on Comfy Cloud on your Comfy key, for the selection
    or the whole picture, 1 to 4 times, with the Quality setting; a picture whose answer would pass 8192 px is refused
    before anything is sent.
  • Realism Pass (Windows only, RTX only) at 1.5× to 3×. The pass's factor in the Upscale dialog now also offers
    1.5×, 1.7×, 2× and 3× (DLSS 5's own modes; 1.7× is its Balanced mode, 1.724 times). The document is made that many
    times larger, the base and every layer, mask and the selection scaled along as Resize scales them, and the pass
    comes back on top as a new layer at the new size, in one undo step with the enlargement. The pass answers at most
    7680 × 4320 and 27.9 megapixels: a picture whose answer would be larger is scaled down first, so it comes back as
    large as the pass allows, and the dialog and the status line say to what. 1× stays a refiner at the picture's own size. Agents pass factor
    to realism_pass; the assistant's question names it.
  • A portable copy. Each release now also comes as Scumble-<version>-portable-win-x64.zip: unpack it into a
    folder you can write to (it holds one folder, Scumble) and start the Scumble.exe in it. The file portable.txt beside
    it makes Scumble keep everything it stores (settings, keys, autosave, the local files, plugins, recipes, helper
    models, logs, the browser caches and the Comfy Cloud sign-in) in a data folder beside it, made at the first start,
    so it runs beside an installed Scumble; a folder it cannot write to stops it with a message naming the folder. A
    portable copy, and any other copy without the installer's uninstaller beside it, never installs an update: when a
    new version is out it asks once, and Download opens the release page; unpack the new zip where you unpacked the old
    one and the data folder stays. A portable copy adds nothing to the taskbar's jump list. The installer stays the
    recommended download.
  • API keys that cannot be read on this PC or Windows account (Windows encrypts them for the account that stored them)
    are marked stored on another PC or Windows account: type it again in Settings › API providers, and a run with
    one says so instead of reporting no key. Once a portable copy has started on another PC or Windows account, its
    stored keys may have to be typed again on both PCs, the first one included (Windows may replace the copy's own
    encryption key at that start; not measured yet).
  • Recipes can ship presets. The Preset row in the Settings section shows a recipe's own presets first, then
    yours; the shipped ones cannot be deleted.
  • Generate new no longer offers the local upscale recipe, which makes nothing from a prompt.
  • Ctrl+Enter no longer starts a second Generate while an API run is going on the document: it is refused with a note,
    as the Generate button is, and the seed stays as it was. Generate with a recipe on your own ComfyUI still queues
    (not while a run that resizes the document goes, above).
  • The film look None (adjustments only) adds no grain any more; it used to add a light grain of its own.
  • The key of the local OpenAI-compatible endpoint goes only to the URL saved under Settings › Local /
    OpenAI-compatible endpoint
    (the Test button saves it first); any other address is asked without it.
  • Agents: flip_layer with axis x now mirrors the layer left to right, as its description says (both axes used to
    flip it top to bottom); an agent that asked for the other axis to get a left-to-right mirror now gets the other flip.
    remove_layer, flip_layer and center_layer refuse a locked layer with the reason (flip_layer and
    center_layer a filter layer too) instead of answering as if done.
  • Agents: every MCP tool says correctly whether it only reads and whether it can lose something (a closed document, a
    deleted layer, layers merged, a crop, a file written over, the recipe's settings), from flags on the commands
    themselves; plugin commands can set them (docs/PLUGINS.md). Until now the plugins' reads were not marked read-only,
    most commands that lose something were not marked destructive, and New document was.
  • Agents: four new commands. transform_layer rotates a layer by any angle, turns it a quarter, distorts it to four
    corners or warps it on a grid, as the move tool does (a text layer's rotation stays editable). copy_to_layer puts
    the selected pixels of a layer, or of the visible picture, on a new layer at the same place, in this tab or another
    (a cut takes them out of the layer); the clipboard your Ctrl+V reads stays as it was. resize_image resizes the
    whole document as Image › Canvas › Resize does, refused while a run is going on the document. cancel_run cancels
    the runs in flight as the title row's Cancel does, for one tab or all; a command waiting on such a run ends at once,
    and a run whose answer is already landing is named as such. Each change is one undo step (a cut is a step of its own
    before the paste).
  • Agents: list_recipes says for every recipe whether it can run now and why not (a missing key, the in-app model not
    downloaded, not connected to ComfyUI, node types the server lacks), which of a ...
Read more

Scumble 0.1.41: ComfyUI inside Scumble, recipes for Comfy Cloud

Choose a tag to compare

@github-actions github-actions released this 03 Oct 21:56
  • Cancel an API run. While a run waits on a provider, a Cancel button sits beside the timer in the title row.
    Pressed while the selection is still being prepared, nothing is sent; pressed later, Scumble stops waiting at once
    and says so. The provider may still finish a job it already has and charge it.
  • Your ComfyUI in a window of its own. A ComfyUI button in the top bar (Ctrl+Shift+K, also View › ComfyUI)
    opens your ComfyUI's own page beside the editor, from the address and auth under Settings › ComfyUI: a local
    install, a box in your network or a RunPod pod. Basic, bearer and custom-header auth reach the page and its live
    connection; a wrong password shows the server's answer instead of a browser prompt. ComfyUI's own shortcuts work
    there (Ctrl+S, Ctrl+Z, Ctrl+Enter), and Scumble's never fire from it. The page runs apart from Scumble: it cannot
    reach the editor, your keys or your files. With no ComfyUI to show, the window says why and leads to the setting;
    nothing connects anywhere until you open it, and Scumble needs no ComfyUI for anything else.
  • A recipe as its graph. Edit in ComfyUI, beside the recipe picker while a ComfyUI recipe is selected (also
    View › Edit Recipe in ComfyUI and each ComfyUI recipe under Settings › Recipes), opens that recipe's graph in the
    ComfyUI window, laid out by ComfyUI, with the result and the Settings rows wired to the Inpaint Canvas node as they
    run. The window's bar names the recipe, and says so when the page cannot take a graph.
  • A graph as a recipe. In the ComfyUI window, Save to recipe writes the graph you changed back into the recipe
    the window holds, and Save as new recipe makes a new one under the name you type in the bar; either way the
    editor selects it. A shipped recipe is saved as your own copy under the same name, which stands in for it; removing
    the copy under Settings › Recipes brings the shipped one back. The recipe keeps ComfyUI's layout, so it opens next
    time as you left it, and its Settings rows keep their names and values. A graph without an Inpaint Canvas node cannot
    replace a ComfyUI recipe; saved as a new recipe, it becomes a Comfy Cloud recipe (below).
  • Comfy Cloud in the same window. The window's Show picker switches between your ComfyUI and Comfy Cloud, and
    keeps the choice. You sign in on Comfy Cloud's own page (by email or GitHub; Google may refuse a sign-in from an app
    window), and the sign-in stays for the next time. Comfy Cloud runs no custom nodes, so Edit in ComfyUI opens a
    recipe built on the Inpaint Canvas node on your own ComfyUI and a Comfy Cloud recipe on Comfy Cloud, whatever the
    window showed last.
  • Recipes that run on Comfy Cloud. Cloud copy under Settings › Recipes turns a ComfyUI recipe into one without
    the Inpaint Canvas node that runs on your Comfy Cloud key: Scumble crops and stitches itself, and the graph takes the
    crop, the Original, the reference layers, the prompt and the seed through ComfyUI's own nodes. A workflow made on
    Comfy Cloud becomes a recipe too: import its exported .json, or save it from the ComfyUI window. Before a run Scumble
    checks that Comfy Cloud has every node of the graph and names a missing one. When a run fails, the message also names
    any model file Comfy Cloud's node list does not show, with a close name it does show where there is one.
  • Comfy's templates as they are. A workflow without the Inpaint Canvas node needs no titles any more: Scumble reads
    which picture is the crop, where the prompt, the negative and the seed go and which node gives the result, and says
    what it read when it saves the recipe. Comfy's image-edit templates (Qwen Image Edit, Flux.2 Klein and more) save
    straight from the ComfyUI window this way; titles are only needed to correct a wrong reading.
  • A Comfy Cloud mode. The mode picker next to Generate has a third choice, comfy cloud, beside local and
    api: the recipe picker then lists your Comfy Cloud recipes alone, and they run on Comfy Cloud with your Comfy
    Cloud key. The negative prompt field shows there as in local; a graph with a negative takes it. Each mode comes back with the recipe you
    last used in it; with no Comfy Cloud recipe yet, the status line says how to make one.
  • Thirteen Comfy Cloud recipes come with Scumble, from Comfy's own templates. Image edits: Boogu Image 0.1 Edit,
    Flux.2 Klein 9B base (one picture, or two), Flux.2 dev, Mage Flow Edit Turbo, Qwen Image 2.1 Edit and Qwen Image Edit
    2509. Pick comfy cloud and one of them, add your Comfy Cloud key, and the selection renders there. Tried live
    before the release: Qwen Image 2.1 Edit on a selection and a Generate new run; the others are built the same way.
  • Generate new on Comfy Cloud. The Generate new dialog has a Comfy Cloud choice with Comfy's text-to-image
    templates: Anima base and preview, Flux.2 Klein 9B, Ideogram 4, Krea 2 Turbo, Mage Flow, Qwen Image 2.1 and Z-Image
    Turbo, at 768 to 2048 px on the long side. A text-to-image workflow saved from the ComfyUI window or imported from
    Comfy Cloud becomes such a recipe by itself: Scumble finds where the prompt, the seed and the size go.
  • Templates read more fully. A template's negative prompt is found when its control shows that name, when its
    negative encoder has no control at all, or when the encoder has a negative field of its own; an empty negative in
    the editor keeps the template's default instead of clearing it. A prompt behind a switch or a prompt enhancer is
    followed to the text you write. Widgets with sub-options (an image format and its bit depth) and nodes newer than
    Scumble's own list are read from the export by name, so such a graph no longer fails on Comfy Cloud for a missing
    input; previews and before / after compares stay out of a cloud run.
  • A cloud copy keeps its wiring when saved back from the ComfyUI window: its prompt, negative and seed no longer
    fall away on Save to recipe or Save as new recipe.
  • Importing workflows with subgraphs reads them correctly: a newer subgraph's inputs are matched by name (before,
    a picture could land on a model loader's input), and a muted or bypassed subgraph adds none of its nodes.
  • Clearer texts in the Generate pane. A recipe without Settings rows now says so, instead of explaining how to wire
    the ComfyUI node; in the comfy cloud mode the negative prompt's placeholder says that an empty field keeps the
    recipe's own negative.
  • No Sample panel in every tab. The bundled Sample plugin no longer adds its panel to the Image pane. Its two
    actions stay in the Plugins menu, its colour probe and Posterize filter stay, and so does its colour-reading command
    that the assistant and agents use.

Scumble 0.1.40: A fix for Comfy Cloud

Choose a tag to compare

@github-actions github-actions released this 03 Oct 20:03
  • Comfy Cloud runs bring their result back again. Comfy Cloud no longer answers the endpoint Scumble read the
    finished picture from, so every run there (the partner models and the upscalers too) ended with "This endpoint is
    not available on Comfy Cloud" after the job had run and been billed. Scumble now reads the result, and the cause of a
    failed job, from the job's own details.

Scumble 0.1.39: Boxes for Ideogram 4, FLUX 3 on fal, Oxen.ai and WaveSpeed

Choose a tag to compare

@github-actions github-actions released this 03 Oct 10:42
  • Boxes for Ideogram 4. The boxes in the prompt now go with Ideogram 4 on fal too, as Ideogram's own structured
    caption: your prompt is the picture's summary, each New box an object in its place, each Text box the words it
    renders, and on an edit each Keep box an element that stays. Move, Remove and From reference boxes have no place
    in such a caption: they stay out of an Ideogram run, and the Boxes section and the status line say which. While the
    boxes go, Prompt expansion goes as None, so nothing rewrites the caption. Tried live before the release: an edit
    put a black cat into the grass of the selection, and a new image of a meadow put a red apple and a carved "SAUNA"
    sign where their boxes were. On a new image the prompt also describes the background: without one, the model
    painted a transparency checkerboard around the boxes, so Scumble says so when the prompt is empty.
  • Ideogram 4 ran live on fal for the first time (an edit and four new images), so its recipe no longer says it
    is untried there.
  • FLUX 3 Image on fal.ai. The FLUX 3 Image recipe has fal.ai as a provider, on the fal key: edits with up to nine
    more pictures, new images with up to ten references, and the boxes in the prompt. fal takes pictures of at most 4
    megapixels and fourteen shapes, so Scumble holds the crop to that size, scales larger reference layers down and
    picks the shape among those fourteen. There is no Grounding switch on fal; a Prompt expansion switch, on by
    default, lets the model rewrite the prompt first, as Black Forest Labs' own API always does. Written from fal's
    documentation; not yet tried against the live service.
  • FLUX 3 Image on Oxen.ai. The FLUX 3 Image recipe has Oxen.ai as a provider too, on the Oxen key: edits with up
    to nine more pictures, new images with up to ten references, the boxes in the prompt, and the same Safety
    tolerance and Grounding switches as on Black Forest Labs' own API (Grounding on by default; Oxen's own default is
    off). The pictures go inline in the request, and Oxen keeps every picture it makes in your Oxen account. Written
    from Oxen's documentation and model list; not yet tried against the live service. A run on Oxen.ai with a model
    that takes no seed no longer reports the editor's seed as if it had been used.
  • FLUX 3 Image on WaveSpeedAI. The FLUX 3 Image recipe has WaveSpeedAI as a provider too, on the WaveSpeed key:
    edits with up to nine more pictures, new images with up to ten references, and the boxes in the prompt. Like fal,
    WaveSpeed takes pictures of at most 4 megapixels and fourteen shapes, so Scumble holds the crop to that size and
    scales larger reference layers down; when the crop fits none of the shapes, the answer keeps the crop's own. The
    Prompt expansion switch is on by default; there is no Grounding or Safety tolerance switch there. Written from
    WaveSpeed's documentation; not yet tried against the live service.

Scumble 0.1.38: An update question, FLUX 3 on OpenRouter and Comfy Router

Choose a tag to compare

@github-actions github-actions released this 03 Oct 07:55
  • A question when an update is ready. Once Scumble has downloaded a new version in the background, it asks:
    Restart and update saves your documents, installs the new version and starts it with them; Later leaves it for
    when you close Scumble, which installs it then; Skip this version leaves it out until a newer one comes, so
    closing Scumble installs nothing (the Update to ... button in the title row and Settings › Updates still install
    it). The question lists what changed since your version, one line per change, comes once per start, and waits
    while you draw, type or answer another question, the assistant's included; a key you were typing when it opens
    answers Later. Before a restart that would end a run in progress (on an API or on your ComfyUI), the assistant's
    turn or an agent's session, it asks first; the button in the title row now does the same. It never asks after a
    check you started in Settings › Updates, which shows the answer there, and never in the Microsoft Store copy,
    which the Store updates.
  • Settings › Updates shows the whole release notes, of every version since yours: they were cut after 4,000
    characters, and a jump over several versions showed only the newest one's. A check there now also looks again when
    the downloaded version is one you skipped.
  • FLUX 3 Image on OpenRouter and Comfy Router. The FLUX 3 Image recipe has two more providers: OpenRouter, on
    its own key, and Comfy Router, on the Comfy key you may already have for Comfy Cloud and billed in Comfy credits.
    Both send the edits with up to nine more pictures, new images with up to ten references, and the boxes in the
    prompt. On OpenRouter the prompt goes as you wrote it, the crop's shape and size class are the same as on Black
    Forest Labs' own API, and the safety tolerance row works; grounding cannot be switched there. Tried live before the
    release, two edits at 2K on each: a cow turned into a white horse in the same place, and with the selection as a
    box a black cat sat in the box (about 40 to 110 seconds a run; OpenRouter charged $0.05 an edit, Comfy did not
    report its credits).
  • FLUX 3 Image keeps the crop's shape. A crop widened to one of the model's shapes now always asks for that
    shape; when the rounding of its size put it more than 3 % off, it went as "auto" and the answer was not fitted onto
    the crop exactly.
  • Boxes: every box its own colour. A new box takes a colour no other box of the document has (ten in turn), keeps
    it through every change, and its row in the Boxes section has the same colour at its edge, so six New boxes are six
    colours now, not six greens. The kind shows in the shape and the tag instead: a Move box has a dashed source and an
    arrow, a Remove box is hatched, a From reference box names its reference, a Text box carries a T, and Keep, Move
    and Remove say their kind when the name does not.
  • Boxes: double-click a box to describe it on the picture. With the Boxes tool, a double-click on a box opens a
    field over it with its description (on a Text box, its words): Enter keeps it, Shift+Enter starts a new line, Escape
    cancels, a click elsewhere or another tool keeps what you typed. It goes into the prompt as words, never into the
    picture.
  • Boxes: names from the noun, not the adjectives. A box named after its description takes the last two words of
    its first phrase: "a small black cat sitting in the grass" is black_cat_1 (it was small_black_1), "the white
    wall clock" is wall_clock_1, "a red ball under the chair" is red_ball_1, and a German description works too
    ("eine rote Lampe auf dem Tisch" is rote_lampe_1). A Text box keeps the first two words of its text
    (big_sale_1). A name once made stays.
  • The seed generate reports is the one the model got. A route that sends no seed (FLUX 3 Image; GPT Image,
    Nano Banana and Seedream on their own APIs and on OpenRouter and Comfy Router; the Magnific and ToAPIs routes without
    one) answers seed: null to agents, and the result's row in the history says "no seed sent" instead of offering a
    seed it never used.
  • generate says how long a run on an API took. It answered about half a second for every API run, since its
    clock started once the result was in; seconds now counts from the moment the run starts.

Scumble 0.1.37: Boxes for FLUX 3, Ideogram 4.5

Choose a tag to compare

@github-actions github-actions released this 02 Oct 19:42
  • FLUX 3 Image: boxes in the prompt, behind one switch. A switch Boxes in a row of its own under the prompt
    field decides whether a run sends bounding boxes in the prompt, in the form the model's documentation describes. It
    shows while the selected recipe takes boxes and counts the document's boxes ("Boxes · 3"). On, Generate and
    Generate new send the document's boxes; with none, Generate sends your selection as one box: the model is told
    where in the crop the change goes and what to put there (your prompt), or, when the prompt names a reference with
    @img1, that this reference goes into the box. Off, no box goes and the boxes stay with the document; the status
    line says how many did not go. The switch is off in a new document and is saved with it; the first box you draw or
    add turns it on, and the status line says so. Switching it off never deletes a box. The status line says "Sent
    with 1 box.", the log keeps the prompt as it went out, and a very small selection gets a note, since the model
    often leaves a box under about 40 pixels empty. Agents switch it with set_generation (boxes), and status
    reports it. Tried live before the release, five edits at 1k: with the selection as a box a cat sat in the middle
    of the box (without, at the selection's edge, where Paste would have cut it), a From reference box put a wall clock
    from a reference layer exactly into its box, and a Remove box took out a street lamp and its glow. The model fills a
    box: draw it at the size the thing should have.
  • Plugins can supply boxes for the prompt. Plugin API 3 adds scumble.generate.register({ id, boxes(doc, ctx), count(doc) }): a plugin answers boxes in image pixels (new, keep, move, remove, or a reference layer placed) for a
    Generate or Generate new run of a recipe that takes boxes while the Boxes switch is on, and Scumble maps them into
    the crop, numbers duplicate ids, writes the model's rows and sends them with the prompt. The optional count(doc)
    says how many boxes the plugin holds for the document: the switch counts them, and the selection goes as a box only
    when no plugin holds one. A box outside the crop is left out with a note; a box that names a reference layer the
    run does not send stops the run before anything is sent. The generate and generate_new commands answer boxes,
    how many went. The sample plugin shows a source (sample.box switches it on).
  • Boxes: a panel for the boxes of a document. A new section Boxes in the Generate pane (a built-in plugin) keeps
    boxes with the document: for each one its name, what it does (New adds what the description says in the box, Keep
    holds an element where it is, Move takes it from a source box to a new one, Remove takes it out, From reference
    places a reference layer or a part of it, Text renders words), the description and the position in image pixels.
    Selection → box takes the selection's bounds (a From box when the prompt names a reference with @img1), Clear
    removes them, Copy rows puts the model's rows on the clipboard for another tool. The boxes go out with Generate
    and Generate new runs of a recipe that takes them (FLUX 3 Image) while the Boxes switch is on and stay with the
    document otherwise, and the section says which is the case; they are saved in the .scumble file, follow a crop, a
    turn or a resize of the picture, and every change is one undo step. Agents and scripts have boxes_add,
    boxes_set, boxes_remove, boxes_list (which also says whether the switch is on), boxes_from_selection and
    boxes_clear; the assistant adds and changes boxes by itself and asks before it removes one or clears them.
  • Boxes: draw them on the canvas. The Boxes tool (X, under Plugins in the tool column) draws a box with a drag
    on the picture; a click selects one (its row in the panel lights up, and a click on a row selects its box), a drag
    moves it, the eight handles resize it. Delete removes the selected box, D duplicates it, the arrow keys nudge it by
    a pixel (Shift: ten), Escape lets go of it, and Alt+click picks a box that lies under another. A Move box's source
    and a From box's part get handles of their own once the box is selected. Each gesture is one undo step. The boxes
    show on the picture in their kind's colour (New green, Keep grey, Move blue with an arrow from its source, Remove
    red and hatched, From reference violet with the reference's name) with their name and the first words of their
    description, while the tool is active or the Boxes section is open; while the Boxes switch is off they are drawn
    dashed and paler.
  • Boxes: the crop on the canvas, and what it does to them. While the Boxes tool is active and something is
    selected, the picture outside the crop Generate would send is dimmed, its size under the crop's edge (the crop as
    the run plans it, the model's shapes and sizes included). While the Boxes switch is on, the Boxes section warns of a
    box the crop leaves out, one whose edge it cuts, and one that changes the picture outside the selection while
    Paste keeps the selection only, which would cut the result there; Paste the whole crop in that warning switches
    Paste for the document.
  • Boxes: the prompt says where each box goes. A run with boxes now writes a sentence per box into the prompt with
    its description and its place in words ("Place a red scarf <red_scarf_1> at the top left.", "Move the lamp
    <old_lamp_1> up and to the left, larger."); a description written as an instruction goes in as it is. Your prompt
    goes first, word for word; the selection's box, described by the prompt, only says where the change goes. With an
    empty prompt, or the selection's box, the sentences end with "Leave the rest of the picture as it is.". Copy rows
    writes the same text.
  • Boxes are named after their description. A box keeps its default name (box_1) only until it is described: then
    it is called after the description's first two telling words (red_scarf_1), and the selection's box after the
    prompt. A name of your own (not box_1, edit_2 and the like) stays, and so does one your prompt uses. Names may now
    hold several words (red_scarf_1).
  • Boxes: warnings before a run, and a tool that takes the box you point at. The Boxes section warns of a New box
    without a description and of a box too small for the model to place anything in; a run notes both. A click with the
    Boxes tool takes the smallest box under the pointer, so a box inside another is picked directly. A box turned into
    Move keeps its place as the source and its target steps aside, so the two can be told apart.
  • Plugins get a crop event when an app setting the crop of a run depends on changes (a node parameter, the API
    size), and scumble.host.cropFrame(editor) says what that crop is.
  • Ideogram 4.5, a new recipe on your Replicate token, your WaveSpeed key or Comfy Router (your Comfy key, billed
    in Comfy credits). Ideogram's precise edit model changes the selected area and leaves the rest of the crop as it
    was, pixel for pixel, at the crop's own size, and is strong at lettering. Your selection goes as the model's mask; a
    selection over the whole crop lets it edit the whole crop. Up to three more pictures go along (the Original and your
    reference layers); the model takes them without a number, so the prompt cannot name them with @img1. A very narrow
    selection is sent with more of its surroundings, since the model takes no picture steeper than 6:1. Generate new
    makes a picture from the prompt at the closest of seven shapes on Replicate and WaveSpeed. The Settings panel has
    Quality (very_low, low, medium, high; medium by default), which is also the price per picture: $0.008, $0.03,
    $0.06 or $0.22 for an edit on Replicate and WaveSpeed, $0.03 to $0.10 for a new picture on Replicate, $0.03 to $0.22
    on WaveSpeed (very_low goes as low there). On WaveSpeed the Settings panel also has Edit precision (high by
    default, which keeps the unchanged pixels), a new picture comes in one of seven shapes at 1k or 2k by the size you
    ask for, your prompt goes as written, and no seed goes, so two runs differ. On Comfy Router a new picture comes at
    the closest of Ideogram's 1K or 2K sizes by the size you ask for, your prompt goes as written, and very_low goes as
    low; Comfy had not published the price. Written from Replicate's, WaveSpeed's and Comfy Router's documentation and
    not run against the live services yet.

Scumble 0.1.36: FLUX 3 Image

Choose a tag to compare

@github-actions github-actions released this 01 Oct 20:38
  • FLUX 3 Image from Black Forest Labs, a new recipe on your Black Forest Labs key. It edits a selection by
    instruction, with up to nine more pictures (the Original and your reference layers), and in Generate new it makes a
    picture from the prompt with up to ten reference images. @img tokens go out as the model's "image N": on an edit
    the crop is image 1, so they start at "image 2"; on a new picture at "image 1". The model takes no pixel size:
    Scumble widens the crop to one of its fifteen shapes and picks the size class from it, 1k or 2k for an edit, up to 4k
    for a new picture (the larger class costs more). A reference layer under 256 px a side or over 16 megapixels is
    scaled to fit before it goes. The Settings panel has Safety tolerance (0 to 4) and a Grounding switch, on by
    default, which lets the model search the web and images for what the prompt names before it renders; turn it off
    to keep your prompt away from search. There is no seed, so two runs of the same prompt differ, and the model
    expands a short prompt itself (the log keeps that expanded prompt and what the run cost). Every Black Forest Labs
    run, FLUX.2 included, now waits out a busy server instead of failing and says why a blocked request was refused.
    Written from Black Forest Labs' documentation and tried live before the release: an edit with a reference layer
    and a new picture with one, which took about one and a half minutes each.
  • Scumble asks in its own dialogs. The questions that came in the system's message boxes or the browser's plain box
    now open inside the window, in the colours of the skin in use: Save / Don't Save when a tab closes, a file changed on
    disk or made by a newer Scumble, Save with or without the history, quitting while the last changes are still being
    saved, removing a recipe, a helper model or unused files, closing or restarting while a document works. Enter answers
    the highlighted button, Escape cancels, the arrow keys move between the buttons; a question that deletes something
    has Cancel highlighted. A skin can recolour them but cannot hide them or change the order of their buttons. When the
    window is too busy to answer at once (a second close while it saves), the system's box asks instead. Clearing the
    result history asks in the editor's own box now, like the editor's other questions (Enter clears, Escape cancels).
    The file pickers and the crash message stay the system's own. Plugins get ui.ask() for the app's dialog.
  • Generate new on Gemini keeps the aspect you ask for. With the recipe's Aspect row on its default auto, Nano
    Banana through a Google key sent no aspect for a new picture without reference layers, and the model answered in its
    own shape (16:9 came back square). The asked aspect goes now; an Aspect row set to a ratio still wins.
  • Each local recipe keeps its own model files. Switching between Qwen Image Edit 2.1 (ComfyUI) and Flux.2 Klein
    4B / 9B (ComfyUI)
    kept the other recipe's Model, Text encoder and VAE in the Settings panel, so a run loaded the
    wrong files. Now every local recipe starts from its own. Once after the update, the Settings rows of a local recipe
    in an open or saved document go back to the recipe's defaults.
  • For agents: --attach-only beside --mcp (or --cmd) makes an MCP registration drive a running Scumble and
    never start one in the background. With no Scumble open it offers ping alone and says Scumble is not running; once
    you start Scumble, the next call reaches it and the client gets every tool.

Scumble 0.1.35

Choose a tag to compare

@github-actions github-actions released this 30 Sep 22:02
  • Select several layers. Ctrl+click a layer row to add it to the selection or take it out, Shift+click to select
    the rows in between. With the transform tool the selected layers move together, scale together by the handles of the
    box around them and nudge together with the arrow keys; Ctrl+E merges them into one layer at the place of the
    topmost; Delete removes them; the eye and the lock of a selected row switch all of them. Moving, scaling, nudging, merging and
    deleting are one undo step each; the eye and the lock take none, as always. Locked and filter layers stay where they
    are when the others move, Ctrl+E refuses while one of them is selected, Delete keeps the locked ones, and rotate,
    distort and warp still take one layer at a time. Agents select several with
    set_active_layer layers, and list_layers says which are selected.
  • Align and distribute layers. The transform tool's bar lines up the selected layers on their left, centre, right,
    top, middle or bottom edge, and spaces them with equal gaps across or down, within the box around them or within the
    canvas (one layer aligns to the canvas). They go by each layer's box, not by its painted pixels. Each click is one undo
    step; locked and filter layers stay put. Agents do the same with align_layers.
  • Show only one layer, and back. Alt+click on a layer's eye showed only that layer before; now it also works for
    several selected layers, a right click on a row offers it as Show only this layer beside Show all layers, merge
    and delete, and moving the solo from one layer to another keeps what was visible before the first one, so the way
    back always ends where you started (it brought back the first solo before). Solo leaves reference layers alone: a
    hidden reference is not sent, and solo hid them before.
  • Clip a layer to the layer below. Alt+click the line between two rows, press Ctrl+Alt+G or pick Clip to layer
    below
    in a row's right-click menu, and the upper layer shows only where the layer under it has pixels: its own
    pixels, its mask and its opacity decide how much. Several layers in a row can clip to the same layer; a filter layer
    clipped this way filters only what lies under that layer's pixels. The row gets a small arrow and the layer it clips
    to an underline. A hidden base hides its clipped layers too; over a filter layer, or as the bottom layer, a clip has no
    effect (the arrow is dimmed); a fill layer counts as a filter layer here. The same again releases it; each switch is one undo step. Merging a clipped layer into
    the layer it clips to bakes the clip in. The clip is saved with the document and kept in PSD files both ways (a
    layer clipped to a group or to a layer Scumble leaves out opens unclipped, and says so); ORA has no clipping. Agents
    switch it with set_layer clip, and list_layers says what each clipped layer clips to.
  • Groups. Ctrl+G (or Group in a row's right-click menu) puts the selected layers into a group, a folder in
    the layer list with its own row: fold it open or shut, hide every layer in it with its eye (their own eyes stay as
    they were), lock them all with its lock, rename it with a double click. A click on the group's row selects its layers,
    so they move and scale together. Drag a layer onto a row to put it next to that row in the same group; drag it onto
    the lower half of a group's row to put it into the group at its top; groups drag the same way, and groups go inside
    groups. Ctrl+] and Ctrl+[ step a layer past the next one, into a group next to it or out of its own. Ungroup leaves
    the layers where they are (those of a hidden or locked group stay hidden or locked); the group's trash deletes it with its layers. Each change of the list is one undo step, the
    eye, lock and fold of a group take none, as a layer's do. A group has no opacity or blend mode of its own: the layers
    in it are drawn as if it were not there. A clip stays inside its group. Groups are saved with the document and kept
    in PSD files both ways (a group's opacity goes into its layers when a PSD opens, and says so); ORA gets the layers
    without the groups, those of a hidden group hidden. Agents use group_layers, ungroup_layers and set_group, and
    list_layers lists the groups and says which group each layer is in.
  • Fill layers. The new button beside the filter button in the layer list adds a layer of one colour, which starts in
    the paint colour; its row switches it to a gradient, from that colour to transparent to start with: linear along an angle, reflected from the centre both ways, or
    radial from the centre out, from one colour to another, each end with its own opacity, with a scale and a
    centre set in per cent. The row's picker and sliders change it at any time, and each change is one undo step. A fill layer covers
    what lies below it, and its blend mode, opacity and mask let the picture through: a gradient to transparent in
    multiply darkens one side and leaves the other as it is. It stays sharp at any size and is saved with the document.
    PSD and ORA files get it as a layer of pixels (PSD with its mask, ORA with the mask applied). Agents add one with
    add_filter of type fill or gradient, and filter_types marks the fill types.

Scumble 0.1.34

Choose a tag to compare

@github-actions github-actions released this 29 Sep 19:42
  • Name a reference image in the prompt. The reference list, the layer panel and the canvas now label every shown
    reference layer img1, img2 and so on from the top of the list (they said "ref 1" before). Write @img1 in the prompt
    and the request names that picture the way the chosen model counts its pictures: "image 3" when the crop and the
    Original go first, say, and on a local recipe the name its workflow reads (below). The status line says what each
    token went out as ("Named in the prompt: @img2 → image 3."). A token stays with its picture: a new reference now
    goes below the others and takes the next number, so nothing is renumbered, and when references are moved, hidden,
    shown, merged or deleted the tokens in the prompt are rewritten so each still names the same picture (hiding one
    renumbers the others, and their tokens follow). A token whose reference is hidden or deleted waits, and Generate stops
    and says why until you show the layer again, undo the delete or take the token out. The negative prompt takes tokens
    too, as plain text. A run now reads the prompt and the references at the moment you click, so an edit made while it
    starts no longer changes what goes out. An upscale sends no reference images, so there a token goes out as its layer's
    name (the Upscale dialog fills its prompt that way), and Select by text, when it asks the language model what the
    prompt is about, reads a token as "the reference image".
  • Reference chips in the prompt field. Each token shows as a chip: a small round picture of the reference and its
    label. A chip whose reference is hidden is struck through and shows the layer's name; one whose reference was deleted,
    or whose number no reference holds, is struck through in red. A chip counts as one character: the caret steps over it,
    and Backspace or Delete takes it whole. A token becomes a chip once you type the space after it (so @img12 can be
    typed without a chip for @img1 on the way), a word typed right against a chip gets a space between the two, and a
    click on a chip puts the caret beside it. The prompt field keeps its own undo: Ctrl+Z and Ctrl+Y there take back
    typing, a paste, Upsample, Revert or a prompt an agent set, never an edit of the picture. Its lines are a little
    taller, to fit the chips.
  • The @ list, the reference bar and the card. Type @ at the start of a word and a list of the shown references opens
    under the caret, each with its picture, label, layer name and what the model gets it as; what you type after the @
    narrows it. The arrow keys move in it, Enter or Tab puts the reference in, Escape closes it (a second Escape leaves
    the field). "+ Add reference" at the end of the list adds pictures as new reference layers and names them where the @
    was, and a picture pasted into the prompt or dropped on it does the same (text still pastes as text). Above the field
    a bar shows every reference as a chip (a hidden one dimmed), a + that adds pictures, and how many references the
    recipe takes besides the crop and the Original ("2 of 3 for this recipe"); a click on a chip there names it at the
    caret. A chip past what the recipe takes gets a yellow edge, and when the recipe sends no reference images at all (an
    upscale, say) every chip in the prompt is struck through and the bar dims its chips and says the recipe sends none.
    Rest the mouse on a chip for a moment and a card shows a larger picture, the layer's name and what the token goes out
    as ("img2 · sent as image 3"), or why it does not go. The small arrow on a chip swaps it for another reference, shows
    a hidden reference again or takes the token out; a chip can be dragged to another place in the text, and a selection
    dragged inside the field moves there (hold Ctrl to copy it).
  • Generate new keeps the reference layers and sends them along. The new picture replaces the old one and every other
    layer, but the reference layers stay, and the shown ones go to the models that take reference images for a new image:
    FLUX.2, GPT Image, Nano Banana, Seedream and HY Image 3.5 on every provider that runs them here, Qwen Image Edit on
    ToAPIs, WaveSpeed, Comfy Router and Oxen.ai (not on fal or Replicate), Qwen Image 2.1 on Oxen.ai, and Grok Imagine on
    fal, OpenRouter and Oxen.ai. There is no crop before them, so @img1 goes out as the model's first picture
    ("image 1", <image1> on Qwen Image 2.1); shown references the prompt does not name go along too, and a hidden one
    stays in the tab without being sent. A model that makes pictures from the prompt alone (Ideogram, Recraft, Reve and
    the others) sends none and keeps them in the tab, and stops the run when the prompt names one. Through a provider the
    status line says what each token went out as and how many other layers were replaced. The dialog's prompt field works
    like the Generate tab's, with chips, the @ list and the bar, and the card on each chip says what its reference goes
    out as for the model and provider picked in the dialog; its Upsample keeps the tokens (next item) and has its own
    Revert. In an empty tab, a reference added through the prompt field (its +, the @ list, a picture pasted or dropped
    on it) first gets a white 1024 × 1024 canvas for Generate new to replace. On a local recipe the references follow the
    white canvas the recipe renders on, so there @img1 is the second picture (the third when Original is on with a
    fill), and a local Generate new checks the tokens and the connection to ComfyUI before it replaces anything.
  • Upsampling keeps the tokens and sees the reference images. The language model is told which reference each token
    names and to leave the tokens as they are. A token for a hidden or deleted reference, or a number no reference holds,
    stops the upsampling with the reason. When a rewrite drops a token, adds one or names a picture by number instead
    ("image 3"), the status line says so ("Check the tokens: the rewrite dropped @img2."), and Revert brings your prompt
    back; a reference moved, hidden or merged while the model answers keeps its tokens in the answer. With an API model or
    the local endpoint, the language model also sees the reference images the prompt names (up to six, at most 512 px
    each), so the rewrite knows what each token is; they go to that model's provider along with the crop. The switch that
    keeps them back is in Settings › Prompt templates (on by default); the ComfyUI helper upsampler gets the names only.
    On the local endpoint, ToAPIs, OpenRouter and Oxen.ai a model that turns the pictures down is asked again with the
    crop alone, and the status line says "crop only". Prompt templates get a {references} placeholder, which the five
    shipped ones use; a template of your own without it gets the names added at the end.
  • Local ComfyUI recipes name the pictures too. On a local recipe a token goes out as the name that recipe's model
    reads for its picture: <image3> on Qwen Image Edit 2.1, "image 3" on FLUX.2 Klein; the prompt field keeps the token.
    Klein now reads up to 4 pictures and Qwen Image Edit 2.1 up to 10, the crop and the Original included. Klein used to
    read the crop and one more picture only, so with Original on no reference reached it at all, and both repeated the
    last picture into the slots the batch left empty; they no longer do, so the same seed gives another result than in
    0.1.33. A reference past what the recipe reads is left out with a note ("img3 is not sent"), and a token that names
    one stops the run and says why. The status line says what each token went out as, and the app's log keeps the prompt
    as it was sent whenever it named a reference. The References line at the foot of the Crop panel reads "img1 →
    <image3>", and its batch count leaves the Original out on a refine pass, as the node does. A workflow of your own is
    read the same way; where Scumble cannot tell how its graph numbers the pictures, it writes "image 3" by their place in
    the batch and says the wording is guessed. Neither widened workflow has run on a real ComfyUI yet.
  • Every API route says what it sends. Where a route writes a sentence of its own around your prompt, it now numbers
    the pictures the way the tokens do ("Edit image 1 and keep its size and framing. … Images 3 and 4 are reference
    images."), with a sentence for the Original ("Image 2 is image 1 before the selected area was filled."). Nano Banana
    on Google Gemini and on Comfy Router's Google route gets a label ("Image 1:") before each picture when more than one
    goes. No reference is left out without a word any more: a route sends every picture; or it refuses before anything is
    sent when there are more than the model takes, with the count and what to do ("… takes at most 8 pictures; this run
    has 9 (the crop, the Original, 7 reference layers): hide reference layers or turn Original off."); or, where the
    endpoint takes no reference at all (the FLUX.1 Fill and other fill endpoints, Replicate's Qwen Image Edit, Nano
    Banana Pro on Comfy Cloud), it sends none and says so in the status line, and a prompt that names a reference there
    stops the run. Ideogram Inpaint on Magnific sends the reference layers as style references, which have no number:
    they go along, but a prompt that names one there stops the run. The limits follow each provider's documentation: on
    Black Forest Labs FLUX.2 [klein] takes 4 pictures and [pro], [flex] and [max] 8 (it kept 7 references and dropped the
    rest silently before), FLUX.2 on WaveSpeed 3 (a run with the Original and two references is refused now), Grok
    Imagine on fal 5, Seedream on fal 10, Nano Banana 14 and GPT Image 16 on most providers. FLUX.1 Fill on Comfy Router
    runs again while a reference layer is shown (it refused) and leaves the references out, as its note says, and Comfy
    Cloud uploads only the pictures its node reads. None of this has run against a live API yet.
  • **The ...
Read more

Scumble 0.1.33

Choose a tag to compare

@github-actions github-actions released this 29 Sep 10:14
  • Erasing is fast again. Since 0.1.32 the eraser, the brush, clone and heal got four to seven times slower with a
    large brush (700 px and up) on a large picture whenever the pen, or a fast mouse, sent more points than the screen
    showed frames, which a pen does all the time: each of those points was painted as a little stroke of its own, and
    every slow frame made the next one slower still. It was felt most inside a selection. A move is one piece of the
    stroke again: erasing and painting cost what they did in 0.1.31, clone and heal about a fifth of what they cost in
    0.1.32. The stroke still follows every point the pen sends, and the pressure still sizes the brush point by point.
  • A soft brush under a pen is as even as under the mouse. 0.1.32 put a dab down twice at every point the pen sent,
    and where the pressure changed within a frame it spaced the large dabs as the smallest, so a soft edge came out a
    little harder with a pen than with the mouse.
  • Follow stroke turns an imported tip with the stroke again when the pen moves slowly; in 0.1.32 it could keep the
    angle of the stroke before.