Document copying reviewed flows into schemes Co-authored-by: Codex <noreply@openai.com>
Document visual parameter calibration Co-authored-by: Codex <noreply@openai.com>
Document five new built-in visual flows Co-authored-by: Codex <noreply@openai.com>
The rig is an app, and it never asks about your displays npm run visuals opens a window of its own rather than a browser, and the main process asks the machine for the display list directly — so the permission prompt you had to remember to answer before a show is gone. The browser path survives as npm run visuals:browser, for a second machine or as a rollback. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DYCKLWb13J5PLkNpGGRdfi
The device no longer opens a browser set[flow] is an app of its own now. The device face has lost the button and the address that went with it: the WebSocket is not a documented interface, so an address on the face invited something nobody supports. Status is the only readout left, which is the one worth having. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DYCKLWb13J5PLkNpGGRdfi
The VJ rig starts with npm run visuals The command was `npm run show`, which borrowed a word the visuals module owns — its wire type, its server module and its hook are all "show". Same command, one honest name. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DYCKLWb13J5PLkNpGGRdfi
npm run show opens the rig in its own Chrome A browser that belongs to the show: no extensions, no other tabs on the same GPU, and a display permission granted once instead of asked for on stage. --no-browse skips it. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DYCKLWb13J5PLkNpGGRdfi
Say what a console error actually looks like It stops in place with a message rather than closing on its own, and the projector never sees it. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DYCKLWb13J5PLkNpGGRdfi
Run the rig with npm run show, and name five new failures `npm run dev` was the documented way to start it, and it is ten processes where any one exiting kills the other nine — plus a second renderer on :5473 with hot reloading, which reloads the projector every time a file is saved. Neither is what you want at a gig. "When it goes wrong" gains the things the rig can now tell you about itself: a stale bundle, a lost graphics context, a scheme value it refused, a console that closed without taking the picture, and one flow that would not build. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DYCKLWb13J5PLkNpGGRdfi
Document synced and free LFO controls Co-authored-by: Codex <noreply@openai.com>
Document disk image nodes Co-authored-by: Codex <noreply@openai.com>
Describe the five shapes a roll now deals Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BmG9Nxwm9BvYkNBCnYW2Jf
Add the review view to the visuals manual Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BmG9Nxwm9BvYkNBCnYW2Jf
Document disk video nodes Co-authored-by: Codex <noreply@openai.com>
Document the complete preview header Co-authored-by: Codex <noreply@openai.com>
Document the single visuals editor header Co-authored-by: Codex <noreply@openai.com>
Document the scheme library and manual save Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Move the scheme file home to ~/.openflow Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Hang a light in the frame The light node: a lamp, a beam, shafts and caustics, each with fixed declared cost, hung by a from inlet and drifting in seconds rather than beats. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Document full metaball separation Co-authored-by: Codex <noreply@openai.com>
Put the ports back on the right, filter and rows both Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Document controllable metaball colonies Co-authored-by: Codex <noreply@openai.com>
Rows wear their ports the way a node does takes before the name, gives at the right edge, matching the filter above them. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Let the filter's gap say what its arrow did takes at the left edge, gives at the right, the way signals enter and leave a node. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Delete a flow on its row, and scroll the browser as one list The × asks sure? in place before it commits, the column has one scrollbar with headings that hold, and an emptied browser offers show everything. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Call the product open[flow], and the env vars OPENFLOW_ The suite was renamed; the manual follows. References to the legacy bsv.json sidecar file stay, because that really was its name and the import path from it still exists. Co-authored-by: Codex <noreply@openai.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P5mLf7B2kE7jYXiNgihDWQ
Rewrite the browser section for the tree and the port filter Presets open from a ▸ on the left, not a +11 on the right. Every row shows p n c → p n c with what it hasn't got greyed out, in the same colours the ports and cords wear on the canvas. Six switches under the search box filter by them. One track row, with your groups listed first. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VyyB7ck7HM2PYykXq5ZTZV
Document the bounded fractal node Co-authored-by: Codex <noreply@openai.com>
Document agent flow authoring Co-authored-by: Codex <noreply@openai.com>
Next flow is n, not l The noun changed, so the mnemonic did. f was the obvious first choice and is already fullscreen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VyyB7ck7HM2PYykXq5ZTZV