stroblme
589ddecbb1
Library delete 409s on published usages as well as draft ones
2026-10-15 10:05:21 +02:00
stroblme
0562753d9c
http sender drops reply keys no output port declares
...
A sender without outputs no longer fails on a {"status": "ok"} reply.
2026-10-15 09:57:51 +02:00
stroblme
e6afc23952
sweep_artifacts: narrow the optional flow store for mypy
2026-10-15 09:55:41 +02:00
stroblme
5e5f1836cb
wren runs its model on one BLAS thread
...
threadpoolctl scopes the limit to wren.act, so other numpy calls in the
engine keep their threads.
2026-10-15 09:55:02 +02:00
stroblme
f2a823218a
GPUs follow the engine's own CUDA_VISIBLE_DEVICES
...
Its entries are the cards present, and a local child's allocation is
named through them, so under =2,3 card 0 is device 2. Remote workers
keep mapping against their own mask.
2026-10-15 09:53:38 +02:00
stroblme
290b9fa705
Superuser route to flush the metrics collector now
...
POST /observability/flush handles what the collector has queued and writes
it, so the soak harness no longer sleeps FLUSH_INTERVAL_S before clearing
its own rows.
2026-10-15 09:53:19 +02:00
stroblme
ae81d95fd7
Warn at startup when worker or cascade limits are far past the cores
...
More than four times os.cpu_count() logs one warning; the value is kept.
2026-10-15 09:51:38 +02:00
stroblme
9a029a85f8
Engine timings move to FLOW_* settings
...
NODE_STOP_TIMEOUT, REBUILD_WAIT, FLOW_REBUILD_WAIT, BACKOFF and
CANCEL_GRACE keep their defaults and are read from Settings.
2026-10-15 09:50:18 +02:00
stroblme
1f213460ad
Audit shared-library source writes
...
A shared source goes live in every flow using it the moment it is saved, so
the write is recorded in the audit trail like a publish. Private source saves
stay drafts and are not audited.
2026-10-15 09:50:04 +02:00
stroblme
0004e4b9bd
Retire a shared node in use with ?detach=true
...
DELETE /flows/library/{name} still answers 409 while nodes use the source.
With detach=true each of them keeps a copy of the code, in the published
flow and the draft, the source is deleted and the running users rebuild.
2026-10-15 09:48:47 +02:00
stroblme
96f4fa5a38
Warn when a node that runs no code names a device
...
A device on a node without source was accepted and silently ignored. The
build now reports it as ignored_device, an advisory issue.
2026-10-15 09:45:24 +02:00
stroblme
c9fda50601
Connection nodes speak of listener and sender, and of send_queue_size
...
mqtt and http take websocket's vocabulary: their Mode is LISTENER/SENDER,
default names read mqtt_listener_… and http_listener_…, and mqtt's
publish_queue_size is send_queue_size. No alias stays behind, so the flow
store rewrites the old setting in every published and draft mqtt node when it
opens, in the same migration as trigger → debounce. Every mqtt and http
setting carries a one-line description for the editor, and the node-types
reference uses one wording for direction and says that an http sender
publishes a JSON object response on its outputs.
2026-10-15 09:44:22 +02:00
stroblme
c032898135
A supervised loop that crashes reports its node down
...
A push session that failed before it listened left only a task_crashed
event. The wrapper in _run_supervised now reports down with the exception,
unless the loop already said why it is down.
2026-10-15 09:42:01 +02:00
stroblme
565d492f19
Give a rate-limit flush its own run, linked to the run that held the value
...
A flush ran its cascade under no id, so its executions and failures belonged
to no run. It now records a run with source "flush", and the holding run's id
travels on the queue item into a new `flow_run.parent` column, also on the
`/observability/runs` rows.
2026-10-15 09:37:30 +02:00
stroblme
cfb9e53d68
Rename the trigger node type to debounce, migrating stored flows
...
The store rewrites `"type": "trigger"` to `debounce` in every published and
draft flow when it opens, bumps the version and commits once. No alias stays
behind, so `trigger` is now an unknown type.
2026-10-15 09:34:40 +02:00
stroblme
4a776e52c4
Delay node: hold the latest value inside the interval and send it at the window's end
...
The interval now rides the output ports, so the pipeline's own hold and flush
keep what arrives inside the window instead of the node dropping it.
2026-10-15 09:32:35 +02:00
stroblme
abf7cd5c2a
development.md: verify takes its domain off the running stack
2026-10-15 08:37:32 +02:00
stroblme
afe4362bb2
Verify shoots the flow canvas and media tile from the Demo, not the media example
...
The canvas shot opens the Demo's music flow; the media shot reads the Demo's
Media screen, so neither needs the `camera` dashboard.
2026-10-15 08:36:38 +02:00
stroblme
8cfb0faca0
Merge remote-tracking branch 'origin/main'
2026-10-15 08:20:11 +02:00
Melvin Strobl
300d9017fd
Merge remote-tracking branch 'origin/main'
2026-10-15 07:47:21 +02:00
stroblme
e3fce944bf
Docs: endpoint labels sweep when a value passes
2026-10-15 00:23:14 +02:00
stroblme
bff20a9fb2
Endpoint labels sweep instead of pulse: left to right on a label publishing into the flow, right to left on one reading out of it, one pulse long, off under reduced motion; snapshot values are marked prior so catching up sweeps nothing
2026-10-15 00:23:01 +02:00
stroblme
9fb0e3ab90
Dashboard editor undo: ⌘Z / ⇧⌘Z over a 50-entry history of commits, folding keystrokes and the grid's own correction as the flow editor does
2026-10-15 00:07:58 +02:00
stroblme
c9e38ede58
Stored state lists its keys, each with a two-press delete beside Clear
2026-10-15 00:04:03 +02:00
stroblme
ddc281c81c
Colour tile tests: the disc on the shared widgets panel for every look's screenshot, and a key's release sending rgb and hex
2026-10-14 23:59:24 +02:00
stroblme
2fba7b66d7
soak: pass flow names as SQL parameters so observability cleanup parses
2026-10-14 23:51:24 +02:00
stroblme
1dfdfe0ae4
Soak engine scenario: a sleeping fixture node keeps cascades in flight for the kill, and the report says how many were unacknowledged
2026-10-14 23:49:07 +02:00
stroblme
4be6a5b303
Test hygiene: forget the refused study, quiet _Tee on a closed stream, wait for connector recovery
2026-10-14 23:41:31 +02:00
stroblme
6ca2a484ed
Phone header: assistant button in the corner, gated on an available provider as the sidebar entry is; header triggers on the right at 44px
2026-10-14 23:41:30 +02:00
stroblme
e35eb67a21
Locked slider dims its rail: :has() on the slider, since the rail comes before the input and no sibling selector reaches it
2026-10-14 23:41:29 +02:00
stroblme
4e08a97354
Stat unit sized against the hero numerals: dui-hero on the readout's outer span, so the unit's 0.4em is of the hero rather than the 14px body text
2026-10-14 23:41:28 +02:00
stroblme
e96fa46e0d
make clean goes on past a root-owned backend/htmlcov, with a hint to sudo rm it
2026-10-14 23:40:03 +02:00
stroblme
b345587ab9
Shared node changes rebuild the flows whose published copy uses them, not their drafts
2026-10-14 23:34:47 +02:00
stroblme
ef9d9824bb
Dev backend reloads on worker edits too: fastapi dev with --reload-dir over backend and worker, worker in develop.watch
2026-10-14 23:34:07 +02:00
stroblme
245e68449f
Memory-queue ids carry a per-instance boot token, so a restart without Redis no longer overwrites earlier run rows
2026-10-14 23:33:25 +02:00
stroblme
2ac997ce37
ValueSource kind includes panel; Panels dialog no longer suggests the screen port openpanel does not serve
2026-10-14 23:32:32 +02:00
stroblme
d423c47ca6
Socket snapshot carries the nodes waiting for a machine, so a reconnecting browser restores their queued dots
2026-10-14 23:31:54 +02:00
stroblme
30fa2b07db
Remote exception names are cut to 128 identifier characters before a class is built for them
2026-10-14 23:31:47 +02:00
stroblme
df78cdac72
Artifact sweep keeps what a flow input's initial references, published or draft
2026-10-14 23:30:46 +02:00
stroblme
1813b5d722
Runs export: a truncated one counts the selection into X-Total-Count; the SDK and fluksio export warn how many runs were left out
2026-10-14 23:29:48 +02:00
stroblme
77dee04647
test-frontend: refuse to run when the api container answers on another domain than the frontend
2026-10-14 23:27:53 +02:00
stroblme
68b069dc9c
LAN proxy: serve /hooks next to /api, so webhooks and served sockets reach the backend instead of the SPA
2026-10-14 23:24:32 +02:00
Melvin Strobl
d33c18af55
Dashboard name pill opaque: the look's card colour with a hairline border, no blur
2026-10-14 22:19:34 +02:00
Melvin Strobl
09ce4798c3
Dashboard name pill on a round panel: 56 high, icon and title at 24, at most 280 wide
2026-10-14 22:16:00 +02:00
stroblme
8c50c22444
Add websocket node: client or served socket, listener or sender
...
ws:// and wss:// URLs dial out and hold a supervised connection; a path is
served under /hooks/<flow>/ with an optional secret. Outputs only listen,
inputs send. Frames are JSON keyed by port, with json_key and on_connect.
2026-10-14 18:42:19 +02:00
Melvin Strobl
210023b7e2
Round panel: the dashboards either side drawn in advance and live, on the face they open on, and dragged in up and down as faces are sideways; the name pill only on landing
2026-10-14 17:20:22 +02:00
Melvin Strobl
d8e9fbda26
Round paging follows the finger: faces and dashboards on a track, swiped one to one with the next beside it, turned or sent back on release, rubber-banded at the ends; keys and dots slide the same track; the reading dot a smaller companion of the handle
2026-10-14 17:08:51 +02:00
Melvin Strobl
c294789d85
Round faces: a bar as concentric arcs with a legend in the middle; larger title, gap line and face text; Read-only in the ring's gap; a round dashboard unpadded on a phone; reduced-motion ring assertion
2026-10-14 16:52:46 +02:00
Melvin Strobl
bae4b15505
Marks as dots inside the track: ticks, a selector's options and a slider's reading on the track's midline and the ring's centre line, coloured by the fill or the handle over them; the selector ring fills to its option
2026-10-14 16:42:56 +02:00
Melvin Strobl
42c752c94e
Dashboard motion: round dashboards page up and down, the ring eases to a notch or a reading, the slider tile to a value set elsewhere; reduced motion honoured by every tween; motion spec in the docs
2026-10-14 16:34:10 +02:00