stroblme and Claude Opus 5.5
df2620cede
A run keeps the inputs its flow declared at submit
...
Run.declared (migration 2e7ca7d10044) snapshots the declarations on submit
and import. The run detail's Inputs panel reads them, and a run from before
falls back to the flow's current declarations.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 10:20:29 +02:00
stroblme and Claude Opus 5.5
edd01ee330
A panel writes only what its dashboards' inputs target
...
It still reads every message its dashboards show. A message a tile only
draws, or a setting is bound to, is no longer writable from the panel.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 10:10:44 +02:00
stroblme and Claude Opus 5.5
f5be932df3
Flow inputs carry an origin hint, run or panel
...
The Inputs editor and the canvas label show it, and the run forms leave
panel inputs out.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 10:08:46 +02:00
stroblme and Claude Opus 5.5
ccc7081b08
PUT /panels/ carries a version and refuses a stale one with 409
...
The Panels dialog re-reads the list on 409. A panels.json without a
version reads as 0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 10:07:50 +02:00
stroblme and Claude Opus 5.5
5a5f4c5a80
http sender drops reply keys no output port declares
...
A sender without outputs no longer fails on a {"status": "ok"} reply.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:57:51 +02:00
stroblme and Claude Opus 5.5
78792a95bb
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:53:38 +02:00
stroblme and Claude Opus 5.5
0d382edcbf
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:53:19 +02:00
stroblme and Claude Opus 5.5
efe80cb3c2
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:51:38 +02:00
stroblme and Claude Opus 5.5
025123a219
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:50:18 +02:00
stroblme and Claude Opus 5.5
2dc9295c26
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:50:04 +02:00
stroblme and Claude Opus 5.5
be85c6c92a
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:48:47 +02:00
stroblme and Claude Opus 5.5
0746c94e0a
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:45:24 +02:00
stroblme and Claude Opus 5.5
a1bdae3484
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:44:22 +02:00
stroblme and Claude Opus 5.5
c7e38a8a44
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:34:40 +02:00
stroblme and Claude Opus 5.5
afcbb63a56
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 09:32:35 +02:00
stroblme and Claude Opus 5.5
235a9201a8
Merge remote-tracking branch 'origin/main'
...
Docs / docs (push) Successful in 22s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m39s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m17s
pre-commit / pre-commit (push) Failing after 2m37s
Test Backend / test-backend (push) Failing after 3m37s
Compose Smoke Test / test-compose (push) Successful in 33s
Playwright Tests / merge-reports (push) Successful in 1m38s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 08:20:11 +02:00
Melvin Strobl
36fafae065
Merge remote-tracking branch 'origin/main'
Docs / docs (push) Successful in 49s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m41s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m16s
pre-commit / pre-commit (push) Failing after 4m23s
Test Backend / test-backend (push) Failing after 4m54s
Compose Smoke Test / test-compose (push) Successful in 38s
Playwright Tests / merge-reports (push) Successful in 1m41s
2026-10-15 07:47:21 +02:00
stroblme and Claude Opus 5.5
0e69f50a7a
Docs: endpoint labels sweep when a value passes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 00:23:14 +02:00
stroblme and Claude Opus 5.5
98416dc516
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
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 00:07:58 +02:00
stroblme and Claude Opus 5.5
0a9ea24b93
Stored state lists its keys, each with a two-press delete beside Clear
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 00:04:03 +02:00
stroblme and Claude Opus 5.5
8eec58d1d6
Runs export: a truncated one counts the selection into X-Total-Count; the SDK and fluksio export warn how many runs were left out
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:29:48 +02:00
Melvin Strobl and Claude Opus 5.5
78498cbbf8
Dashboard name pill opaque: the look's card colour with a hairline border, no blur
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_016ezWcLmBCtTVKFPxfdK2MK
2026-10-14 22:19:34 +02:00
Melvin Strobl and Claude Opus 5.5
2a9b39ddb1
Dashboard name pill on a round panel: 56 high, icon and title at 24, at most 280 wide
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_016ezWcLmBCtTVKFPxfdK2MK
2026-10-14 22:16:00 +02:00
stroblme and Claude Opus 5.5
b18cb30492
Add websocket node: client or served socket, listener or sender
...
Docs / docs (push) Successful in 26s
Playwright Tests / test-playwright (1, 2) (push) Failing after 3m56s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m1s
pre-commit / pre-commit (push) Failing after 2m38s
Test Backend / test-backend (push) Failing after 3m18s
Compose Smoke Test / test-compose (push) Successful in 46s
Playwright Tests / merge-reports (push) Successful in 1m35s
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011CT3mowxKeZywDCH4fS1gt
2026-10-14 18:42:19 +02:00
Melvin Strobl and Claude Opus 5.5
0bf2b12268
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
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 17:20:22 +02:00
Melvin Strobl and Claude Opus 5.5
603635f947
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
...
Docs / docs (push) Successful in 24s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m14s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m11s
pre-commit / pre-commit (push) Failing after 2m2s
Test Backend / test-backend (push) Failing after 3m23s
Compose Smoke Test / test-compose (push) Successful in 34s
Playwright Tests / merge-reports (push) Successful in 1m33s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 17:08:51 +02:00
Melvin Strobl and Claude Opus 5.5
541dbce584
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
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 16:52:46 +02:00
Melvin Strobl and Claude Opus 5.5
f5412d2f7d
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
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 16:42:56 +02:00
Melvin Strobl and Claude Opus 5.5
b500af84ec
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
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 16:34:10 +02:00
Melvin Strobl and Claude Opus 5.5
5b2769c141
Slider: the set value to its step's decimals; the reading marked on the track and on the ring; mark geometry in the docs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 16:00:53 +02:00
Melvin Strobl and Claude Opus 5.5
a6a1f2a2c3
Slider reading in a tile: a line under the value in every look, row and fader; Beside it on every dashboard; tile geometry in the docs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 15:51:04 +02:00
Melvin Strobl and Claude Opus 5.5
84071ee106
Round dashboards: one face at a time, a face per widget type, paged by swipe, dots and keys; slider reading; face row in the editor
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 15:24:25 +02:00
Melvin Strobl and Claude Opus 5.5
8b8cb5cda9
Round dashboards: shape and ring, the ring drawn and turned in every look, Knob preset and face guide in the editor
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 14:23:55 +02:00
Melvin Strobl and Claude Opus 5.5
3c08e6ef1e
Docs: panels without a browser (openpanel), device-interpreted I/O ports
...
Docs / docs (push) Successful in 29s
Playwright Tests / test-playwright (1, 2) (push) Failing after 3m48s
Playwright Tests / test-playwright (2, 2) (push) Failing after 2m25s
pre-commit / pre-commit (push) Failing after 2m33s
Test Backend / test-backend (push) Failing after 2m59s
Compose Smoke Test / test-compose (push) Successful in 34s
Playwright Tests / merge-reports (push) Successful in 1m59s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 11:33:27 +02:00
Melvin Strobl and Claude Opus 5.5
3f98fff7e5
Defer ffmpeg in the image; record the decision
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 07:33:59 +02:00
Melvin Strobl and Claude Opus 5.5
47d0a42849
Clip transcoding: ffmpeg in the backend image, panel recipe in the node docs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 07:30:36 +02:00
Melvin Strobl and Claude Opus 5.5
c462f9acab
Panel I/O: PanelDef.io ports, scoped publish and upload, I/O section in the Panels dialog
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-13 21:10:54 +02:00
stroblme
b2aa932b6d
docs
Docs / docs (push) Successful in 26s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m7s
Playwright Tests / test-playwright (2, 2) (push) Failing after 2m30s
pre-commit / pre-commit (push) Failing after 2m42s
Test Backend / test-backend (push) Failing after 3m3s
Compose Smoke Test / test-compose (push) Successful in 32s
Playwright Tests / merge-reports (push) Successful in 1m51s
2026-10-13 10:02:20 +02:00
stroblme and Claude Opus 5.5
2cfa251036
Docs: getting started mirrors the README quick start
...
Docs / docs (push) Successful in 20s
pre-commit / pre-commit (push) Failing after 3m28s
Test Backend / test-backend (push) Failing after 3m45s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 21:50:21 +02:00
stroblme and Claude Opus 5.5
9e7f07e883
Docs: make init in the setup steps
...
Docs / docs (push) Successful in 22s
pre-commit / pre-commit (push) Failing after 2m35s
Test Backend / test-backend (push) Failing after 3m2s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 21:41:39 +02:00
stroblme and Claude Opus 5.5
9a84d27347
Embed widget: Image option scales a camera stream to the tile
...
Docs / docs (push) Successful in 19s
Playwright Tests / test-playwright (1, 2) (push) Failing after 3m41s
Playwright Tests / test-playwright (2, 2) (push) Failing after 2m21s
pre-commit / pre-commit (push) Failing after 2m36s
Test Backend / test-backend (push) Failing after 2m58s
Compose Smoke Test / test-compose (push) Successful in 31s
Playwright Tests / merge-reports (push) Successful in 1m36s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 20:23:37 +02:00
stroblme and Claude Opus 5.5
38013a0774
Do not check a pinned certificate's dates
...
Docs / docs (push) Successful in 32s
Playwright Tests / test-playwright (1, 2) (push) Failing after 6m58s
Playwright Tests / test-playwright (2, 2) (push) Failing after 2m33s
pre-commit / pre-commit (push) Failing after 3m1s
Test Backend / test-backend (push) Failing after 3m13s
Compose Smoke Test / test-compose (push) Successful in 31s
Playwright Tests / merge-reports (push) Successful in 1m34s
A pin trusts one exact certificate, so an expired one or an engine clock
that is off no longer locks a device out (X509_V_FLAG_NO_CHECK_TIME).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 10:11:08 +02:00
stroblme and Claude Opus 5.5
c954a0ab6d
Lift certificate pinning into the connector contract
...
fluksio.flow.connector_tls: trust the certificate a device presented on
first contact, kept in ConnectorNode.store, and name the new fingerprint
when another one is refused. Additive, so no contract version bump; hue
and wfrac use it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 09:48:24 +02:00
stroblme and Claude Opus 5.5
25706fedff
Portal link: send the instance credential as Authorization: Bearer
...
Not ?token= in the tunnel URL, which access logs keep. The hub has to be
upgraded first; websockets>=14 for additional_headers on the asyncio client.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 09:41:44 +02:00
stroblme and Claude Opus 5.5
5eeeb08be4
Drop --token from the hand-started worker examples
...
The worker reads FLUKSIO_WORKER_TOKEN itself; on the command line the
token shows in ps. The --token row in the options table says so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 09:35:00 +02:00
stroblme and Claude Opus 5.5
8684f27f58
Hand a provisioned worker its token in the environment, not argv
...
The generated batch script exported nothing and passed `--token`, which
any user on a shared compute node reads from `ps`. It now exports
FLUKSIO_WORKER_TOKEN after `prerun`, which the worker already reads.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 09:32:01 +02:00
stroblme and Claude Opus 5.5
e85253a3dc
Sandbox website tiles by default; opt into same-origin per widget
...
A website tile now runs in an opaque origin (allow-scripts, popups, forms).
Its new "Trusted site" setting adds allow-same-origin for sites that need
their own cookies and storage, and a trusted tile pointing at the origin the
app runs on (its own, or the hub's) shows a notice instead of the frame.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 09:31:49 +02:00
stroblme and Claude Opus 5.5
5259b8db0a
Authenticate sockets by header or one-time ticket instead of ?token=
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 08:58:22 +02:00
stroblme and Claude Opus 5.5
21537e2eb6
Bind a worker's name and labels into its token; list and revoke tokens by jti
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 08:42:14 +02:00
stroblme and Claude Opus 5.5
847abd67d6
Give connectors a store that survives restarts, and a way to clear it
...
`ConnectorNode.store` keeps short strings per connector package in the
engine's database (`connector_state`, migration f8c3e5a91d27), so the nodes of
one package share them and `fluksio serve` needs nothing new: get, set and
delete, at most 64 kB a value and 256 keys a package. A superuser lists the
keys (never the values) and clears them through `/connectors/{node_type}/state`,
or under Stored state in a connector node's panel. Documented in the connector
contract.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-06 17:19:48 +02:00