stroblme
|
b16d83005b
|
The flow toolbar beside a panel sheds by the lane it sits in: below 440px the fit control, the separators and Run's caption, below 336px the console. Below 988px wide the sidebar folds while a panel is open, without touching the saved preference, and comes back when it closes; the view is aimed again once the sidebar has moved
Docs / docs (push) Successful in 1m33s
Playwright Tests / test-playwright (1, 2) (push) Successful in 4m28s
Playwright Tests / test-playwright (2, 2) (push) Successful in 3m9s
pre-commit / pre-commit (push) Successful in 3m36s
Test Backend / test-backend (3.12) (push) Failing after 6m45s
Test Backend / test-backend (3.14) (push) Failing after 5m51s
Compose Smoke Test / test-compose (push) Successful in 30s
Playwright Tests / merge-reports (push) Successful in 1m23s
|
2026-11-10 22:54:28 +01:00 |
|
stroblme
|
53d7545c11
|
A select trigger's value ends in an ellipsis instead of being clipped, and with centred ranks an edge's value chip is cut to the 60px the layout made room for, so a long JSON value no longer overlaps its neighbour
|
2026-11-10 22:09:47 +01:00 |
|
stroblme
|
4586f3688d
|
The chat stacks above the editor's panels, so an expanded code editor no longer covers it; chat lines are keyed by an id given when each is made instead of their index; make verify captures the chat on both tabs, over the expanded editor, and as a phone's sheet, with the assistant's status and transcript answered by the script
|
2026-11-10 19:39:15 +01:00 |
|
stroblme
|
ea5081086f
|
index.html preloads the font, so text is drawn in Inter from the first render instead of swapping a round trip later
|
2026-11-10 19:27:53 +01:00 |
|
stroblme
|
1a7a6a3747
|
The flow canvas says when its layout engine did not load and tries again on a click, instead of keeping its loader until a reload: the ELK API now comes with the editor, so the worker's script is the one fetch, a worker that failed to load is dropped and the next ask starts another, and the editor starts it as soon as its code runs, beside the flow document
|
2026-11-10 19:27:52 +01:00 |
|
stroblme
|
33ed6f669f
|
Long names stay in their box: overview cards and Home's dashboard tiles truncate with the full name on hover, the node panel's flow path and a device id leave half the row to the name field, dialog titles and select items wrap an unbroken name, and a select menu is capped at the room it has; the flow canvas shows a loader until the layout engine has placed the nodes, so a slow link no longer looks like an empty flow
|
2026-11-10 19:01:23 +01:00 |
|
stroblme
|
fba4bd811a
|
Merge remote-tracking branch 'origin/main' into HEAD
Docs / docs (push) Successful in 36s
Playwright Tests / test-playwright (1, 2) (push) Successful in 4m11s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m34s
pre-commit / pre-commit (push) Successful in 3m35s
Test Backend / test-backend (3.12) (push) Failing after 6m25s
Test Backend / test-backend (3.14) (push) Failing after 6m2s
Compose Smoke Test / test-compose (push) Successful in 38s
Playwright Tests / merge-reports (push) Successful in 1m52s
|
2026-11-10 18:32:06 +01:00 |
|
stroblme
|
40eaf026c0
|
Merge remote-tracking branch 'origin/main'
Docs / docs (push) Successful in 28s
Playwright Tests / test-playwright (1, 2) (push) Successful in 4m6s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m36s
pre-commit / pre-commit (push) Successful in 3m33s
Test Backend / test-backend (3.12) (push) Failing after 6m15s
Test Backend / test-backend (3.14) (push) Failing after 5m56s
Compose Smoke Test / test-compose (push) Successful in 36s
Playwright Tests / merge-reports (push) Successful in 1m20s
|
2026-11-06 14:39:38 +01:00 |
|
stroblme
|
5eec267a7e
|
A code-declared node's shim names only its triggering ports, so a non-triggering input with no value yet reaches the function as its own default instead of failing the call
|
2026-11-06 14:35:12 +01:00 |
|
stroblme
|
40e60b422b
|
A querying chart offers its own windows: an optional ranges list of {label, range_s, interval_s}, up to 8 and checked by the server, where range_s 0 asks for the whole history; the editor lists and picks them, and the refresh is capped at what a timer can hold
|
2026-11-06 14:33:25 +01:00 |
|
Melvin Strobl
|
c80aad7dfe
|
Assistant answers general questions and stays silent for overheard talk ("Ignored." is not said); stt prompt setting sent as the transcription prompt
|
2026-11-06 08:04:19 +01:00 |
|
Melvin Strobl
|
261cf1ec2a
|
Assistant answers general questions and stays silent for overheard talk ("Ignored." is not said); stt prompt setting sent as the transcription prompt
Docs / docs (push) Successful in 39s
Playwright Tests / test-playwright (1, 2) (push) Successful in 4m26s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m25s
pre-commit / pre-commit (push) Successful in 3m24s
Test Backend / test-backend (3.12) (push) Successful in 6m3s
Test Backend / test-backend (3.14) (push) Successful in 5m41s
Compose Smoke Test / test-compose (push) Successful in 35s
Playwright Tests / merge-reports (push) Successful in 1m20s
|
2026-11-06 07:27:44 +01:00 |
|
stroblme
|
7ddf8aa8f9
|
fluksio.arrived(): a node can tell which inputs the wave behind it wrote, so a value written again unchanged is seen
|
2026-11-05 21:24:21 +01:00 |
|
stroblme
|
4c15f4abe1
|
Test hygiene: empty the flow store between modules, unbind demand on shutdown, poll the hook state in test_flow_ids, count only the watcher under test in the revoked-link test, delete runs.spec's runs
Docs / docs (push) Successful in 1m21s
Playwright Tests / test-playwright (1, 2) (push) Successful in 4m12s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m25s
pre-commit / pre-commit (push) Successful in 3m46s
Test Backend / test-backend (3.12) (push) Successful in 7m57s
Test Backend / test-backend (3.14) (push) Successful in 7m31s
Compose Smoke Test / test-compose (push) Successful in 31s
Playwright Tests / merge-reports (push) Successful in 1m20s
|
2026-11-05 08:03:56 +01:00 |
|
stroblme
|
c6ac7f80a9
|
A batch run fails a node with no value on a triggering input instead of calling it, naming the input and its producer, and skips what waits on it
|
2026-11-05 07:35:02 +01:00 |
|
stroblme
|
78b2c1438c
|
pause_intake answers False when claimed work outlasts its timeout, and reload then resumes intake and raises RebuildBusy before tearing anything down
|
2026-11-05 06:43:33 +01:00 |
|
stroblme
|
1a622edb1f
|
RedisState's compare-and-swap watches through its pipeline, so a write between the compare and EXEC fails the swap; pause_intake waits out a claim already under way, so nothing dispatches after it returns
|
2026-11-04 21:53:41 +01:00 |
|
stroblme
|
d028bf326a
|
A batch run skips the nodes waiting on a failed one and ends error; a run whose nodes cannot load fails with the load error before anything executes; cancelling a run stops its pipeline without announcing a pause of the live flow; batch_issues refuses a delay node's interval; the client accepts an engine URL with or without /api/v1; RedisState's compare-and-swap records the names it writes
|
2026-11-04 21:38:21 +01:00 |
|
stroblme
|
eb17528ce6
|
FlowNotFound says whether a published flow or any flow is missing; read_all stamps its cache with the revision from before its scan; dashboard discard and delete commits name the key; a RedisState ttl expires counters and the names set too; bench_startup publishes the version after its saves, and only when there is a draft
|
2026-11-04 21:20:29 +01:00 |
|
stroblme
|
b7f1d21712
|
Docs for key renames: ids and keys in the flow concepts, the rename routes, events and 503s in the API reference, hooks during a rename, sync and run metrics after one; a pinned restore refused for its recorded key names that key in the 409
Docs / docs (push) Successful in 3m11s
Playwright Tests / test-playwright (1, 2) (push) Successful in 11m42s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m22s
pre-commit / pre-commit (push) Successful in 3m12s
Test Backend / test-backend (3.12) (push) Successful in 6m19s
Test Backend / test-backend (3.14) (push) Successful in 5m59s
Compose Smoke Test / test-compose (push) Successful in 37s
Playwright Tests / merge-reports (push) Successful in 1m12s
|
2026-11-03 08:09:35 +01:00 |
|
stroblme
|
f9d5f510c2
|
Startup deletes the work queue's keys from before it moved from pipeline: to queue: (stream, timers, dead letters, parked lists, done markers), logged with what they held; an old stream still holding undelivered work stays, is logged as an error, and counts as queued work for the keys it names
|
2026-11-03 07:55:14 +01:00 |
|
stroblme
|
3ae5255617
|
Rename UI: superuser Key row and rename dialog for flows and dashboards (live plan with rewritten documents, counts, refusals and warnings, typed confirmation, what the drain waits for and calling it off); applyRename and the socket's renamed remap the live store and refetch at unchanged URLs, editors whose document moved reload so neither undo nor a queued save restores old bindings, a reconnect checks again and its snapshot replaces values; a retry toast for the rename's 503s, autosaves send themselves again; dashboard saves are based on their own versions only; Playwright rename spec, liveStore check, editor and dashboard docs
|
2026-11-02 22:58:41 +01:00 |
|
stroblme
|
ba4aae390d
|
Rename orchestration, splice and routes: a Renamer runs one rename at a time, closing the gate, taking the controller lock and holding the engine, each waiting without a limit and saying what it waits for (summary rename status, rename_waiting); DELETE on the pending request or a closed connection calls it off until the journal begins (409 aborted); then journal, steps and audit, retried in the background on failure (503 completing); splice_renamed rebuilds the affected flows under the held lock keeping stopped, paused and parked work, history limits and device wiring refreshed before activation; AlertManager.rename and EventBus.rename/settle follow the names; flow and dashboard rename routes answer by code and repeat stored results; renamed, dashboard_changed and pipeline_rebuilt after release; fluksio serve reads flow files without building a FlowStore
|
2026-11-02 22:14:44 +01:00 |
|
stroblme
|
2d65118d82
|
Rename journal, steps and recovery: rename.json (RENAME_JOURNAL_FILE) records each step, documents are written whole and committed alone (FlowStore.replace_documents, identity.write_documents) and rolled back before the journal goes forward; history per run scoped by flow id, alert ledger, alerts.json, state and queue steps idempotent and checkpointed; audit row once per op; recover_documents before assign_ids and recover_runtime before the engine is built, retried until done; repeated requests get the stored result, stale ones 409; plan refuses rename_in_progress; alerts.json written atomically; completeness scanner in the test utilities
|
2026-11-02 21:30:01 +01:00 |
|
stroblme
|
fa2a213631
|
Rename planner and document rewrite: rewrite_documents moves qualified names of the renamed flow in every flow (ports, inputs, outputs) and dashboard binding (one key table, WIDGET_BINDINGS, shared with the WidgetDef accessors, legacy pages included), published and draft, as plain JSON with both variants above either version; plan_rename reports documents, counts, fingerprint, warnings and refusals; superuser plan routes for flows and dashboards; key residue classifies state as the mapper does; duplicate retargets inputs and outputs too; queue reports its Redis version and other consumers
|
2026-11-02 21:06:39 +01:00 |
|
stroblme
|
81bd7c2724
|
Admission gate for a rename: RenameGate in flow/rename.py, installed by main.AdmissionGate inside CORS, turns mutating API requests away with 503 renaming and Retry-After while closed and drains those admitted without a limit, abortable; affected flows' hooks get 503 or socket close 1013, reads, sign-in, assistant, workers, artifacts and rename routes pass; the run cache misses while the gate is closed; trigger_node lets EngineHeld through instead of reporting a node failure
|
2026-11-02 20:53:08 +01:00 |
|
stroblme
|
cb709c19ac
|
Merge branch 'rename-s2'
|
2026-11-02 20:32:36 +01:00 |
|
stroblme
|
badcf94491
|
Engine holds for a rename: the pipeline refuses publish and inline cascades with EngineHeld once those running have finished, the execution service stops claiming and its timers once claimed cascades have finished; both wait without a limit, report what is busy and can be aborted. REST answers 503 with Retry-After, a device frame busy. Redis adds no longer wait for each other, only a queue hold waits for them
|
2026-11-02 20:21:17 +01:00 |
|
stroblme
|
be18a94089
|
Merge branch 'rename-s2'
|
2026-11-02 19:58:45 +01:00 |
|
stroblme
|
aa95245456
|
Merge branch 'ids-clients'
|
2026-11-02 19:58:45 +01:00 |
|
stroblme
|
fa15522cb0
|
Frontend addresses flows and dashboards by id: routes /flows/$flowId, /dashboards/$id and /view/$id, query keys, saves, lists, device pickers, search, brain and endpoint links and generated results dashboards go by id, while live values, issues, pauses and message names keep the key; tabs take the title from the document; creating uses POST and opens the issued id; the flow and dashboard panels show key and id with a copy button and a served HTTP or WebSocket node shows its hook URL under the flow id; specs create by POST and ids.spec.ts exercises issued ids
|
2026-11-02 19:57:43 +01:00 |
|
stroblme
|
46b57de4ec
|
Rename migrations for live state and the work queue: state keys move with RENAMENX in batches (type, TTL and history capacity kept), the queue rebuilds its streams with the same ids, group and pending entries, rewrites timers, parked and held items and done markers, and can hold new work in a list released in order; nothing calls them yet
|
2026-11-02 19:50:54 +01:00 |
|
stroblme
|
9eb0517403
|
Node-types doc names the training route by flow id
|
2026-11-02 19:39:50 +01:00 |
|
stroblme
|
53916d869b
|
Clients take a flow's id or key: one resolver in the SDK, id first, explicit id:/key:, a warning for reads and a refusal for changes when a name means two flows, deleted flows found by their last key; sync creates by POST, retries a create race through the drift checks and reports the id; MCP gets create_flow and resolves every flow argument with the caller's token; displays show flow_name; an engine from before ids is named as such
|
2026-11-02 19:39:14 +01:00 |
|
stroblme
|
ebcc480a8c
|
Rename mapper: flow/namespace.py maps state keys, work items and alert dedup keys from an old flow key to a new one; the state key families and WorkItem fields are registered there, the key builders take their prefixes from it, and done markers read back with queue.done_marker
|
2026-11-02 19:28:25 +01:00 |
|
stroblme
|
fd637e0f1e
|
Tests clear flow tombstones between modules with the other engine rows, and the tombstone test commits its prune before checking the count, so a wrong count no longer holds the write lock over the tests after it
|
2026-11-02 19:14:59 +01:00 |
|
stroblme
|
d4a1b1db47
|
History is kept by flow id: runs, cascades, rollups and events file the id in their flow column and nodes as <flow id>.<node>, the API answers flow plus flow_name and shows and takes nodes as <key>.<node>; events carry flow_id from the moment they are published; run queue items, the stage cache and cached curves keep ids and keys apart; endpoints, the brain graph, device bindings and search name the id to open
|
2026-11-02 19:01:19 +01:00 |
|
stroblme
|
e6027af8fe
|
Prove the rename's stream rebuild on a real Redis: same ids, group, lag and pending entries after RENAME, ENTRIESREAD set after XSETID because Redis caps it; backend CI gets a Redis 8.2 service
|
2026-11-02 18:51:14 +01:00 |
|
stroblme
|
08a6376836
|
Flows and dashboards are created by POST under an issued or superuser-pinned id; PUT only updates; deleted flows leave a tombstone with their key; the controller stores by id and runs by key, hooks live under /hooks/<flow id>; a key with state or queued work behind it is refused until cleared
|
2026-11-02 17:41:23 +01:00 |
|
stroblme
|
fae85f5ecb
|
Flows and dashboards get ids: the store is addressed by id with a key index, the first start gives every document its key as id, fluksio store migrate --dry-run and ls; the rename routes are gone
|
2026-11-02 16:54:11 +01:00 |
|
stroblme
|
de13c48c90
|
CI stacks come up on the runner again: mosquitto reads its config from /etc/mosquitto, where Ubuntu's AppArmor profile lets it, and Playwright reaches the app on localhost, a secure context for the clipboard spec
Docs / docs (push) Successful in 20s
Playwright Tests / test-playwright (1, 2) (push) Successful in 3m1s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m1s
pre-commit / pre-commit (push) Successful in 3m1s
Test Backend / test-backend (3.12) (push) Successful in 4m30s
Test Backend / test-backend (3.14) (push) Successful in 4m18s
Compose Smoke Test / test-compose (push) Successful in 28s
Playwright Tests / merge-reports (push) Successful in 1m17s
|
2026-11-02 07:22:32 +01:00 |
|
stroblme
|
c675d2041c
|
Ring face's unit sized inline relative to the reading, so pre-commit's arbitrary font size check passes
|
2026-11-02 07:03:39 +01:00 |
|
stroblme
|
66588c58aa
|
Merge the v0.2.0 worker range fix
Docs / docs (push) Successful in 20s
Playwright Tests / test-playwright (1, 2) (push) Failing after 29s
Playwright Tests / test-playwright (2, 2) (push) Failing after 26s
pre-commit / pre-commit (push) Failing after 2m14s
Test Backend / test-backend (3.12) (push) Successful in 4m44s
Test Backend / test-backend (3.14) (push) Successful in 4m30s
Compose Smoke Test / test-compose (push) Failing after 22s
Playwright Tests / merge-reports (push) Failing after 2m19s
|
2026-11-01 13:47:19 +01:00 |
|
stroblme
|
7919cf5670
|
fluksio requires fluksio-worker 0.2.x: the 0.1 range left the 0.2.0 wheels unresolvable, and publish stopped on it
Publish / publish (push) Successful in 47s
v0.2.0
|
2026-11-01 13:47:01 +01:00 |
|
stroblme
|
78e1011089
|
Back to development
Docs / docs (push) Successful in 21s
Playwright Tests / test-playwright (1, 2) (push) Failing after 1m7s
Playwright Tests / test-playwright (2, 2) (push) Failing after 21s
pre-commit / pre-commit (push) Failing after 2m17s
Test Backend / test-backend (3.12) (push) Successful in 4m36s
Test Backend / test-backend (3.14) (push) Successful in 4m23s
Compose Smoke Test / test-compose (push) Failing after 26s
Playwright Tests / merge-reports (push) Failing after 2m20s
|
2026-11-01 13:21:13 +01:00 |
|
stroblme
|
5e3a2f9a62
|
Release v0.2.0
Docs / docs (push) Successful in 23s
Playwright Tests / test-playwright (1, 2) (push) Failing after 1m9s
Playwright Tests / test-playwright (2, 2) (push) Failing after 20s
Playwright Tests / merge-reports (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 41s
Test Backend / test-backend (3.12) (push) Canceled after 0s
Test Backend / test-backend (3.14) (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s
Publish / publish (push) Failing after 24s
|
2026-11-01 13:18:37 +01:00 |
|
stroblme
|
64ef7c84d6
|
Portal members: a request that loses the adoption race reads back the winner's user instead of being refused
Docs / docs (push) Successful in 23s
Playwright Tests / test-playwright (1, 2) (push) Failing after 1m16s
Playwright Tests / test-playwright (2, 2) (push) Failing after 19s
pre-commit / pre-commit (push) Failing after 2m17s
Test Backend / test-backend (3.12) (push) Successful in 4m51s
Test Backend / test-backend (3.14) (push) Successful in 4m32s
Compose Smoke Test / test-compose (push) Failing after 26s
Playwright Tests / merge-reports (push) Failing after 2m17s
|
2026-11-01 11:21:42 +01:00 |
|
stroblme
|
df1071ce73
|
Message suggestions stay open when an empty field is clicked: the field's own focus no longer counts as outside the list
|
2026-11-01 11:17:18 +01:00 |
|
stroblme
|
e6614ff378
|
Image builds with uv 0.13.6; follow-redirects 1.16.2 and seroval 1.6.12; getting started covers Docker on Raspberry Pi OS and Compose 2.24
Docs / docs (push) Successful in 24s
Playwright Tests / test-playwright (1, 2) (push) Failing after 2m28s
Playwright Tests / test-playwright (2, 2) (push) Failing after 21s
pre-commit / pre-commit (push) Failing after 2m17s
Test Backend / test-backend (3.12) (push) Successful in 4m44s
Test Backend / test-backend (3.14) (push) Successful in 4m34s
Compose Smoke Test / test-compose (push) Failing after 25s
Playwright Tests / merge-reports (push) Failing after 2m21s
|
2026-11-01 10:59:51 +01:00 |
|
stroblme
|
d8eb6968f0
|
test_wren: load numpy itself, so the BLAS test passes alone
|
2026-11-01 10:59:45 +01:00 |
|