Commit Graph

  • f2a823218a GPUs follow the engine's own CUDA_VISIBLE_DEVICES stroblme 2026-10-15 09:53:38 +02:00
  • 290b9fa705 Superuser route to flush the metrics collector now stroblme 2026-10-15 09:53:19 +02:00
  • ae81d95fd7 Warn at startup when worker or cascade limits are far past the cores stroblme 2026-10-15 09:51:38 +02:00
  • 9a029a85f8 Engine timings move to FLOW_* settings stroblme 2026-10-15 09:50:18 +02:00
  • 1f213460ad Audit shared-library source writes stroblme 2026-10-15 09:50:04 +02:00
  • 0004e4b9bd Retire a shared node in use with ?detach=true stroblme 2026-10-15 09:48:47 +02:00
  • 96f4fa5a38 Warn when a node that runs no code names a device stroblme 2026-10-15 09:45:24 +02:00
  • c9fda50601 Connection nodes speak of listener and sender, and of send_queue_size stroblme 2026-10-15 09:44:22 +02:00
  • c032898135 A supervised loop that crashes reports its node down stroblme 2026-10-15 09:42:01 +02:00
  • 565d492f19 Give a rate-limit flush its own run, linked to the run that held the value stroblme 2026-10-15 09:37:30 +02:00
  • cfb9e53d68 Rename the trigger node type to debounce, migrating stored flows stroblme 2026-10-15 09:34:40 +02:00
  • 4a776e52c4 Delay node: hold the latest value inside the interval and send it at the window's end stroblme 2026-10-15 09:32:35 +02:00
  • abf7cd5c2a development.md: verify takes its domain off the running stack stroblme 2026-10-15 08:37:32 +02:00
  • afe4362bb2 Verify shoots the flow canvas and media tile from the Demo, not the media example stroblme 2026-10-15 08:36:38 +02:00
  • 8cfb0faca0 Merge remote-tracking branch 'origin/main' stroblme 2026-10-15 08:19:10 +02:00
  • 300d9017fd Merge remote-tracking branch 'origin/main' Melvin Strobl 2026-10-15 07:47:21 +02:00
  • e3fce944bf Docs: endpoint labels sweep when a value passes stroblme 2026-10-15 00:23:14 +02:00
  • 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 stroblme 2026-10-15 00:23:01 +02:00
  • 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 stroblme 2026-10-15 00:07:58 +02:00
  • c9e38ede58 Stored state lists its keys, each with a two-press delete beside Clear stroblme 2026-10-15 00:04:03 +02:00
  • 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 stroblme 2026-10-14 23:59:24 +02:00
  • 2fba7b66d7 soak: pass flow names as SQL parameters so observability cleanup parses stroblme 2026-10-14 23:51:24 +02:00
  • 1dfdfe0ae4 Soak engine scenario: a sleeping fixture node keeps cascades in flight for the kill, and the report says how many were unacknowledged stroblme 2026-10-14 23:49:07 +02:00
  • 4be6a5b303 Test hygiene: forget the refused study, quiet _Tee on a closed stream, wait for connector recovery stroblme 2026-10-14 23:41:31 +02:00
  • 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 stroblme 2026-10-14 23:41:30 +02:00
  • e35eb67a21 Locked slider dims its rail: :has() on the slider, since the rail comes before the input and no sibling selector reaches it stroblme 2026-10-14 23:41:29 +02:00
  • 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 stroblme 2026-10-14 23:41:28 +02:00
  • e96fa46e0d make clean goes on past a root-owned backend/htmlcov, with a hint to sudo rm it stroblme 2026-10-14 23:40:03 +02:00
  • b345587ab9 Shared node changes rebuild the flows whose published copy uses them, not their drafts stroblme 2026-10-14 23:34:47 +02:00
  • ef9d9824bb Dev backend reloads on worker edits too: fastapi dev with --reload-dir over backend and worker, worker in develop.watch stroblme 2026-10-14 23:34:07 +02:00
  • 245e68449f Memory-queue ids carry a per-instance boot token, so a restart without Redis no longer overwrites earlier run rows stroblme 2026-10-14 23:33:25 +02:00
  • 2ac997ce37 ValueSource kind includes panel; Panels dialog no longer suggests the screen port openpanel does not serve stroblme 2026-10-14 23:32:32 +02:00
  • d423c47ca6 Socket snapshot carries the nodes waiting for a machine, so a reconnecting browser restores their queued dots stroblme 2026-10-14 23:31:54 +02:00
  • 30fa2b07db Remote exception names are cut to 128 identifier characters before a class is built for them stroblme 2026-10-14 23:31:47 +02:00
  • df78cdac72 Artifact sweep keeps what a flow input's initial references, published or draft stroblme 2026-10-14 23:30:46 +02:00
  • 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 stroblme 2026-10-14 23:29:48 +02:00
  • 77dee04647 test-frontend: refuse to run when the api container answers on another domain than the frontend stroblme 2026-10-14 23:27:53 +02:00
  • 68b069dc9c LAN proxy: serve /hooks next to /api, so webhooks and served sockets reach the backend instead of the SPA stroblme 2026-10-14 23:24:32 +02:00
  • d33c18af55 Dashboard name pill opaque: the look's card colour with a hairline border, no blur Melvin Strobl 2026-10-14 22:19:34 +02:00
  • 09ce4798c3 Dashboard name pill on a round panel: 56 high, icon and title at 24, at most 280 wide Melvin Strobl 2026-10-14 22:16:00 +02:00
  • 8c50c22444 Add websocket node: client or served socket, listener or sender stroblme 2026-10-14 18:42:19 +02:00
  • 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 Melvin Strobl 2026-10-14 17:20:22 +02:00
  • 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 Melvin Strobl 2026-10-14 17:08:51 +02:00
  • 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 Melvin Strobl 2026-10-14 16:52:46 +02:00
  • 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 Melvin Strobl 2026-10-14 16:42:56 +02:00
  • 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 Melvin Strobl 2026-10-14 16:34:10 +02:00
  • 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 Melvin Strobl 2026-10-14 16:00:53 +02:00
  • 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 Melvin Strobl 2026-10-14 15:51:04 +02:00
  • 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 Melvin Strobl 2026-10-14 15:24:25 +02:00
  • be3446cb16 Round dashboards: shape and ring, the ring drawn and turned in every look, Knob preset and face guide in the editor Melvin Strobl 2026-10-14 14:23:55 +02:00
  • 9bed078c41 Gauge: no value arc at the minimum Melvin Strobl 2026-10-14 12:29:07 +02:00
  • 13e885ee4b Docs: panels without a browser (openpanel), device-interpreted I/O ports Melvin Strobl 2026-10-14 11:33:27 +02:00
  • 13a0c69edc Colour widget: commit the value being released Melvin Strobl 2026-10-14 08:44:38 +02:00
  • a5afd88a5e LAN proxy: no 1 MB upload cap Melvin Strobl 2026-10-14 08:14:19 +02:00
  • 0264310d4f Defer ffmpeg in the image; record the decision Melvin Strobl 2026-10-14 07:33:59 +02:00
  • 1964c5b2e8 Clip transcoding: ffmpeg in the backend image, panel recipe in the node docs Melvin Strobl 2026-10-14 07:30:36 +02:00
  • 659799d1e5 Panel I/O: PanelDef.io ports, scoped publish and upload, I/O section in the Panels dialog Melvin Strobl 2026-10-13 21:10:54 +02:00
  • 80e595c02e docs stroblme 2026-10-13 10:02:20 +02:00
  • a93f865e91 Open in dashboard: searchable Command list stroblme 2026-10-12 22:07:17 +02:00
  • 530a4b602e Dashboard message picker: searchable combobox instead of a plain select stroblme 2026-10-12 22:06:31 +02:00
  • 4463007736 Dashboard palette: switch dashboard, publish, settings; ⌘S publishes stroblme 2026-10-12 22:05:39 +02:00
  • 88c80bdb60 Shared Dock, PublishButton, DiscardButton, DiscardDraftDialog for the flow and dashboard editors stroblme 2026-10-12 22:04:34 +02:00
  • 237b9d96c6 Button icon-touch/sm-touch sizes replace the repeated touch-target classes stroblme 2026-10-12 22:02:35 +02:00
  • 59272299f5 Dashboard add widget: searchable command palette with ⌘P, as on flows stroblme 2026-10-12 21:59:16 +02:00
  • bb63601fad Docs: getting started mirrors the README quick start stroblme 2026-10-12 21:50:21 +02:00
  • dd91954a21 Docs: make init in the setup steps stroblme 2026-10-12 21:41:39 +02:00
  • a86eb3051e Add make init for a standalone setup stroblme 2026-10-12 21:39:59 +02:00
  • d7c6e27a2a Embed widget: Image option scales a camera stream to the tile stroblme 2026-10-11 20:23:37 +02:00
  • 79e3908a76 Dashboard icons: add cctv stroblme 2026-10-11 20:20:54 +02:00
  • d482b32970 Do not check a pinned certificate's dates stroblme 2026-10-07 10:11:08 +02:00
  • cd6f8fec55 Lift certificate pinning into the connector contract stroblme 2026-10-07 09:48:24 +02:00
  • e9c3d0944d Portal link: send the instance credential as Authorization: Bearer stroblme 2026-10-07 09:41:44 +02:00
  • 1424e1e8a8 Drop --token from the hand-started worker examples stroblme 2026-10-07 09:35:00 +02:00
  • c1a6a89e13 Make alert dialog footer buttons 44px below md stroblme 2026-10-07 09:32:07 +02:00
  • 7d6cc5b0bf Serve index.html no-cache on every route; check the theme script's CSP hash stroblme 2026-10-07 09:32:06 +02:00
  • ff3a31e515 Hand a provisioned worker its token in the environment, not argv stroblme 2026-10-07 09:32:01 +02:00
  • 8f3e229c8f Sandbox website tiles by default; opt into same-origin per widget stroblme 2026-10-07 09:31:49 +02:00
  • ed8aee2387 Authenticate sockets by header or one-time ticket instead of ?token= stroblme 2026-10-07 08:58:22 +02:00
  • 094fed7cea Serve artifacts of a type that can run script with CSP sandbox and nosniff stroblme 2026-10-07 08:43:29 +02:00
  • 953a983919 Bind a worker's name and labels into its token; list and revoke tokens by jti stroblme 2026-10-07 08:42:14 +02:00
  • 9ef7f90dd8 Keep query-string tokens out of the uvicorn, nginx and Traefik access logs stroblme 2026-10-06 17:32:51 +02:00
  • 0a74845a7f Quote names put into SDK client URL paths; share the helper with MCP stroblme 2026-10-06 17:23:49 +02:00
  • 243d39b591 Give connectors a store that survives restarts, and a way to clear it stroblme 2026-10-06 17:19:48 +02:00
  • 8a1685741b Show Secrets to superusers only, and guard its route as Admin is stroblme 2026-10-06 12:33:00 +02:00
  • 07d62e3ae6 Use a placeholder password in the docs; ignore *.pem and *.key stroblme 2026-10-06 12:30:57 +02:00
  • 4dfb1e1206 Send a CSP and security headers from the frontend's nginx stroblme 2026-10-06 12:30:47 +02:00
  • 3758415f21 Enrol over http only to loopback; serve the API docs to this machine stroblme 2026-10-06 12:20:13 +02:00
  • db045770e8 Harden the remote worker: TLS off loopback, full digests, filtered env stroblme 2026-10-06 12:18:30 +02:00
  • ae290b5421 Quote every path parameter the MCP tools put into a URL stroblme 2026-10-06 12:16:48 +02:00
  • c5a8f170da Count per-address limits on the hop a trusted proxy added; limit signup stroblme 2026-10-06 12:15:58 +02:00
  • 8e928c3ffb Read secret names in the node panel only as a superuser stroblme 2026-10-06 12:01:53 +02:00
  • a168bcbdee Refuse names that are not names at the store boundary stroblme 2026-10-06 11:59:25 +02:00
  • 6f6970d9d6 Upgrade dependencies flagged by pip-audit and bun audit stroblme 2026-10-06 11:50:35 +02:00
  • 6802cd2203 Make changing engine-run code superuser-only stroblme 2026-10-06 11:36:30 +02:00
  • 2914d860b1 Make self-service signup opt-in via SIGNUP_ENABLED stroblme 2026-10-06 11:24:27 +02:00
  • a057b61859 Explain the terminal chart colours by the terminal theme stroblme 2026-10-06 07:24:54 +02:00
  • 70421c7454 Scroll the current dashboard to the middle of the phone rail stroblme 2026-10-06 07:24:53 +02:00
  • eca2ccde2f Make dialog close and footer buttons 44px below md stroblme 2026-10-06 07:24:53 +02:00
  • b5513f8615 Edit json, record and list values in the JSON dialog stroblme 2026-10-06 07:24:43 +02:00
  • 409a90db28 Draw charts from one categorical palette, --chart-1…8 stroblme 2026-10-06 07:05:09 +02:00