stroblme and Claude Opus 5.5
9a5d7a0d0c
Soak engine scenario: a sleeping fixture node keeps cascades in flight for the kill, and the report says how many were unacknowledged
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:49:07 +02:00
stroblme and Claude Opus 5.5
8e65ce41cb
Test hygiene: forget the refused study, quiet _Tee on a closed stream, wait for connector recovery
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:41:31 +02:00
stroblme and Claude Opus 5.5
f2305ef619
Phone header: assistant button in the corner, gated on an available provider as the sidebar entry is; header triggers on the right at 44px
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:41:30 +02:00
stroblme and Claude Opus 5.5
b0c07a35e9
Locked slider dims its rail: :has() on the slider, since the rail comes before the input and no sibling selector reaches it
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:41:29 +02:00
stroblme and Claude Opus 5.5
43fb446297
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
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:41:28 +02:00
stroblme and Claude Opus 5.5
1c1e2dc1a2
make clean goes on past a root-owned backend/htmlcov, with a hint to sudo rm it
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:40:03 +02:00
stroblme and Claude Opus 5.5
1735a3651e
Shared node changes rebuild the flows whose published copy uses them, not their drafts
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:34:47 +02:00
stroblme and Claude Opus 5.5
f8d14be8e6
Dev backend reloads on worker edits too: fastapi dev with --reload-dir over backend and worker, worker in develop.watch
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:34:07 +02:00
stroblme and Claude Opus 5.5
f4512aeebc
Memory-queue ids carry a per-instance boot token, so a restart without Redis no longer overwrites earlier run rows
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:33:25 +02:00
stroblme and Claude Opus 5.5
9145b7d1c0
ValueSource kind includes panel; Panels dialog no longer suggests the screen port openpanel does not serve
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:32:32 +02:00
stroblme and Claude Opus 5.5
f2b7a23b4f
Socket snapshot carries the nodes waiting for a machine, so a reconnecting browser restores their queued dots
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:31:54 +02:00
stroblme and Claude Opus 5.5
6e4e96e789
Remote exception names are cut to 128 identifier characters before a class is built for them
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:31:47 +02:00
stroblme and Claude Opus 5.5
98f4669b82
Artifact sweep keeps what a flow input's initial references, published or draft
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:30:46 +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
stroblme and Claude Opus 5.5
02f43bf7c4
test-frontend: refuse to run when the api container answers on another domain than the frontend
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:27:53 +02:00
stroblme and Claude Opus 5.5
0b4eb70452
LAN proxy: serve /hooks next to /api, so webhooks and served sockets reach the backend instead of the SPA
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-14 23:24:32 +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
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
f067fb60d4
Gauge: no value arc at the minimum
...
Docs / docs (push) Successful in 22s
Playwright Tests / test-playwright (1, 2) (push) Failing after 3m53s
Playwright Tests / test-playwright (2, 2) (push) Successful in 1m57s
pre-commit / pre-commit (push) Failing after 2m37s
Test Backend / test-backend (push) Failing after 3m6s
Compose Smoke Test / test-compose (push) Successful in 30s
Playwright Tests / merge-reports (push) Successful in 1m55s
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 12:29:07 +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
28a44853e3
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 08:44:38 +02:00
Melvin Strobl and Claude Opus 5.5
340b4f3447
LAN proxy: no 1 MB upload cap
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 08:14:19 +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
8d97b8ffaa
Open in dashboard: searchable Command list
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 22:07:17 +02:00
stroblme and Claude Opus 5.5
cfd2556053
Dashboard message picker: searchable combobox instead of a plain select
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 22:06:31 +02:00
stroblme and Claude Opus 5.5
0ef7d027b8
Dashboard palette: switch dashboard, publish, settings; ⌘S publishes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 22:05:39 +02:00
stroblme and Claude Opus 5.5
72b4cf3556
Shared Dock, PublishButton, DiscardButton, DiscardDraftDialog for the flow and dashboard editors
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 22:04:34 +02:00
stroblme and Claude Opus 5.5
8d158169e5
Button icon-touch/sm-touch sizes replace the repeated touch-target classes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 22:02:35 +02:00
stroblme and Claude Opus 5.5
9c75d7ae13
Dashboard add widget: searchable command palette with ⌘P, as on flows
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 21:59:16 +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
c73c110406
Add make init for a standalone setup
...
Docs / docs (push) Successful in 23s
pre-commit / pre-commit (push) Canceled after 1m23s
Test Backend / test-backend (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 21:39:59 +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
022079728c
Dashboard icons: add cctv
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-11 20:20:54 +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
cb2a6315c9
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 09:32:07 +02:00
stroblme and Claude Opus 5.5
0869e5b156
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.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_013GAeg4Jo6xjZzjwy9QDWMQ
2026-10-07 09:32:06 +02:00