Admin
30575f082d
flow: route generation by request workload
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WV6BzHQiJEvvK9EPc1d4ks
2026-09-04 20:27:00 +02:00
Admin
f3b6c2f36c
Merge branch 'work' into webdemos
2026-09-04 20:13:43 +02:00
Admin
778dbb8fc7
flow: accept bodyless 204 responses
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WV6BzHQiJEvvK9EPc1d4ks
2026-09-04 20:12:49 +02:00
Admin
2a064d3928
workspace: add loader, haptics, voice, and runtime fixes
2026-09-04 17:39:41 +02:00
Admin
acd23289c6
flow + flow-ui: a cancelled run clears its cards and bars at once and its live nodes read cancelled; layout edits (move, size, flip) work while a run is shown; the queue row is one centre line — name, strip, state · time, x
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 17:24:17 +02:00
Admin
767e260b97
flow + flow-ui: parallel runs — random seeds with a die, a fleet parallelism estimate (generation nodes bound it; the chat box never caps the image fleet), batch routes, the Run dropdown (1 / max · N), Ctrl+Enter queues a run, and the Running panel becomes a Queue of every run with per-row and per-batch cancel and Clear all
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 15:01:15 +02:00
Admin
bf9418e2bc
vj: ironfish / synth rack, program mix, and a clean release check
...
Clocked piano/ironfish/drum rack, program-bus mix, splat/mixer/music
updates. Silence the unused warnings that show up in `cargo check -p
makepad-vj --release`.
2026-09-04 14:54:07 +02:00
Admin
b37b1168fd
media_view: the video, audio, mesh and splat viewers leave asset-ui for one crate; flow-ui shows every media type on the Output card and in the modal viewer
...
ViewSplat gains a typed set_scene_bytes so a viewer inside a face isolate never needs a script apply; MeshView gains visible.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 13:49:32 +02:00
Admin
a7774885a1
flow + flow-ui + flowgraph: the loaded flow is the editable design (Input.value lives in the file); Play clones it into a numbered locked run instance with a Design button back; inspector text rows follow the graph
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 13:37:38 +02:00
Admin
c71d6392f9
flow + flow-ui + flowgraph: a stale keep-alive is replayed on a fresh socket; a palette drop rewrites the file text so the new card mounts; the progress bar is centred in the header and inset past the corners
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 13:27:21 +02:00
Admin
7e397cf31e
flow + flow-ui: Publish end node writes to the asset library; Assets tab in the Inspector; prompt-to-library template
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 13:27:21 +02:00
Admin
24c927ad7e
flow-ui + widgets: every dropdown is the searchable ComboBox
...
Model and format pickers, the inspector's one-of rows, the Ask face's
choice and face-declared pickers all render as ComboBox; the popup and
its input map through the canvas zoom. ComboBoxRef gains changed_label
and set_selected_by_label so the bindings did not have to change shape.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 12:01:42 +02:00
Admin
d20a20871a
flowgraph: a routed wire turns right after its port and hugs its own card
...
The straight run out of a port is 10 px (8 px minimum) with the endpoint
fillets shrinking to fit, and the first and last vertical runs keep only
the narrow 6 px envelope from the wire's own card; other cards keep the
two-tier clearance and parallel wires keep their cable spacing.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 11:48:58 +02:00
Admin
2a5172465c
flowgraph + flow-ui: two wire modes never mixed — bezier or routed — and routed wires use narrow gaps
...
Routed mode never falls back to a curve: a wire with no corridor takes the
least-collision orthogonal path. Clearance is two-tier: the comfortable
12 px card clearance with 16 px fillets first, then 6 px per side with
8 px fillets, so a routed wire passes a 20 px gap. Bezier mode is a pure
cubic per wire. View → Wires switches the mode (in-process until the app
has a settings store).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 10:43:12 +02:00
Admin
27f02f2443
flowgraph: the canvas's style table resolves its registered type, so node and port icons draw again
...
The lib's script named FlowCanvasStyles unqualified before it was in
scope; the styles object never applied and every icon lookup came back
empty (the colours survived through the per-kind colour properties). The
style types are registered as components and the default references
mod.widgets.FlowCanvasStyles.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 10:33:33 +02:00
Admin
c7241e00be
hub: a node that evicted every resident releases its cached allocator pool before refusing a load or publishing usable VRAM
...
The 5090 kept about 1.5 GB of CUDA allocator pool after evicting every
model, so a card that fits flux2-dev refused it (30510 MB free reported,
32090 MB in a fresh process). Admission now trims the pool when the last
resident is gone and re-measures before refusing; usable VRAM is measured
after the same trim; the refusal names the pool it released.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 10:22:57 +02:00
Admin
c6890fd47a
flowgraph: the flow canvas and wire router become libs/flowgraph, a widgets-only crate any UI can host; flow-ui is its first consumer
...
makepad-flowgraph carries the canvas (camera, cards, ports, wires,
selection, edits out), the router, a string-keyed view model
(GraphView/NodeView/PortView/EdgeView), script-registered node and port
styles keyed by kind, and a three-method NodeFaces trait for per-node
face widgets. It depends on makepad-widgets only. flow-ui projects its
splash-evaluated Graph through a 147-line adapter (graph_view.rs), keeps
its faces, file writer, panels and services, and renders pixel-identical
to before (hidden before/after grabs, zero differing pixels).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 10:22:21 +02:00
Admin
ad5e98bbad
hub registry: flux2-dev's VRAM estimate is its measured peak, 30 GB
...
Measured on the RTX 5090 (2026-09-04, 1024x1024, 8 steps, nvidia-smi 250 ms
samples): 30.5 GB used at peak, the run completed in 52 s. The old 29 GB
was a pre-measurement guess that under-reported the model by 1.5 GB.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 07:48:01 +02:00
Admin
75c34413be
hub: the PRO 6000 serves image as well as chat and text
...
flux2-dev cannot fit on the 5090 at the default reserve, and the role
table barred the only card that can hold it. The user opened image on
10.0.0.165 ("let the rtx serve images too"); the role test and the
flow's role-aware listing test follow.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 07:41:59 +02:00
Admin
c90df1fe0a
flow + hub: a node advertises only the models it can admit, the flow picks admitted nodes for the named model, retries on refusal, and names every node's reason when none can take it
...
The 5090 listed flux2-dev ready (total VRAM passed the gate) then refused
every job (29696 + 2048 reserve > ~30510 usable); the flow picked it by
domain ETA and never retried. Nodes now publish vram_usable_mb and mark
un-admittable models too_small; the fleet gate uses usable VRAM; the
flow's gen executor picks admitted nodes for the requested model (ready
first), retries up to three nodes after an admission refusal, and when no
node can take the model its error says why per node (role, too small with
the numbers, waiting for VRAM). The flow's model listing drops (model,
node) pairs the node's fleet role bars, so the picker no longer counts the
chat-only PRO 6000 as ready for image; its label reads ready/absent/too
small with the GPUs named.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 00:45:42 +02:00
Admin
73886d1664
Merge branch 'work' into webdemos
2026-09-03 23:45:22 +02:00
Admin
3c2530d000
web memory diet: the 805 MiB at load was the ocean-high archive's 13 M-entry leaf directory decoded to 407 MiB per lookup round and evicted at once — leaves now parse streaming into a window around the waiting tile ids (LeafParseLimits); a phone policy on the web (deviceMemory, UA, touch + short side) caps wasm at 512 MiB with a 320 MiB budget; archive leaf/range caches, reads and bakes in flight follow the budget; packed tile bytes stay packed until the bake decodes them; terrain scratch sized to the viewport and dropped with the layer; Cx::memory_report by owner. Phone viewport 1334 → 308 MiB after a minute of pans, desktop 1208 → 588
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WV6BzHQiJEvvK9EPc1d4ks
2026-09-03 23:45:22 +02:00
Admin
6139a7386f
flow + flow-ui: a card can face right-to-left — flip: true in the file mirrors its ports; the router is directional; a card auto-flips when that cuts its cable length below 80 percent, a hand flip pins it; the flip animates
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 23:13:39 +02:00
Admin
4aec005469
flow-ui: wires route around cards with fillets and a pulse that travels the cable when a value lands; Clear drops an instance's generated state and keeps its inputs, as a route, a toolbar button, a menu entry and a shortcut
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 22:32:05 +02:00
Admin
8b05496651
flow + flow-ui: width and height snap to the type's step (16 for images, the doc is the authority) in the fields, the inspector, the presets and the evaluator with a warning, so a fleet backend never sees an illegal size; text in cards and the inspector scrolls inside a bounded area that follows streaming until you scroll up
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 22:01:09 +02:00
Admin
bc6c620ede
hub + flow: what the chat review found — the in-process route retries an empty completion too, a node says whether its prefill opened thinking so a brief-mode answer is never discarded, a preferred model falls back to normal election when no node has it, discovery keeps looking for the preferred model until patience runs out
...
Verified on the LAN fleet: a new prompt → paragraph → picture.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 21:50:59 +02:00
Admin
43302a63ed
flow-ui: every card owns a draw list and draws in z order, selection brings it to the front; and the design review's findings — every event kind remapped through the camera, run events keyed by run id, no remount mid-run, an input journal that survives a failed PUT, terminal states reconciled, the total bar from the planned node set, isolate ownership on instance change, popups retired before an isolate is freed, the Ask face answers on a button, the menu bar navigates by keyboard, no per-frame allocation in the canvas draw
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 21:39:05 +02:00
Admin
aa271c36f6
map + route + geodata: the Terrain layer through the archive plane — TerrainSource (hosted .mkmap elevation shards fetched by range through the shared reader, a local MBTiles only as a dev override), the hillshade rendered on the pool's heavy lane with reused TerrainScratch buffers (web capped at 2048×1536 at DPR 1, native DPR-aware), one request in flight; the demo checkbox now renders terrain like native
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WV6BzHQiJEvvK9EPc1d4ks
2026-09-03 21:20:28 +02:00
Admin
b04333265e
webgl: uniform blocks upload only when their generation moved — one global monotonic counter on Cx hands out every generation (draw call create/dirty/zbias, draw list allocate/transform/re-record, pass allocate/time/dpi/ortho/camera and the web flipped copy, shader scope writes), so a reused pool slot can never match a cached generation; clear_draw_items, pool reuse and VAO recreation reset the caches; the JS caches key on the generation alone. Proven on a local build: the pan screenshot keeps every tile, the settle tail drops 20.5 → 12.8 MiB/s
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WV6BzHQiJEvvK9EPc1d4ks
2026-09-03 20:59:55 +02:00
Admin
e689aea8f5
web_server + geodata + route: live radar, wind and weather on makepad.nl/api — one bounded poller per feed, hourly, disk-backed cache served from an Arc snapshot (a restart never re-polls early), 503 warming until the first result, health reports ok/warming/unavailable with timestamps; KNMI key from --knmi-key-file, the documented anonymous open-data key otherwise; libs/geodata fetches through the platform HTTP client instead of shelling out to curl; the client retries 503 after 30 s and disables a layer only on 404
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 20:46:04 +02:00
Admin
e48b056df1
Revert "webgl: a uniform block is uploaded only when its generation moved — per draw call (uniforms_gen), per draw list (uniforms_gen, recording_gen), per pass (pass_uniforms_gen) and per shader scope block; the JS side caches (ptr, len, gen) per uniform buffer and re-records/recompiles reset it; direct camera writers (vj effects, render scene, the web flipped copy) bump the pass generation"
...
This reverts commit 0d7ddee3f7 .
2026-09-03 20:37:35 +02:00
Admin
df9f4498b6
flow: the style picker lives on the node whose input it sets — the add_style Fn, not the image
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 20:35:25 +02:00
Admin
2dbd1b7dca
flow + hub: a flow's LLM turn asks the node not to think and sends no token cap for zero, so a fleet Qwen node answers with a visible paragraph; the empty-state placeholder draws one icon
...
Verified on the LAN fleet: prompt → paragraph → picture in twenty seconds.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 20:34:02 +02:00
Admin
075e1a74d4
flow-ui: pickers filled from the hub for image and text nodes, popups anchored through the canvas transform, labelled face controls, add_style explains itself, cards resize from a grip with size: vec2 kept in the file, full-bleed pictures, a click anywhere on a card selects it and still reaches the face, no remount on layout-only edits, panels float over the canvas
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 20:26:13 +02:00
Admin
7db06e8c09
Merge branch 'work' into webdemos
2026-09-03 20:22:57 +02:00
Admin
0d7ddee3f7
webgl: a uniform block is uploaded only when its generation moved — per draw call (uniforms_gen), per draw list (uniforms_gen, recording_gen), per pass (pass_uniforms_gen) and per shader scope block; the JS side caches (ptr, len, gen) per uniform buffer and re-records/recompiles reset it; direct camera writers (vj effects, render scene, the web flipped copy) bump the pass generation
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WV6BzHQiJEvvK9EPc1d4ks
2026-09-03 20:22:56 +02:00
Admin
a8377920b7
hub + flow: a whitespace-only chat completion is retried once and then fails instead of passing as an answer; a flow's model is a fleet model id unless it names a weight file on disk; chat models show under the text domain in /v1/models
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 20:17:54 +02:00
Admin
64f6d41731
flow: pin the exact chat hand-off the Llm node makes (system, user turn, model) as a regression test
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 20:01:52 +02:00
Admin
662a1216e5
flow: the gen executor renews the hub lease every two seconds and says bye on shutdown, so fleet boxes stop reaping our jobs; flow-ui's bridge publishes run and instance events as messages on the bus, long runs return early with a subscription, and the AI gets templates, models and create tools
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 19:53:01 +02:00
Admin
15c3b11da1
ai-services: what the pubsub review found — modules get a subscription seam and a publish sink through both WM paths, lease end flushes unsubscribes to hosted services, the subscription cap counts closing rows, an endpoint's queue is dropped after Unregister, the prompt drops a subscription on final
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 19:39:10 +02:00
Admin
4e8e4cd45f
flow-ui: the design pass — menu bar and toolbar with the total run bar, continuous zoom through the draw-list view transform with pointer remapping, dark checker canvas with grid steps, shadowed cards with icon labels and port icons, glowing wires, per-node progress bars, full-bleed image cards, palette cards you drag out, the fab edit controls in the inspector, a template picker behind New, model pickers from the hub; MenuBar widget in the shared crate
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 19:38:21 +02:00
Admin
102ffc5fa5
ai-services: messages on the bus — a manifest declares topics, the engine subscribes on a tool's behalf or by ToolResult.subscribe, a service publishes Message frames, an idle conversation wakes on a message as an event turn under rate laws; the WM bus forwards the new frames; every app that matches the wire gets its arm
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 19:27:45 +02:00
Admin
14b194bed1
flow: the contact-sheet acceptance and an instance/run/value battery over real sockets — Http read, Fn, two images in parallel, an Ask that parks and resumes the run, a third image, an Http POST of the result
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 19:00:06 +02:00
Admin
7b10d61fc7
flow: the hub's models on the wire — GET /v1/models snapshots the discovered fleet (health + model list per node, refreshed on demand, fleet hints for tests) and /v1/nodes carries the model ids per domain
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 18:56:08 +02:00
Admin
263d6f0ae8
flow-ui: the canvas — node frames with faces evaluated in an isolate per instance, typed port dots, bezier wires, drag-move and drag-connect, palette, inspector, source pane, App view, Running list — integrated with the chat bridge and wired to the run routes
...
Zoom is three discrete sizes with a pan-only camera: pointer hit-testing
ignores the draw-list view transform. Faces bind with bind := "node.port"
because typed widgets refuse unknown properties.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 18:34:29 +02:00
Admin
09e4bf1e1e
flow: what the batteries pinned — 3xx refused, a node object where a port reference is required is an error, undeclared Fn ports refuse edges, parameter errors point at the field, the omitted node is named, allowed HTTP methods listed, a 192 KiB source cap, an unterminated Flow{ is a parse error
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 18:15:39 +02:00
Admin
a2e0c43e4c
flow: the old pipelines ship as templates — GET /v1/templates lists them with label, brief, inputs and outputs; POST /v1/flows/{name} {template} creates a definition from one
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 18:13:53 +02:00
Admin
c36f1e78bc
flow-ui: the AI service bridge — a flows service (authoring + what is running) and one service per definition on the aichat bus, per-turn context, tools answered off worker threads
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 18:04:14 +02:00
Admin
58f0700df3
flow: media inputs route by (domain, port) — inpaint takes image and mask as named inputs, control's image is the primary — and every gen node's declared port types are authoritative, including derived Image and Upscale; ocr template typed; empty legacy port arrays warn
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 17:58:36 +02:00
Admin
428d23e8ed
flow: instances, runs and values on the wire — instance CRUD and inputs (answers a parked Ask), runs with cancel, values on the data plane with ETag/Range and PUT upload, run events fanned into the ring by topic, autostart, janitor, bounded shutdown; real seams by default with with_seams for tests
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 17:57:03 +02:00