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
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
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
Melvin Strobl
66e6c4b6ec
Slider: the set value to its step's decimals; the reading marked on the track and on the ring; mark geometry in the docs
2026-10-14 16:00:53 +02:00
Melvin Strobl
d05d3c4665
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
2026-10-14 15:51:04 +02:00
Melvin Strobl
2008150692
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
2026-10-14 15:24:25 +02:00
Melvin Strobl
be3446cb16
Round dashboards: shape and ring, the ring drawn and turned in every look, Knob preset and face guide in the editor
2026-10-14 14:23:55 +02:00
Melvin Strobl
9bed078c41
Gauge: no value arc at the minimum
...
At 0 the value arc is a zero-length dash (pathLength 0), and its round
caps still painted a primary dot on the dial in every look. The arc is
now transparent while its fraction is not above 0. The widget spec puts
a gauge at 0 on its panel and checks it in each look; its tile count,
stale since the buttons widget, is 11.
2026-10-14 12:29:07 +02:00
Melvin Strobl
13e885ee4b
Docs: panels without a browser (openpanel), device-interpreted I/O ports
2026-10-14 11:33:27 +02:00
Melvin Strobl
13a0c69edc
Colour widget: commit the value being released
...
The brightness column changes and commits in one handler, so the commit
read the render's draft (still null) and sent nothing; the queued draft then
stuck and rode along with the next release. The pending colour lives in a ref
now. color-drag.spec gains a column drag.
2026-10-14 08:44:38 +02:00
Melvin Strobl
a5afd88a5e
LAN proxy: no 1 MB upload cap
2026-10-14 08:14:19 +02:00
Melvin Strobl
0264310d4f
Defer ffmpeg in the image; record the decision
2026-10-14 07:33:59 +02:00
Melvin Strobl
1964c5b2e8
Clip transcoding: ffmpeg in the backend image, panel recipe in the node docs
2026-10-14 07:30:36 +02:00
Melvin Strobl
659799d1e5
Panel I/O: PanelDef.io ports, scoped publish and upload, I/O section in the Panels dialog
2026-10-13 21:10:54 +02:00
stroblme
80e595c02e
docs
2026-10-13 10:02:20 +02:00
stroblme
a93f865e91
Open in dashboard: searchable Command list
2026-10-12 22:07:17 +02:00
stroblme
530a4b602e
Dashboard message picker: searchable combobox instead of a plain select
2026-10-12 22:06:31 +02:00
stroblme
4463007736
Dashboard palette: switch dashboard, publish, settings; ⌘S publishes
2026-10-12 22:05:39 +02:00
stroblme
88c80bdb60
Shared Dock, PublishButton, DiscardButton, DiscardDraftDialog for the flow and dashboard editors
2026-10-12 22:04:34 +02:00
stroblme
237b9d96c6
Button icon-touch/sm-touch sizes replace the repeated touch-target classes
2026-10-12 22:02:35 +02:00
stroblme
59272299f5
Dashboard add widget: searchable command palette with ⌘P, as on flows
2026-10-12 21:59:16 +02:00
stroblme
bb63601fad
Docs: getting started mirrors the README quick start
2026-10-12 21:50:21 +02:00
stroblme
dd91954a21
Docs: make init in the setup steps
2026-10-12 21:41:39 +02:00
stroblme
a86eb3051e
Add make init for a standalone setup
2026-10-12 21:39:59 +02:00
stroblme
d7c6e27a2a
Embed widget: Image option scales a camera stream to the tile
2026-10-11 20:23:37 +02:00
stroblme
79e3908a76
Dashboard icons: add cctv
2026-10-11 20:20:54 +02:00
stroblme
d482b32970
Do not check a pinned certificate's dates
...
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).
2026-10-07 10:11:08 +02:00
stroblme
cd6f8fec55
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.
2026-10-07 09:48:24 +02:00
stroblme
e9c3d0944d
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.
2026-10-07 09:41:44 +02:00
stroblme
1424e1e8a8
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.
2026-10-07 09:35:00 +02:00
stroblme
c1a6a89e13
Make alert dialog footer buttons 44px below md
...
The same treatment `ui/dialog.tsx` got: every footer button is a 44px
target on a phone; desktop keeps its sizes.
2026-10-07 09:32:07 +02:00
stroblme
7d6cc5b0bf
Serve index.html no-cache on every route; check the theme script's CSP hash
...
`try_files` served the SPA fallback inside `location /`, so `/` and every
client route went out without `Cache-Control: no-cache`. The fallback is now
the last argument, an internal redirect to the exact no-cache location.
`src/csp.check.ts` recomputes the inline theme script's sha256 and fails
`bun run check` with the new value when the CSP no longer names it.
2026-10-07 09:32:06 +02:00
stroblme
ff3a31e515
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.
2026-10-07 09:32:01 +02:00
stroblme
8f3e229c8f
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.
2026-10-07 09:31:49 +02:00
stroblme
ed8aee2387
Authenticate sockets by header or one-time ticket instead of ?token=
2026-10-07 08:58:22 +02:00
stroblme
094fed7cea
Serve artifacts of a type that can run script with CSP sandbox and nosniff
2026-10-07 08:43:29 +02:00
stroblme
953a983919
Bind a worker's name and labels into its token; list and revoke tokens by jti
2026-10-07 08:42:14 +02:00
stroblme
9ef7f90dd8
Keep query-string tokens out of the uvicorn, nginx and Traefik access logs
2026-10-06 17:32:51 +02:00
stroblme
0a74845a7f
Quote names put into SDK client URL paths; share the helper with MCP
2026-10-06 17:23:49 +02:00
stroblme
243d39b591
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.
2026-10-06 17:19:48 +02:00