The fields sat in a grey box as blue chips, with a pencil on every one
of them and values printed as the constants they are stored as.
A field is now a quiet white card that lifts on hover, its label small
and grey above the value, and its pencil appears only when the field is
pointed at. A value that is one of a fixed set - CATALOG, PER_EXECUTION
- reads as words on a tinted plate, so it is clearly a choice and not
typed text; an empty one says so in grey rather than as a bare dash.
The dialog behind the pencil is roomier, with a focus ring on the
control and the same words in its dropdown.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Two pictures for one action: a node expanded with the fullscreen arrows
and closed with their inward twin, a resource with the diagonal arrows
and a plain ×. The node and the container now use the resource's pair.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The badge and the kind under the name already say what sort of step it
is; the stripe only added weight. A resource card keeps its own.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The saturated blue (or amber) header bar gives way to a light one: a
tinted badge with the step's icon, its name in dark type with its kind
under it in the step's colour, and quiet borderless buttons that colour
on hover. The kind of step stays in a stripe on the left, as on a
resource card.
A step's icon now follows its kind - automated, human, decision, end,
branches rejoin - with the pictures the palette already uses for them,
instead of one raster image for every automated block. A schema that
names an icon still wins.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Like a block, a resource can now be lifted out of the canvas into a
panel at full size, with every field open, whatever the zoom - an init
script above all is unreadable in a card on a zoomed-out canvas. The
settings button still opens the fields in place for a quick look.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its links now leave to the right from the bar's middle, as a step's
outputs do, and come into the step's handle from the left.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A small square on the edge was hard to see and hard to grab, and Rete
anchored its links 12px to one side of it - the offset it gives an
output on a node's right. The handle now runs along the whole top edge,
and its links start from the bar's middle.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A resource looked like a step: a header bar, a "Used by / Steps" row
with the handle on the right, every field open. It is now a card - its
type's icon, its name, one line saying where the store is - with the
fields behind a settings button and its handle on the top edge. Its
links leave that handle vertically and come into the step from the
left, so they read as something the steps hang from rather than one
more connection in the chain.
Saved links to a resource were not drawn at all when the resource
types had not been fetched yet - which was always, unless the
Resources palette had been opened - because the link was checked
against a kind nobody knew. The editor now fetches the resource types
before drawing, and puts saved links back without checking them again:
the server has.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The resource palette now lists an S3 storage and a PostgreSQL database
as two cards, each with the label and icon its type declares, and the
node on the canvas takes the same. A step's resource field names a
kind, so a storage operation links to either store.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The resource node inherited the generic node's schema lookup, which asks
the block catalog. Storage is not a block, so the lookup found nothing:
the node showed no fields, and every click on it fetched the catalog
again and covered it with the loading overlay, so nothing inside could
be clicked.
The lookup is now a hook the resource node overrides with the resource
catalog, and a resource is never recreated on the server - it has no
ports for the server to recompute.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
They were squeezed into the blocks palette as one more kind of block,
which is exactly the confusion the model change was meant to end. The
sidebar now has a third entry with its own icon and its own list, and
the blocks palette knows nothing about resources again.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A storage was a block with a visual role that said "not a step", which
left resource-shaped exceptions scattered through the editor, the node
components, the palette and the execution view.
The flow now carries resources beside its blocks, and the canvas draws
them with a component of their own: no ports, no dependencies, one
handle for the steps that use it. What a step links is read from the
schema flag x-resource-ref, so the editor no longer knows the word
"storage" anywhere - a new kind of resource needs no code here.
The configuration form the two kinds of node share is now a component of
its own (app-node-parameters), so a resource is edited exactly as a
block while it is drawn differently.
Resource types come from /resources/types, and share the palette with
the blocks under the Resource kind.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A Storage node has a 'Used by' handle and a storage operation a 'Works
on' one; the link drawn between them, teal and dotted, is what sets the
operation's storageNode. It is neither a connection nor a dependency: it
carries no value and orders nothing, and loops leave it out. An
operation works on one node, so a new link replaces the old one, and
removing the link empties the field. On load the links are drawn back
from what each operation says.
Fields the schema marks x-ui-hidden are left out of every form and chip
- storageNode is set by the link, not typed - and kept in the
configuration.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The chips took four lines of a narrow sidebar. A filter button at the
end of the search field opens the kinds as checkboxes instead, and
shows how many are picked; its tooltip says which. The menu lives in
the overlay, so its font is set globally, where the palette's own
styles do not reach. A storage's icon is 'storage': 'database' is not
in the icon font, and showed nothing.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>